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(" ");
//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("°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("°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="";
}