Srfb bugs (#807)

* Correct buffer processing

was missing an instruction due to a previous refactoring

* Correct duplicate condition

* Avoid publishing \n into the raw value

* Merge extract_char and value_from_service_data functions
This commit is contained in:
Florian authored and GitHub committed 2020-11-28 17:16:15 -06:00
1 parent fd2d25bf31
commit b2c05156b2
4 files changed
+51 -73

No files matched your search

+5 -13
View File
@@ -104,26 +104,18 @@ void _rfbDecode() {
Log.trace(F("Creating SRFB buffer" CR));
StaticJsonBuffer<JSON_MSG_BUFFER> jsonBuffer;
JsonObject& SRFBdata = jsonBuffer.createObject();
SRFBdata.set("raw", (char*)buffer);
SRFBdata.set("raw", String(buffer).substring(0, 18));
char Tsyn[4] = {0};
extract_char(buffer, Tsyn, 0, 4, false, true);
int val_Tsyn = (int)strtol(Tsyn, NULL, 10);
int val_Tsyn = (int)(int)value_from_hex_data(buffer, 0, 4, false, false);
SRFBdata.set("delay", (int)val_Tsyn);
char Tlow[4] = {0};
extract_char(buffer, Tlow, 4, 4, false, true);
int val_Tlow = (int)strtol(Tlow, NULL, 10);
int val_Tlow = (int)value_from_hex_data(buffer, 4, 4, false, false);
SRFBdata.set("val_Tlow", (int)val_Tlow);
char Thigh[4] = {0};
extract_char(buffer, Thigh, 8, 4, false, true);
int val_Thigh = (int)strtol(Thigh, NULL, 10);
int val_Thigh = (int)value_from_hex_data(buffer, 8, 4, false, false);
SRFBdata.set("val_Thigh", (int)val_Thigh);
char val[8] = {0};
extract_char(buffer, val, 12, 8, false, true);
unsigned long MQTTvalue = (unsigned long)strtoul(val, NULL, 10);
unsigned long MQTTvalue = (unsigned long)value_from_hex_data(buffer, 12, 8, false, false);
SRFBdata.set("value", (unsigned long)MQTTvalue);
if (!isAduplicateSignal(MQTTvalue) && MQTTvalue != 0) { // conditions to avoid duplications of RF -->MQTT