@@ -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+
9901054bool sendHaDiscovery ()
9911055{
9921056
0 commit comments