Skip to content

Commit 823bb05

Browse files
committed
fix json load state control
1 parent 59eaaf3 commit 823bb05

2 files changed

Lines changed: 66 additions & 2 deletions

File tree

platformio.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ platform = espressif8266@4.2.1
1313
framework = arduino
1414
monitor_speed = 115200
1515
monitor_filters = esp8266_exception_decoder, default, time, printable, colorize
16-
custom_prog_version = 2.5.1
16+
custom_prog_version = 2.5.2
1717
build_flags =
1818
-DVERSION=${this.custom_prog_version}
1919
-DPIO_SRC_NAM="EPEver2MQTT"

src/main.cpp

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ bool sendtoMQTT()
935935
return true;
936936
}
937937

938-
void callback(char *top, byte *payload, unsigned int length)
938+
/* void callback(char *top, byte *payload, unsigned int length)
939939
{
940940
// updateProgress = true; // stop servicing data
941941
if (!_settings.data.mqttJson)
@@ -984,9 +984,73 @@ void callback(char *top, byte *payload, unsigned int length)
984984
DEBUG_WEBLN("MQTT Data Trigger Firered Up");
985985
mqtttimer = 0;
986986
}
987+
// updateProgress = false; // start data servicing again
988+
} */
989+
990+
void callback(char *top, byte *payload, unsigned int length)
991+
{
992+
// updateProgress = true; // stop servicing data
993+
994+
JsonDocument mqttJsonAnswer;
995+
996+
if (_settings.data.mqttJson)
997+
{
998+
DeserializationError err = deserializeJson(mqttJsonAnswer, (const byte *)payload, length);
999+
if (err)
1000+
{
1001+
Serial.print(F("MQTT JSON Parse Error: "));
1002+
Serial.println(err.c_str());
1003+
return;
1004+
}
1005+
1006+
for (size_t k = 1; k <= _settings.data.deviceQuantity; k++)
1007+
{
1008+
JsonVariant ep = mqttJsonAnswer[devicePrefix + k];
1009+
if (!ep.isNull())
1010+
{
1011+
JsonVariant liveData = ep["LiveData"];
1012+
if (!liveData.isNull() && !liveData["LOAD_STATE"].isNull())
1013+
{
1014+
epnode.setSlaveId(k);
1015+
mqtttimer = 0;
1016+
bool loadState = liveData["LOAD_STATE"].as<bool>();
1017+
epnode.writeSingleCoil(0x0002, loadState ? 1 : 0);
1018+
}
1019+
}
1020+
}
1021+
}
1022+
else
1023+
{
1024+
String messageTemp;
1025+
for (unsigned int i = 0; i < length; i++)
1026+
{
1027+
messageTemp += (char)payload[i];
1028+
}
1029+
1030+
for (size_t k = 1; k <= _settings.data.deviceQuantity; k++)
1031+
{
1032+
if (strcmp(top, (topic + "/" + devicePrefix + k + "/DeviceControl/LOAD_STATE").c_str()) == 0)
1033+
{
1034+
epnode.setSlaveId(k);
1035+
mqtttimer = 0;
1036+
if (messageTemp == "true")
1037+
epnode.writeSingleCoil(0x0002, 1);
1038+
else if (messageTemp == "false")
1039+
epnode.writeSingleCoil(0x0002, 0);
1040+
}
1041+
}
1042+
}
1043+
1044+
if (strlen(_settings.data.mqttTriggerPath) > 0 && strcmp(top, _settings.data.mqttTriggerPath) == 0)
1045+
{
1046+
DEBUG_WEBLN("MQTT Data Trigger Firered Up");
1047+
mqtttimer = 0;
1048+
}
1049+
9871050
// updateProgress = false; // start data servicing again
9881051
}
9891052

1053+
9901054
bool sendHaDiscovery()
9911055
{
9921056

0 commit comments

Comments
 (0)