Slumpgenerator till ledlampa?

Post Reply
Earplugged
Medlem
Posts: 158
Joined: 03 Feb 2016, 17:16
8

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.
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
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.

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
Earplugged
Medlem
Posts: 158
Joined: 03 Feb 2016, 17:16
8

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")
Har testat lite med math.random men jag får samma slumpade tal varje gång scenen startas....
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
User avatar
RH_Dreambox
Z-Wave Kung
Posts: 1192
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.
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
Earplugged
Medlem
Posts: 158
Joined: 03 Feb 2016, 17:16
8

RH_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.
Hittade att man kunde lägga in math.randomseed(os.time()) före beräkningen och då funkar det faktiskt :-)

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
Post Reply