@@ -27,9 +27,13 @@ bool DriverNetZigbee2mqtt::init(const QJsonObject& deviceConfig)
27
27
28
28
if (LedDevice::init (deviceConfig))
29
29
{
30
+ if (_zigInstance.constantBrightness < 0 )
31
+ {
32
+ QThread::msleep (750 );
33
+ }
30
34
31
35
_zigInstance.transition = deviceConfig[" transition" ].toInt (0 );
32
- _zigInstance.constantBrightness = deviceConfig[" constantBrightness" ].toInt (0 );
36
+ _zigInstance.constantBrightness = deviceConfig[" constantBrightness" ].toInt (1 );
33
37
34
38
Debug (_log, " Transition (ms) : %s" , (_zigInstance.transition > 0 ) ? QSTRING_CSTR (QString::number (_zigInstance.transition )) : " disabled" );
35
39
Debug (_log, " ConstantBrightness : %s" , (_zigInstance.constantBrightness > 0 ) ? QSTRING_CSTR (QString::number (_zigInstance.constantBrightness )) : " disabled" );
@@ -117,7 +121,7 @@ int DriverNetZigbee2mqtt::write(const std::vector<ColorRgb>& ledValues)
117
121
auto start = InternalClock::nowPrecise ();
118
122
119
123
auto rgb = ledValues.begin ();
120
- for (const auto & lamp : _zigInstance.lamps )
124
+ for (auto & lamp : _zigInstance.lamps )
121
125
if (rgb != ledValues.end ())
122
126
{
123
127
QJsonObject row;
@@ -148,12 +152,14 @@ int DriverNetZigbee2mqtt::write(const std::vector<ColorRgb>& ledValues)
148
152
brightness = std::min (std::max (static_cast <int >(std::roundl (v * 255.0 )), 0 ), 255 );
149
153
}
150
154
151
- if (brightness > 0 && _zigInstance. constantBrightness > 0 )
155
+ if (lamp. currentBrightness <= 0 && brightness > 0 )
152
156
{
153
- brightness = _zigInstance.constantBrightness ;
157
+ row[" brightness" ] = lamp.currentBrightness = _zigInstance.constantBrightness ;
158
+ }
159
+ else if (lamp.currentBrightness > 0 && brightness == 0 )
160
+ {
161
+ row[" brightness" ] = lamp.currentBrightness = 0 ;
154
162
}
155
-
156
- row[" brightness" ] = brightness;
157
163
158
164
doc.setObject (row);
159
165
emit GlobalSignals::getInstance ()->SignalMqttPublish (topic, doc.toJson (QJsonDocument::Compact));
0 commit comments