Ma ktoś pomysł jako zrobic losowe włączanie koloru dla kilku żarówek RGBW, tak aby każda miała "wylosowany" własny kolor?
Mam taki skrypt, ale druga , trzecia (i kolejne jeśli są w skrypcie) zawsze mają taki sam kolor- czyli random w taki sposób nie uruchamia sie na nowo
return {
on = { timer = { 'at every minute'}},
logging =
{
level = domoticz.LOG_DEBUG,
},
execute = function(dz)
Zarowa1 = dz.devices(454)
Zarowa2 = dz.devices(456)
Zarowa3 = dz.devices(458)
Zarowa1.setColor(math.random(0, 255),math.random(0, 255),math.random(0, 255))
Zarowa2.setColor(math.random(0, 255),math.random(0, 255),math.random(0, 255))
Zarowa3.setColor(math.random(0, 255),math.random(0, 255),math.random(0, 255))
end
}
Też się przekonałem, że czasem trzeba się nakombinować przy tych skryptach, aby coś zadziałało... Nie mam żadnych tego typu żarówek, więc nie potestuję, ale wrzuciłem sobie taki kod na warsztat:
dz.log (math.random(0, 255))
dz.log (math.random(0, 255))
dz.log (math.random(0, 255))
dz.log (math.random(0, 255) .. ' oraz' .. (math.random(0, 255)))
i w każdym wierszu wskazało mi inną losową wartość, więc niby losuje dobrze:
2020-12-16 16:05:00.503 Status: dzVents: Info: 251
2020-12-16 16:05:00.503 Status: dzVents: Info: 236
2020-12-16 16:05:00.503 Status: dzVents: Info: 37
2020-12-16 16:05:00.503 Status: dzVents: Info: 38 oraz131
tostring(math.random(0, 255))
Niestety tostring() nie działa tu musi byc wartość numeryczna.
Ale zasugerowałeś mi z tymi zmiennymi - zrobiłem to inaczej i działa. Dzięki 🙂
Niezbyt to eleganckie, ale spełnia swoją rolę
return {
on = { timer = { 'at every minute'}},
logging =
{
level = domoticz.LOG_DEBUG,
},
execute = function(dz)
Wlacz =dz.devices(465)
Zarowa1 = dz.devices(454)
Zarowa2 = dz.devices(456)
Zarowa3 = dz.devices(458)
Zarowa4 = dz.devices(460)
Zarowa5 = dz.devices(462)
Zarowa6 = dz.devices(464)
if
Wlacz.state == 'On' then
br=math.random(10, 80)
Zarowa1.setLevel(br)
Zarowa2.setLevel(br)
Zarowa3.setLevel(br)
Zarowa4.setLevel(br)
Zarowa5.setLevel(br)
Zarowa6.setLevel(br)
r1=math.random(0, 255)
r2=math.random(0, 255)
r3=math.random(0, 255)
r4=math.random(0, 255)
r5=math.random(0, 255)
r6=math.random(0, 255)
g1=math.random(0, 255)
g2=math.random(0, 255)
g3=math.random(0, 255)
g4=math.random(0, 255)
g5=math.random(0, 255)
g6=math.random(0, 255)
b1=math.random(0, 255)
b2=math.random(0, 255)
b3=math.random(0, 255)
b4=math.random(0, 255)
b5=math.random(0, 255)
b6=math.random(0, 255)
Zarowa1.setColor(r1,g1,b1)
Zarowa2.setColor(r2,g2,b2)
Zarowa3.setColor(r3,g3,b3)
Zarowa4.setColor(r4,g4,b4)
Zarowa5.setColor(r5,g5,b5)
Zarowa6.setColor(r6,g6,b6)
else
Zarowa1.switchOff()
Zarowa2.switchOff()
Zarowa3.switchOff()
Zarowa4.switchOff()
Zarowa5.switchOff()
Zarowa6.switchOff()
end
end
}
Fajnie. W teorii zrobiłeś to samo co na początku, a jednak wczesniej nie działało 😉. Trochę tak jakby skrypt nie był w stanie przyporządkować więcej niż jednej losowej wartości w trakcie wykonywania komendy setcolor. Za to z trzema z góry zdefiniowanymi sobie radzi.
Z ciekawości... do czego wykorzystujesz te 6 różnokolorowych żarówek? 🤔
Chciałem też opóźnić tę zmian koloru, ale afterSec() , przynajmniej na razie mi nie działa
Żarówki wymienię w podbitce dachu, będzie odpustowo na święta 🤣