Skip to content

Commit ceeda18

Browse files
Further Improved Data Handling for Configurations with many Sensors
1 parent be737ad commit ceeda18

File tree

5 files changed

+48
-53
lines changed

5 files changed

+48
-53
lines changed

Sensatio_FW_ESP8266.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,10 @@ boolean printMemory = false;
5252
// String board = "D1Mini";
5353
// char firmwareType[] = "ESP8266-D1Mini";
5454

55-
extern String name = "Bridge";
56-
extern String ucType = "ESP8266";
55+
String name = "Bridge";
56+
String ucType = "ESP8266";
5757

5858
String variant = "SensatioV"+String(currentVersion)+board;
59-
6059
String apiVersion = "v1";
6160

6261
int powerMode;

src/communication/RestServer.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,6 @@ void returnNetworkList() {
334334

335335
int numberOfNetworks = WiFi.scanNetworks();
336336

337-
String networks[numberOfNetworks];
338-
339337
String wifiResponse = "[";
340338

341339
StaticJsonBuffer<1000> jsonBuffer;

src/controller/Bridge.cpp

Lines changed: 42 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ extern bool isResetting;
3636
extern StaticJsonBuffer<10000> jsonBuffer;
3737
extern String apiVersion;
3838
extern int currentVersion;
39-
extern char firmwareType[];
4039

4140
extern int powerMode;
4241
extern Display* display;
@@ -48,8 +47,6 @@ extern int displayWidth;
4847
extern int displayRotation;
4948
extern boolean printMemory;
5049

51-
extern struct rst_info resetInfo;
52-
5350
extern String name;
5451
extern String board;
5552
extern String ucType;
@@ -86,27 +83,36 @@ extern VisualisationHelper* vHelper;
8683
int portNumber = 0;
8784
bool foundPorts = false;
8885

86+
String urlString;
87+
String requestDataString;
88+
String message;
89+
String payload;
90+
8991
std::unique_ptr<BearSSL::WiFiClientSecure>sslClient(new BearSSL::WiFiClientSecure);
9092

91-
bool initSSL()
93+
HTTPClient httpClient;
94+
95+
void initSSL()
9296
{
9397
sslClient->setBufferSizes(512, 512);
94-
9598
if(bridgeURL.startsWith("https://hub"))
9699
sslClient->setFingerprint(ssl_fingerprint_prod);
97100
else if(bridgeURL.startsWith("https://test"))
98101
sslClient->setFingerprint(ssl_fingerprint_test);
99102
}
100103

101-
bool registerBridge()
104+
void registerBridge()
102105
{
106+
// urlString.reserve(300);
107+
// requestDataString.reserve(200);
108+
// payload.reserve(1000);
109+
103110
if(display!=NULL)
104111
{
105112
display->clear(false);
106113
display->drawProductLogo();
107114
display->drawString(0, 10, "Signing in...");
108115
}
109-
110116
String uuid = getUUID();
111117
String networkIP = WiFi.localIP().toString();
112118

@@ -115,14 +121,11 @@ bool registerBridge()
115121
Serial.println("Registering Bridge " + uuid + " to Bridge located at " + bridgeURL);
116122
if (WiFi.status() == WL_CONNECTED) {
117123

118-
HTTPClient httpClient;
119-
120-
String urlString = bridgeURL + "/" + apiVersion + "/bridge/";
124+
urlString = bridgeURL + "/" + apiVersion + "/bridge/";
121125

122126
httpClient.begin(*sslClient, urlString);
123127
httpClient.addHeader("Content-Type", "application/json");
124128
httpClient.setTimeout(5000);
125-
126129
String pwdHashString = "";
127130

128131
if(pwdHash[0]!=0xff)
@@ -131,28 +134,28 @@ bool registerBridge()
131134
}
132135

133136
String message = "{\"uuid\":\"" + uuid + "\",\"networkIP\":\"" + networkIP + "\",\"name\":\"" + name + "\",\"vendor\":\"" + board + "\",\"type\":\"" + ucType + "\",\"firmwareVersion\":" + currentVersion + ",\"secPassword\":\"" + pwdHashString + "\"}";
134-
135137
Serial.print("p");
136138
int httpCode = httpClient.POST(message);
137139

138140
if (httpCode == HTTP_CODE_OK)
139141
{
140142
Serial.print("o");
141-
String payload = httpClient.getString();
143+
payload = httpClient.getString();
144+
142145
if (payload == uuid)
143146
{
144147
registerRetry=0;
145148
state = Init_Configuration;
146149
httpClient.end();
147-
return true;
150+
return;
148151
}
149152
}
150153
else if (httpCode == HTTP_CODE_UPGRADE_REQUIRED)
151154
{
152155
Serial.print("u");
153156
httpClient.end();
154157
restart();
155-
return false;
158+
return;
156159
}
157160
else
158161
{
@@ -168,20 +171,20 @@ bool registerBridge()
168171
httpClient.end();
169172
Serial.println("Registering not possible, going back to Deep Sleep for 5 minutes.");
170173
trySleep(300000000);
171-
return false;
174+
return;
172175
}
173176
else if (registerRetry>=25)
174177
{
175178
httpClient.end();
176179
restart();
177-
return false;
180+
return;
178181
}
179182

180183
}
181184
}
182185

