[SYS] Implement a central queue (#1767)
to avoid concurrency issues when modules or/and gateways want to publish data
This commit is contained in:
1 parent
ca9ef664ab
commit
029409c0c3
39 files changed
+491
-407
No files matched your search
@@ -30,8 +30,8 @@
|
||||
GfSun2000 GF = GfSun2000();
|
||||
|
||||
void GFSunInverterDataHandler(GfSun2000Data data) {
|
||||
StaticJsonDocument<2 * JSON_MSG_BUFFER> jsonBuffer;
|
||||
JsonObject jdata = jsonBuffer.to<JsonObject>();
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> jdataBuffer;
|
||||
JsonObject jdata = jdataBuffer.to<JsonObject>();
|
||||
|
||||
jdata["device_id"] = (char*)data.deviceID;
|
||||
Log.trace(F("Device ID : %s\n" CR), data.deviceID);
|
||||
@@ -47,8 +47,8 @@ void GFSunInverterDataHandler(GfSun2000Data data) {
|
||||
Log.trace(F("Total Energy : %.1f\tkW/h\n" CR), data.totalEnergyCounter);
|
||||
|
||||
# ifdef GFSUNINVERTER_DEVEL
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer2;
|
||||
JsonObject jregister = jsonBuffer2.to<JsonObject>();
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> jregisterBuffer;
|
||||
JsonObject jregister = jregisterBuffer.to<JsonObject>();
|
||||
char buffer[4];
|
||||
std::map<int16_t, int16_t>::iterator itr;
|
||||
for (itr = data.modbusRegistry.begin(); itr != data.modbusRegistry.end(); ++itr) {
|
||||
@@ -58,19 +58,21 @@ void GFSunInverterDataHandler(GfSun2000Data data) {
|
||||
}
|
||||
jdata["register"] = jregister;
|
||||
# endif
|
||||
pub(subjectRFtoMQTT, jdata);
|
||||
jdata["origin"] = subjectRFtoMQTT;
|
||||
enqueueJsonObject(jdata);
|
||||
}
|
||||
|
||||
void GFSunInverterErrorHandler(int errorId, char* errorMessage) {
|
||||
char buffer[50];
|
||||
sprintf(buffer, "Error response: %02X - %s\n", errorId, errorMessage);
|
||||
Log.error(buffer);
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> jsonBuffer;
|
||||
JsonObject jdata = jsonBuffer.to<JsonObject>();
|
||||
StaticJsonDocument<JSON_MSG_BUFFER> jdataBuffer;
|
||||
JsonObject jdata = jdataBuffer.to<JsonObject>();
|
||||
jdata["status"] = "error";
|
||||
jdata["msg"] = errorMessage;
|
||||
jdata["id"] = errorId;
|
||||
pub(subjectRFtoMQTT, jdata);
|
||||
jdata["origin"] = subjectRFtoMQTT;
|
||||
enqueueJsonObject(jdata);
|
||||
}
|
||||
|
||||
void setupGFSunInverter() {
|
||||
|
||||
Reference in new issue
Block a user