Undefined reference to structures

Good evening all
this one is puzzling me to the stage of annoyance’s, I know it’s something I’m doing wrong so again I’m begging for some help please.
The first set of structures is being recognised “Board1” to “Board8”
But from then on “Boaard1PV” “Board1LOW” & “Board1High” I’m not recognised

Any help or pointers would be very much appreciated.
The error message is:

.pio\build\m5stack-core-esp32\src\Page1.cpp.o:(.literal._Z9Get_Page1v+0x2c): undefined reference to `Room_name'
.pio\build\m5stack-core-esp32\src\Page1.cpp.o:(.literal._Z9Get_Page1v+0x70): undefined reference to `Board_1PV'
.pio\build\m5stack-core-esp32\src\Page1.cpp.o:(.literal._Z9Get_Page1v+0x78): undefined reference to `Board_1LOW'
.pio\build\m5stack-core-esp32\src\Page1.cpp.o:(.literal._Z9Get_Page1v+0x7c): undefined reference to `Board_1HIGH'
.pio\build\m5stack-core-esp32\src\Page2.cpp.o:(.literal._Z9Get_Page2v+0x60): undefined reference to `Board_2PV'
.pio\build\m5stack-core-esp32\src\Page2.cpp.o:(.literal._Z9Get_Page2v+0x68): undefined reference to `Board_2LOW'
.pio\build\m5stack-core-esp32\src\Page2.cpp.o:(.literal._Z9Get_Page2v+0x6c): undefined reference to `Board_2HIGH'
.pio\build\m5stack-core-esp32\src\Page3.cpp.o:(.literal._Z9Get_Page3v+0x60): undefined reference to `Board_3PV'
.pio\build\m5stack-core-esp32\src\Page3.cpp.o:(.literal._Z9Get_Page3v+0x68): undefined reference to `Board_3LOW'
.pio\build\m5stack-core-esp32\src\Page3.cpp.o:(.literal._Z9Get_Page3v+0x6c): undefined reference to `Board_3HIGH'
.pio\build\m5stack-core-esp32\src\Page4.cpp.o:(.literal._Z9Get_Page4v+0x60): undefined reference to `Board_4PV'
.pio\build\m5stack-core-esp32\src\Page4.cpp.o:(.literal._Z9Get_Page4v+0x68): undefined reference to `Board_4LOW'
.pio\build\m5stack-core-esp32\src\Page4.cpp.o:(.literal._Z9Get_Page4v+0x6c): undefined reference to `Board_4HIGH'
.pio\build\m5stack-core-esp32\src\Page5.cpp.o:(.literal._Z9Get_Page5v+0x60): undefined reference to `Board_5PV'
.pio\build\m5stack-core-esp32\src\Page5.cpp.o:(.literal._Z9Get_Page5v+0x68): undefined reference to `Board_5LOW'
.pio\build\m5stack-core-esp32\src\Page5.cpp.o:(.literal._Z9Get_Page5v+0x6c): undefined reference to `Board_5HIGH'
.pio\build\m5stack-core-esp32\src\Page6.cpp.o:(.literal._Z9Get_Page6v+0x60): undefined reference to `Board_6PV'
.pio\build\m5stack-core-esp32\src\Page6.cpp.o:(.literal._Z9Get_Page6v+0x68): undefined reference to `Board_6LOW'
.pio\build\m5stack-core-esp32\src\Page6.cpp.o:(.literal._Z9Get_Page6v+0x6c): undefined reference to `Board_6HIGH'
.pio\build\m5stack-core-esp32\src\Page7.cpp.o:(.literal._Z9Get_Page7v+0x60): undefined reference to `Board_7PV'
.pio\build\m5stack-core-esp32\src\Page7.cpp.o:(.literal._Z9Get_Page7v+0x68): undefined reference to `Board_7LOW'
.pio\build\m5stack-core-esp32\src\Page7.cpp.o:(.literal._Z9Get_Page7v+0x6c): undefined reference to `Board_7HIGH'
.pio\build\m5stack-core-esp32\src\Page8.cpp.o:(.literal._Z9Get_Page8v+0x60): undefined reference to `Board_8PV'
.pio\build\m5stack-core-esp32\src\Page8.cpp.o:(.literal._Z9Get_Page8v+0x68): undefined reference to `Board_8LOW'
.pio\build\m5stack-core-esp32\src\Page8.cpp.o:(.literal._Z9Get_Page8v+0x6c): undefined reference to `Board_8HIGH'

These structures are in module webpage.h

    #define Web_Page_H

    #include <Arduino.h>
    #include "Main.h"

    #define sitewidth  1024
    void SendHTML_Content();
    void Site_Navbar();
    void homepagePL();
    void SendHTML_Stop();
    void homepage();
    void ALL_Page();
    void ALL();
    void Page_Display1();
    void Page_Display2();
    void Page_Display3();
    void Page_Display4();
    void Page_Display5();
    void Page_Display6();
    void Page_Display7();
    void Page_Display8();
    void homepage_small();

    void Get_Page1();
    void Get_Page2();
    void Get_Page3();
    void Get_Page4();
    void Get_Page5();
    void Get_Page6();
    void Get_Page7();
    void Get_Page8();
    void Page_Display1();
    void Page_Display2();
    void Page_Display3();
    void Page_Display4();
    void Page_Display5();
    void Page_Display6();
    void Page_Display7();
    void Page_Display8();



    extern String ServerVersion;
    extern String siteheading;         // Site's Main Title
    extern String subheading;      // Sub-heading for all pages
    extern String sitetitle;         // Appears on the tabe of a Web Browser
    extern String yourfootnote;       // A foot note e.g. "My Web Site"
    extern String siteversion;                 // Version of your Website
    extern String  theme;
    extern String webpage;

    extern String Room_name;

  typedef struct Board1 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board1;

    typedef struct Board2 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board2;

    typedef struct Board3 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board3;
    
    typedef struct Board4 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board4;
    
    typedef struct Board5 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board5;
    
    typedef struct Board6 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board6;
    
    typedef struct Board7 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board7;
    
    typedef struct Board8 { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board8;

    typedef struct Board1PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String TimePV;                //Time
        float  Temperature;         // DHT Temperature
        float  HumidityPV;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board1PV;

    typedef struct Board2PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board2PV;

    typedef struct Board3PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board3PV;
    
    typedef struct Board4PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board4PV;
    
    typedef struct Board5PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board5PV;
    
    typedef struct Board6PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board6PV;
    
    typedef struct Board7PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board7PV;
    
    typedef struct Board8PV { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board8PV;

        typedef struct Board1LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board1LOW;

    typedef struct Board2LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board2LOW;

    typedef struct Board3LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board3LOW;
    
    typedef struct Board4LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board4LOW;
    
    typedef struct Board5LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board5LOW;
    
    typedef struct Board6LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board6LOW;
    
    typedef struct Board7LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board7LOW;
    
    typedef struct Board8LOW { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board8LOW;

    typedef struct Board1HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board1HIGH;

    typedef struct Board2HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board2HIGH;

    typedef struct Board3HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board3HIGH;
    
    typedef struct Board4HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board4HIGH;
    
    typedef struct Board5HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board5HIGH;
    
    typedef struct Board6HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board6HIGH;
    
    typedef struct Board7HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board7HIGH;
    
    typedef struct Board8HIGH { 
        byte   sensornumber;        // Sensor number provided by e.g. Sensor=3
        String Time;                //Time
        float  Temperature;         // DHT Temperature
        float  Humidity;            // DHT Humidity
        float  BMP_Temperature;     // BMP Temperature
        float  BMP_Pressure;        // Bmp Pressure
        int Light;                  // Light 
    } Board8HIGH;
    
    extern struct Board1 Board_1;
    extern struct Board2 Board_2;
    extern struct Board3 Board_3;
    extern struct Board4 Board_4;
    extern struct Board5 Board_5;
    extern struct Board6 Board_6;
    extern struct Board7 Board_7;
    extern struct Board8 Board_8;

    extern struct Board1PV Board_1PV;
    extern struct Board2PV Board_2PV;
    extern struct Board3PV Board_3PV;
    extern struct Board4PV Board_4PV;
    extern struct Board5PV Board_5PV;
    extern struct Board6PV Board_6PV;
    extern struct Board7PV Board_7PV;
    extern struct Board8PV Board_8PV;

    extern struct Board1LOW Board_1LOW;
    extern struct Board2LOW Board_2LOW;
    extern struct Board3LOW Board_3LOW;
    extern struct Board4LOW Board_4LOW;
    extern struct Board5LOW Board_5LOW;
    extern struct Board6LOW Board_6LOW;
    extern struct Board7LOW Board_7LOW;
    extern struct Board8LOW Board_8LOW;

    extern struct Board1HIGH Board_1HIGH;
    extern struct Board2HIGH Board_2HIGH;
    extern struct Board2HIGH Board_2HIGH;
    extern struct Board3HIGH Board_3HIGH;
    extern struct Board4HIGH Board_4HIGH;
    extern struct Board5HIGH Board_5HIGH;
    extern struct Board6HIGH Board_6HIGH;
    extern struct Board7HIGH Board_7HIGH;
    extern struct Board8HIGH Board_8HIGH;
    
    #endif

This is the first one of the webpages  "page 1.cpp"  the other seven pages are identical apart from the page reference number.
````#include <Arduino.h>
#include "Main.h"
#include "Web_Page.h"



void Page_Display1(){
  Room_name="Conservatory";  
  CallTime();
  homepage_small();
  Get_Page1();
  //Gauge();
  //SendHTML_Content();
  homepage_uptime();
  SendHTML_Content();
  SendHTML_Stop();
  webpage="";
}

  
void Get_Page1(){

 // Return a string containing the HTML code of the page
  webpage +=F("<html charset=UTF-8><head><meta http-equiv='refresh' content='60' name='viewport' content='width=device-width, initial-scale=1'/>");
  webpage +=F("<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script><script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'></script>");

  webpage +=F("<link href='https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/");
  webpage += (theme);
  webpage +=F("/bootstrap.min.css' rel='stylesheet'>");
  //webpage +=F("<title>ESP8266 Demo </title></head><body>");
  webpage +=F("<div class='container-fluid'>");
  webpage +=F("<div class='row'>");
  webpage +=F("<div class='col-md-12'>");
  //webpage +=F("<h3>Monitoring Service ESP8266 ");
  //webpage +=F("&nbsp;&nbsp;&nbsp;&nbsp;");
  //webpage +=F("Up Time: ");
  //webpage +=(Day);
  //webpage +=F(" Days ");
  //webpage +=(Hour);
  //webpage +=F(" Hours ");
  //webpage +=(Minute);
  //webpage +=F(" Minutes ");
  //webpage +=(Second);
  //webpage +=F(" Seconds ");    
  //webpage +=F("</h1>");
  //webpage +=<h3></th><th>"+Room_name+"</h3>;
  webpage += "<h3><th>"+ Room_name +"</title></h3>";
  SendHTML_Content();
  
  webpage +=F("<ul class='nav nav-pills'>");
  webpage +=F("<li class='active'>");
  webpage +=F("<a href='#'> <span class='badge pull-right'>");
  webpage +=(Board_1.Temperature); 

 
  webpage +=F("</span> Temperature</a>");
  webpage +=F("<li class='active'>");
  webpage +=F("</li><li>");
  webpage +=F("<li class='active'>");
  webpage +=F("<a href='#'> <span class='badge pull-right'>");
  webpage +=(Board_1.Humidity);
  webpage +=F("</span> Humidity</a>");
  webpage +=F("</li><li>");
  webpage +=F("<li class='active'>");
  webpage +=F("<a href='#'> <span class='badge pull-right'>");
  webpage +=(Board_1.BMP_Temperature);
  webpage +=F("</span> Atmospheric Pressure</a>");
  
  webpage +=F("</li><li>");
  webpage +=F("<li class='active'>");
  webpage +=F("<a href='#'> <span class='badge pull-right'>");
  webpage +=(Board_1.Light);
  webpage +=F("</span> Light Value</a></li>");
  webpage +=F("</ul>");
  webpage +=F("<table class='table'>");  // Chart of readings
  webpage +=F("<thead><tr class='active'><th>Sensor<th>Measurement<th>Value<th>PV<th>Low<th>High</tr></thead>");
  webpage +=F("<tbody>");  // Table content
  webpage +=F("<tr><td>DHT22</td><td>Temperature</td><td>"); // First line : temperature
  
  
  webpage +=(Board_1.Temperature);
  webpage +=F("&deg;C</td><td>");
  webpage +=(Board_1PV.Temperature);
  webpage +=F("<td>");
  webpage +=(Board_1LOW.Temperature);
  webpage +=F("<td>");
  webpage +=(Board_1HIGH.Temperature);
  webpage +=F("</td></td>");
  webpage +=F("<tr><td>DHT22</td><td>Humidity</td><td>"); // 2nd line : humidity *************************<tr class='active'>
  webpage +=(Board_1.Humidity);
  webpage +=F("%</td><td>");
  webpage +=(Board_1PV.HumidityPV);
  webpage +=F("<td>");
  webpage +=(Board_1LOW.Humidity);
  webpage +=F("<td>");
  webpage +=(Board_1HIGH.Humidity);
  SendHTML_Content();
  
  webpage +=F("</td></tr>");
  webpage +=F("<tr><td>BMP280</td><td>Temperature</td><td>"); // 3th line : atmospheric pressure
  webpage +=(Board_1.BMP_Temperature);
  webpage +=F("&deg;C</td><td>");
  webpage +=(Board_1PV.BMP_Temperature);
  webpage +=F("<td>");
  webpage +=(Board_1LOW.BMP_Temperature);
  webpage +=F("<td>");
  webpage +=(Board_1LOW.BMP_Temperature);

  webpage +=F("</td></tr>");
  webpage +=F("<tr><td>BMP280</td><td>Atmospheric Pressure</td><td>"); // 3th line : atmospheric pressure
  webpage +=(Board_1.BMP_Pressure);
  webpage +=F("mbar</td><td>");
  webpage +=(Board_1PV.BMP_Pressure);
  webpage +=F("<td>");
  webpage +=(Board_1LOW.BMP_Pressure);
  webpage += ("<td>");
  webpage +=(Board_1HIGH.BMP_Pressure);

  
  webpage +=F("</td></tr>");
  webpage +=F("<tr><td>Photoresistor</td><td>Light </td><td>"); // 4th line : Light
  webpage +=(Board_1.Light);
  webpage +=F("%<td>"); 
  webpage +=(Board_1PV.Light);
  webpage +=F(" %</td><td>");
  webpage +=F("</tbody></table></div></div>");
  webpage +=F("<div class='row'>");

  webpage +=F("<div class='container'>");
  webpage +=F("</body></html>");
 SendHTML_Content();
  /*
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='0' value='HOME' class='btn btn-default'><span class='badge'>");
  webpage +=(etatGpio[0]);
  webpage +=F("</span></button>");
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='1' value='Page1' class='btn btn-info'><span class='badge'>");
  webpage +=(etatGpio[1]);
  webpage +=F("</span></button>");  
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='2' value='Page2' class='btn btn-primary'> <span class='badge'>");
  webpage +=(etatGpio[2]);
  webpage +=F("</span></button>");
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='3' value='Page3' class='btn btn-success'><span class='badge'>");
  webpage +=(etatGpio[3]);
  webpage +=F("</span></button>"); 
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='4' value='Page4' class='btn btn-warning'><span class='badge'>");
  webpage +=(etatGpio[4]);
  webpage +=F("</span></button>"); 
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='5' value='Page5' class='btn btn-danger'><span class='badge'>");
  webpage +=(etatGpio[5]);
  webpage +=F("</span></button>");
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='6' value='Page6' class='btn btn-info'><span class='badge'>");
  webpage +=(etatGpio[6]);
  webpage +=F("</span></button>");
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='7' value='Page7' class='btn btn-info'><span class='badge'>");
  webpage +=(etatGpio[7]);
  webpage +=F("</span></button>");
  webpage +=F("<form action='/' method='POST'><button type='button submit'name='8' value='Page8' class='btn btn-info'><span class='badge'>");
  webpage +=(etatGpio[8]);
  webpage +=F("</span></button>");
  */  
  webpage +=F("</div><div>");
   SendHTML_Content();
   SendHTML_Stop();
   webpage="";
}

So you declare the existence of all these structs, but do you define them so they actually exist? Where is the

struct Board1PV Board_1PV;

definition in one of the cpp files? This goes for every struct of yours.

Thank you maxgerhardt for your quick reply
the definition is at the end of the web_page.h

    extern struct Board2 Board_2;
    extern struct Board3 Board_3;
    extern struct Board4 Board_4;
    extern struct Board5 Board_5;
    extern struct Board6 Board_6;
    extern struct Board7 Board_7;
    extern struct Board8 Board_8;

    extern struct Board1PV Board_1PV;
    extern struct Board2PV Board_2PV;
    extern struct Board3PV Board_3PV;
    extern struct Board4PV Board_4PV;
    extern struct Board5PV Board_5PV;
    extern struct Board6PV Board_6PV;
    extern struct Board7PV Board_7PV;
    extern struct Board8PV Board_8PV;

    extern struct Board1LOW Board_1LOW;
    extern struct Board2LOW Board_2LOW;
    extern struct Board3LOW Board_3LOW;
    extern struct Board4LOW Board_4LOW;
    extern struct Board5LOW Board_5LOW;
    extern struct Board6LOW Board_6LOW;
    extern struct Board7LOW Board_7LOW;
    extern struct Board8LOW Board_8LOW;

    extern struct Board1HIGH Board_1HIGH;
    extern struct Board2HIGH Board_2HIGH;
    extern struct Board2HIGH Board_2HIGH;
    extern struct Board3HIGH Board_3HIGH;
    extern struct Board4HIGH Board_4HIGH;
    extern struct Board5HIGH Board_5HIGH;
    extern struct Board6HIGH Board_6HIGH;
    extern struct Board7HIGH Board_7HIGH;
    extern struct Board8HIGH Board_8HIGH;

They’re not definitions but declarations in the sense of the C++ language.

Example:

my_header.h

#ifndef MY_HEADER_H
#define MY_HEADER_H

extern int my_global_var;

#endif

With

main.cpp

#include <Arduino.h>
#include "my_header.h"

void setup() {
    Serial.begin(115200);
    Serial.println(my_global_var);
}

will fail, my_global_var is just declared but never defined and will throw a undefined reference to error.

There must be e.g. a

my_header.cpp

#include "my_header.h"

//definition with 0 initialization
int my_global_var = 0;

//or: implicitly 0
//int my_global_var;

Sorry I’m not understanding your reply
I have included it at the start of Page1.cpp

#include "Main.h"
#include "Web_Page.h"

Please read through

You’re missing

    /* define global variables declared in header so that they actually exist */
    struct Board1 Board_1;
    struct Board2 Board_2;
    struct Board3 Board_3;
    struct Board4 Board_4;
    struct Board5 Board_5;
    struct Board6 Board_6;
    struct Board7 Board_7;
    struct Board8 Board_8;

    struct Board1PV Board_1PV;
    struct Board2PV Board_2PV;
    struct Board3PV Board_3PV;
    struct Board4PV Board_4PV;
    struct Board5PV Board_5PV;
    struct Board6PV Board_6PV;
    struct Board7PV Board_7PV;
    struct Board8PV Board_8PV;

    struct Board1LOW Board_1LOW;
    struct Board2LOW Board_2LOW;
    struct Board3LOW Board_3LOW;
    struct Board4LOW Board_4LOW;
    struct Board5LOW Board_5LOW;
    struct Board6LOW Board_6LOW;
    struct Board7LOW Board_7LOW;
    struct Board8LOW Board_8LOW;

    struct Board1HIGH Board_1HIGH;
    struct Board2HIGH Board_2HIGH;
    struct Board2HIGH Board_2HIGH;
    struct Board3HIGH Board_3HIGH;
    struct Board4HIGH Board_4HIGH;
    struct Board5HIGH Board_5HIGH;
    struct Board6HIGH Board_6HIGH;
    struct Board7HIGH Board_7HIGH;
    struct Board8HIGH Board_8HIGH;

in one of your cpp files (after the include so the types are known)

Again thanking you for your reply
I will certainly read the links you have sent me. But why is Board_1 working in all Pages?
as that is not defined as you suggest?
Not arguing as you certainly know best but like to know why?

If Board_1 works it must have been defined somewhere – if you have the full project uploaded to like github I can explain how that works.

1 Like

maxgerhardt many apologies for not replying sooner but I have been ill for a bit.
I have applied your suggestions and tried to understand what I’ve been doing wrong.

I really do appreciate your offer of looking at the code unfortunately I do not have a gift hub repository.

Anyway that it is now working. And unfortunately I have another question, but I will post a another ticket.