183186
httpClient.end();
184-
return false;
187+
return;
185188

186189
}
187190
else
@@ -190,14 +193,14 @@ bool registerBridge()
190193
Serial.println("Register failed..? - WIFI:" + WiFi.status());
191194
Serial.println("Trying to reconnect... " + WiFi.status());
192195
WiFi.reconnect();
193-
int conRes = WiFi.waitForConnectResult();
196+
WiFi.waitForConnectResult();
194197
}
195198

196199
}
197200
else
198201
{
199202
Serial.println("Failed to register Bridge");
200-
return false;
203+
return;
201204
}
202205

203206
}
@@ -340,20 +343,18 @@ void restart() {
340343
wdt_reset();
341344
}
342345

343-
bool getBridgeConfig() {
346+
void getBridgeConfig() {
344347

345348
Serial.println("Getting Bridge Config from " + bridgeURL);
346349

347-
HTTPClient httpClient;
348-
349350
if(display!=NULL)
350351
{
351352
display->clear(false);
352353
display->drawProductLogo();
353354
display->drawString(0, 10, "Waiting for config...");
354355
}
355356

356-
String urlString = bridgeURL + "/" + apiVersion + "/bridge/" + getUUID();
357+
urlString = bridgeURL + "/" + apiVersion + "/bridge/" + getUUID();
357358

358359
httpClient.begin(*sslClient, urlString);
359360

@@ -365,7 +366,7 @@ bool getBridgeConfig() {
365366
if (httpCode == HTTP_CODE_OK)
366367
{
367368
Serial.print("o");
368-
String payload = httpClient.getString();
369+
payload = httpClient.getString();
369370
httpClient.end();
370371

371372
portNumber = 0;
@@ -414,8 +415,8 @@ bool getBridgeConfig() {
414415
{
415416
Serial.println("Fetching port page "+String(i));
416417

417-
String pageUrlString = bridgeURL + "/" + apiVersion + "/bridge/" + getUUID() + "/" + String(i);
418-
httpClient.begin(*sslClient, pageUrlString);
418+
urlString = bridgeURL + "/" + apiVersion + "/bridge/" + getUUID() + "/" + String(i);
419+
httpClient.begin(*sslClient, urlString);
419420

420421
httpClient.addHeader("Content-Type", "application/json");
421422

@@ -426,12 +427,12 @@ bool getBridgeConfig() {
426427
{
427428
Serial.print("o");
428429

429-
String pagePayload = httpClient.getString();
430+
payload = httpClient.getString();
430431
httpClient.end();
431432

432-
if (pagePayload != NULL && pagePayload != "")
433+
if (payload != NULL && payload != "")
433434
{
434-
JsonObject& bridgePortConfig = jsonBuffer.parseObject(pagePayload);
435+
JsonObject& bridgePortConfig = jsonBuffer.parseObject(payload);
435436
if(bridgePortConfig.containsKey("p"))
436437
{
437438
JsonArray& pagedPortConfigArray = bridgePortConfig["p"];
@@ -462,7 +463,7 @@ bool getBridgeConfig() {
462463
if(foundPorts)
463464
state = Operating;
464465

465-
return true;
466+
return;
466467
}
467468
}
468469

@@ -485,7 +486,7 @@ bool getBridgeConfig() {
485486
}
486487

487488

488-
return false;
489+
return;
489490

490491
}
491492

@@ -757,10 +758,9 @@ void configureDisplayValueData(int portNumber, JsonObject& portConfig) {
757758
}
758759

759760
void configureExpansionPort(int portNumber, JsonObject& portConfig) {
760-
Serial.println("Configure Expansion Port: ");
761+
Serial.print("Configure Expansion Port: ");
761762

762-
portConfig.prettyPrintTo(Serial);
763-
Serial.println("");
763+
//portConfig.prettyPrintTo(Serial);
764764

765765
SensorCalculation* calc = NULL;
766766

@@ -845,7 +845,7 @@ void configureExpansionPort(int portNumber, JsonObject& portConfig) {
845845
else if (portConfig["et"] == "DHT11" || portConfig["et"] == "DHT21" || portConfig["et"] == "DHT22")
846846
{
847847
uint8_t port = translateGPIOPort(portConfig["ec1"]);
848-
if(port>=0)
848+
if(port<999)
849849
{
850850
addSensor(new SensorDHT(portConfig["id"], portConfig["c"], portConfig["sn"], portConfig["n"], portConfig["et"], port, refreshInterval, postDataInterval, portConfig["s"]["svt"], calc));
851851
}
@@ -883,7 +883,7 @@ void configurePort(int portNumber, JsonObject& portConfig) {
883883

884884
Serial.println("Configure Onboard Port:" + port);
885885

886-
portConfig.prettyPrintTo(Serial);
886+
//portConfig.prettyPrintTo(Serial);
887887
Serial.println("");
888888

889889
SensorCalculation* calc = NULL;
@@ -967,7 +967,7 @@ void configurePort(int portNumber, JsonObject& portConfig) {
967967
else
968968
{
969969
uint8_t intPort = translateGPIOPort(port);
970-
if(intPort!=-1)
970+
if(intPort<999)
971971
{
972972
Serial.println("Setting up Digital Switch at Port: " + port);
973973
addSensor(new SensorDigitalSwitch(portConfig["id"], portConfig["c"], portConfig["sn"], portConfig["n"], intPort, refreshInterval, postDataInterval, calc));
@@ -1200,7 +1200,7 @@ uint8_t translateGPIOPort(String gpioPort)
12001200
if(gpioPort=="16")
12011201
return 16;
12021202

1203-
return -1;
1203+
return 999;
12041204
}
12051205

12061206
boolean postSensorData(Data* data[], int dataCount)
@@ -1267,9 +1267,7 @@ boolean postSensorData(Data* data[], int dataCount)
12671267

12681268
boolean postSensorDataPart(Data* data[], int startIndex, int endIndex)
12691269
{
1270-
HTTPClient httpClient;
1271-
1272-
String requestDataString = "";
1270+
requestDataString = "";
12731271

12741272
for (int i = startIndex; i <= endIndex; i++)
12751273
{
@@ -1279,7 +1277,7 @@ boolean postSensorDataPart(Data* data[], int startIndex, int endIndex)
12791277
requestDataString = requestDataString + "," + data[i]->getRequestString();
12801278
}
12811279

1282-
String urlString = bridgeURL + "/" + apiVersion + "/data/" + getUUID() + "/" + requestDataString;
1280+
urlString = bridgeURL + "/" + apiVersion + "/data/" + getUUID() + "/" + requestDataString;
12831281

12841282
httpClient.begin(*sslClient, urlString);
12851283

@@ -1307,7 +1305,7 @@ boolean postSensorDataPart(Data* data[], int startIndex, int endIndex)
13071305
display->drawConnected(true);
13081306
}
13091307

1310-
String payload = httpClient.getString();
1308+
payload = httpClient.getString();
13111309
httpClient.end();
13121310

13131311
if(payload!=NULL && displayType!=0)

src/controller/Bridge.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,12 @@
5151
#include "../output/display/DisplayST7735.h"
5252
#include "../output/VisualisationHelper.h"
5353

54-
bool initSSL();
55-
bool registerBridge();
54+
void initSSL();
55+
void registerBridge();
5656
void restoreBridgeConfig();
5757
void restart();
5858

59-
bool getBridgeConfig();
59+
void getBridgeConfig();
6060
void configureBridge(JsonObject&);
6161
void initVisualisationHelper(JsonObject&);
6262
void configureDisplayValueData(int, JsonObject&);

src/output/display/DisplayST7735.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ void DisplayST7735::drawConnected(bool update) {
222222

223223
if(!isResetting && displayEnabled)
224224
{
225-
display->fillRect(112, 48, 16, 16, ST7735_BLACK);
225+
display->fillRect(144, 112, 16, 16, ST7735_BLACK);
226226
}
227227
}
228228

0 commit comments

Comments
 (0)