@@ -13,7 +13,8 @@ DriverNetZigbee2mqtt::DriverNetZigbee2mqtt(const QJsonObject& deviceConfig)
1313 : LedDevice(deviceConfig),
1414 _discoveryFinished(false ),
1515 _colorsFinished(0 ),
16- _timeLogger(0 )
16+ _timeLogger(0 ),
17+ _mqttId(mqttId++)
1718{
1819}
1920
@@ -60,6 +61,7 @@ bool DriverNetZigbee2mqtt::init(const QJsonObject& deviceConfig)
6061bool DriverNetZigbee2mqtt::powerOnOff (bool isOn)
6162{
6263 QJsonDocument doc;
64+ QStringList lastWill;
6365
6466 for (const auto & lamp : _zigInstance.lamps )
6567 {
@@ -70,16 +72,28 @@ bool DriverNetZigbee2mqtt::powerOnOff(bool isOn)
7072
7173 doc.setObject (row);
7274 emit GlobalSignals::getInstance ()->SignalMqttPublish (topic, doc.toJson (QJsonDocument::Compact));
75+
76+ if (isOn)
77+ {
78+ row[" state" ] = " OFF" ;
79+ doc.setObject (row);
80+
81+ lastWill.push_back (topic);
82+ lastWill.push_back (doc.toJson (QJsonDocument::Compact));
83+ }
7384 }
7485
7586 if (_zigInstance.lamps .size () > 0 )
7687 {
88+ QString lastWillId = QString (" DriverNetZigbee2mqtt:%1" ).arg (_mqttId);
7789 if (isOn)
7890 {
91+ emit GlobalSignals::getInstance ()->SignalMqttLastWill (lastWillId, lastWill);
7992 connect (GlobalSignals::getInstance (), &GlobalSignals::SignalMqttReceived, this , &DriverNetZigbee2mqtt::handlerSignalMqttReceived, Qt::DirectConnection);
8093 }
8194 else
8295 {
96+ emit GlobalSignals::getInstance ()->SignalMqttLastWill (lastWillId, QStringList ());
8397 disconnect (GlobalSignals::getInstance (), &GlobalSignals::SignalMqttReceived, this , &DriverNetZigbee2mqtt::handlerSignalMqttReceived);
8498 }
8599 }
@@ -328,4 +342,5 @@ void DriverNetZigbee2mqtt::identify(const QJsonObject& params)
328342 }
329343}
330344
345+ int DriverNetZigbee2mqtt::mqttId = 0 ;
331346bool DriverNetZigbee2mqtt::isRegistered = hyperhdr::leds::REGISTER_LED_DEVICE(" zigbee2mqtt" , " leds_group_2_network" , DriverNetZigbee2mqtt::construct);
0 commit comments