Hej,
Skulle vilja få till en slumpgenerator som slumpar fram en färg på min Zipato RGBW lampa, någon som kan hjälpa mig med detta?
Varje gång scenen startar skall en helt slumpvis färg genereras, eller lägga koden i en VD där varje knapptryckning slumpar färgen.
Slumpgenerator till ledlampa?
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Jag använder denna kod för att slumpmässigt tända eller släcka lampor.
(math.random(gränsvärde-1, gränsvärde-2)) kan du säkert modifiera för dina behov.
(math.random(gränsvärde-1, gränsvärde-2)) kan du säkert modifiera för dina behov.
Code: Select all
fibaro:sleep(math.random(3500,4500))
fibaro:call(13, "turnOn")
fibaro:sleep(math.random(3500,4500))
fibaro:call(15, "turnOn")
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
-
- Medlem
- Posts: 158
- Joined: 03 Feb 2016, 17:16
- 8
Har testat lite med math.random men jag får samma slumpade tal varje gång scenen startas....RH_Dreambox wrote:Jag använder denna kod för att slumpmässigt tända eller släcka lampor.
(math.random(gränsvärde-1, gränsvärde-2)) kan du säkert modifiera för dina behov.
Code: Select all
fibaro:sleep(math.random(3500,4500)) fibaro:call(13, "turnOn") fibaro:sleep(math.random(3500,4500)) fibaro:call(15, "turnOn")
Hur tusan återställer man så det slumpas nytt tal varje gång?
--[[
%% properties
47 sceneActivation
%% events
%% globals
--]]
local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(47, "sceneActivation")) == 24 )
or
startSource["type"] == "other"
)
then
local r = math.random(1,100)
local g = math.random(1,100)
local b = math.random(1,100)
local w = math.random(1,100)
fibaro:call(124, "setColor", r,g,b,w);
fibaro:call(124, "setBrightness", "99");
fibaro:debug(r)
fibaro:debug(g)
fibaro:debug(b)
fibaro:debug(w)
end
- RH_Dreambox
- Z-Wave Kung
- Posts: 1203
- Joined: 03 Jan 2015, 16:49
- 9
- Location: Vegby
- Contact:
Ja slumptal är lite problematiskt, men det finns en hel del skrivet om detta.
Sök på tex. "Slumptal" så hittar du en hel del här på forumet.
Sök på tex. "Slumptal" så hittar du en hel del här på forumet.
Min gamla ombyggda HC2 har fått ett nytt liv och min HC3 är nu nedkopplad.
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
HC2 med Home Assistant har blivit en riktig Game Changer och nu har jag hemautomatik på riktigt.
https://www.zwaveforum.se/viewtopic.php?t=7087
-
- Medlem
- Posts: 158
- Joined: 03 Feb 2016, 17:16
- 8
Hittade att man kunde lägga in math.randomseed(os.time()) före beräkningen och då funkar det faktisktRH_Dreambox wrote:Ja slumptal är lite problematiskt, men det finns en hel del skrivet om detta.
Sök på tex. "Slumptal" så hittar du en hel del här på forumet.
Ungarna ville ha ett "lotterihjul" där man gissar vilken färg den stannar på så jag knåpade ihop en lite loop, tyvärr blir ju färgerna inte så distinkta då allt slumpas samtidigt och chansen att få klart röd rex blir ju rätt liten... Vet inte om det finns något smart sätt att få så stor skillnad som möjligt mellan slumptalen?
Satte en begränsning att färgerna tillsammans måste uppnå 100 för att inte bli för svagt ljus men verkar inte fungera riktigt, har jag tänkt fel?
--[[
%% properties
47 sceneActivation
%% events
%% globals
--]]
local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(47, "sceneActivation")) == 24 )
or
startSource["type"] == "other"
)
then
local countdown = 7 --antal färger
local sleeptimer = 800
repeat
math.randomseed(os.time())
local r = math.random(1,100)
local g = math.random(1,100)
local b = math.random(1,100)
local w = math.random(1,1)
if r + g + b < 100 then
repeat
fibaro:sleep(400)
math.randomseed(os.time())
fibaro:sleep(400)
local r = math.random(1,100)
local g = math.random(1,100)
local b = math.random(1,100)
fibaro:debug("under 100: ")
until r + g + b > 101
else
end
fibaro:call(124, "setColor", r,g,b,w);
fibaro:call(124, "setBrightness", "99");
fibaro:debug(r)
fibaro:debug(g)
fibaro:debug(b)
fibaro:debug((r)+(g)+(b))
fibaro:sleep(sleeptimer)
countdown=countdown-1
sleeptimer=(sleeptimer*1.2)
fibaro:debug("Nedräkning: " .. countdown)
fibaro:debug("Sleeptimer: " .. sleeptimer)
until countdown==0
fibaro:sleep(500)
fibaro:call(124, "setBrightness", "50");
fibaro:sleep(500)
fibaro:call(124, "setBrightness", "99");
end