Powiadomienia
Wyczyść wszystko

Dzvents- losowe właczanie koloru kilku żarówek RGBW zigbee

5 Wpisów
2 Użytkownicy
0 Likes
762 Wyświetleń
(@mareka)
Wpisów: 20
Praktykant
Autor tematu
 

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

}

 
Dodane : 16/12/2020 2:06 pm
(@bartolomeo)
Wpisów: 210
Pomocny Donator 2K22
 

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

 
 
Na twoim miejscu sprawdziłbym czy typy zmiennych nie kolidują gdzieś i przerobił na początek math.random(0, 255) na: 
 
tostring(math.random(0, 255))
 
 
Dodane : 16/12/2020 5:12 pm
(@mareka)
Wpisów: 20
Praktykant
Autor tematu
 

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

}

 
Dodane : 16/12/2020 9:14 pm
(@bartolomeo)
Wpisów: 210
Pomocny Donator 2K22
 

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? 🤔

 
Dodane : 16/12/2020 10:13 pm
(@mareka)
Wpisów: 20
Praktykant
Autor tematu
 

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 🤣 

 
Dodane : 16/12/2020 10:45 pm
Udostępnij: