11#include < led-drivers/net/DriverNetZigbee2mqtt.h>
22#include < utils/GlobalSignals.h>
3+ #include < utils/InternalClock.h>
34
45namespace
56{
@@ -10,7 +11,7 @@ namespace
1011DriverNetZigbee2mqtt::DriverNetZigbee2mqtt (const QJsonObject& deviceConfig)
1112 : LedDevice(deviceConfig),
1213 _discoveryFinished(false ),
13- _colorsFinished(false ),
14+ _colorsFinished(0 ),
1415 _timeLogger(0 )
1516{
1617}
@@ -104,7 +105,7 @@ int DriverNetZigbee2mqtt::write(const std::vector<ColorRgb>& ledValues)
104105{
105106 QJsonDocument doc;
106107
107- _colorsFinished = false ;
108+ _colorsFinished = std::min (ledValues. size (), _zigInstance. lamps . size ()) ;
108109
109110 auto rgb = ledValues.begin ();
110111 for (const auto & lamp : _zigInstance.lamps )
@@ -149,19 +150,20 @@ int DriverNetZigbee2mqtt::write(const std::vector<ColorRgb>& ledValues)
149150 emit GlobalSignals::getInstance ()->SignalMqttPublish (topic, doc.toJson (QJsonDocument::Compact));
150151 }
151152
152- int timeout = 0 ;
153- for (timeout = 0 ; timeout < 20 && !_colorsFinished; timeout++)
153+ auto start = InternalClock::nowPrecise ();
154+
155+ for (int timeout = 0 ; timeout < 25 && _colorsFinished > 0 ; timeout++)
154156 {
155- QThread::msleep (10 );
157+ QThread::msleep (8 );
156158 }
157159
158- if (! _colorsFinished)
160+ if (_colorsFinished > 0 )
159161 {
160- Warning (_log, " The communication timed out after 200ms (%i)" , (++_timeLogger));
162+ Warning (_log, " The communication timed out after %ims (%i)" , ( int )( InternalClock::nowPrecise () - start) , (++_timeLogger));
161163 }
162164 else if (_timeLogger >= 0 && _timeLogger < DEFAULT_TIME_MEASURE_MESSAGE)
163165 {
164- Info (_log, " The communication took: %ims (%i/%i)" , timeout * 10 , ++_timeLogger, DEFAULT_TIME_MEASURE_MESSAGE);
166+ Info (_log, " The communication took: %ims (%i/%i)" , ( int )( InternalClock::nowPrecise () - start) , ++_timeLogger, DEFAULT_TIME_MEASURE_MESSAGE);
165167 }
166168
167169 return 0 ;
@@ -174,9 +176,9 @@ void DriverNetZigbee2mqtt::handlerSignalMqttReceived(QString topic, QString payl
174176 _discoveryMessage = payload;
175177 _discoveryFinished = true ;
176178 }
177- else
179+ else if (_colorsFinished > 0 )
178180 {
179- _colorsFinished = true ;
181+ _colorsFinished-- ;
180182 }
181183}
182184
0 commit comments