Ciao, ho dato un'occhiata veloce al codice e ci sono delle cose non necessarie:
nel gw:
#include "conf/Gateway.h" //OK GATEWAY
#include "conf/SuperNode.h" // NON SERVE il gateway è sempre supernode
#include "conf/IPBroadcast.h" // non serve hai un peer rs485 non ip
SetAddress(0xAB01, 0xFF00, 0x0000); // rete non necessaria
SetAddress(0xD001, 0xFF00, 0x0000);
FAST_GatewayComms(); // OK
FAST_BridgeComms(); // fai due volte la stessa cosa non inserire è già dentro gatewaycomms // questa sotto non mi torna
ogni 50 secondi chiedi al dht la temperatura, e la metti correttamente dentro la memoria di souliss nell'input
però interroghi la memoria di input se ci sono cambiamenti per processarla ogni 10 secondi , è inutile 4 volte
SLOW_10s() {
Logic_T58(HUMIDITY);
Logic_T52(TEMP0);
}
SLOW_50s() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature(false);
if (!isnan(humidity) || !isnan(temperature)) {
ImportAnalog(HUMIDITY, &humidity);
ImportAnalog(TEMP0, &temperature);
}
}
puoi fare:
SLOW_50s() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature(false);
if (!isnan(humidity) || !isnan(temperature)) {
ImportAnalog(HUMIDITY, &humidity);
ImportAnalog(TEMP0, &temperature);
Logic_T58(HUMIDITY);
Logic_T52(TEMP0);
}
}
nel peer c'è solamente una cosa:
START_PeerJoin(); // non serve hai già l'indirizzo e non lo devi chiedere al gw che ti conosce già
FAST_510ms() { ... } // hai tantissime cose da fare, magari potresti dividere le logiche con le prime 10 in 110ms e le seconde a 210ms
ma se ti funziona bene e non hai problemi di comunicazione puoi lasciarlo, è sempre rischioso fare troppe cose dentro un'unico ciclo ti potrebbe far saltare le tempistiche di comunicazione