Page 1 of 1
Indikering tända lampor
Posted: 06 Dec 2019, 18:23
by stiffafo
Hej är det någon som har en bra idé för att få en indikering om att alla/vissa lampor är släckta?
Exempelvis skulle jag vilja trigga en utgång på smart implant som tänder en diod om alla lampor jag ställt in är släckta.
Tänkte att det skulle gå att göra med variabler, att respektive lampa sätter en variabel i antingen tänd eller släck, och sen en scen som aktiveras när alla är i ett visst läge. Men om det rör sig om 40-50 lampor, och en variabel för släckt och en för tänd så blir det närmare 100 scener!? (kan bara grafiska block).
Finns det ett enklare sätt? En LUA kod där man kan skriva in id på de lampor det gäller och om de är i ett visst läge händer något annat?
Tacksam för svar, även spån går bra
(Kör HC2 med 2st HCL som slavar)
Re: Indikering tända lampor
Posted: 06 Dec 2019, 19:24
by alexndr
En lua- scen som triggas av alla lampor och som har en lista med alla lampor som den går igenom för att kolla om de är på eller av.
Att lösa det med bara block- scener blir nog inte lätt.
Re: Indikering tända lampor
Posted: 06 Dec 2019, 20:24
by stiffafo
Tack för svar
misstänkte att det kunde bli knepigt med block.
Är du själv insatt i LUA, blir det en väldigt avancerad scen för en nybörjare?
Re: Indikering tända lampor
Posted: 07 Dec 2019, 02:12
by alexndr
stiffafo wrote: ↑06 Dec 2019, 20:24
Tack för svar
misstänkte att det kunde bli knepigt med block.
Är du själv insatt i LUA, blir det en väldigt avancerad scen för en nybörjare?
Nej, i sin enklaste form blir det bara en lång if- sats.
Snyggare vore dock om man lägger upp lamporna i en lista man går igenom.
Nu är inte jag så hemma på block- scener
.. men borde man inte kunna lösa det med bara en blockscen som kollar statusen på lamporna?
Re: Indikering tända lampor
Posted: 07 Dec 2019, 11:20
by jang
Deklarera lamporna du vill monitorera under %% properties. I exemplet nedan '17 value', '18 value', och '20 value'.
Ersätt fibaro:debug utskrifterna med vad du vill ska hända...
Code: Select all
--[[
%% properties
17 value
18 value
20 value
%% autostart
--]]
if fibaro:getSourceTrigger().type ~= 'property' then fibaro:abort() end
local c,lights = 0,api.get("/scenes/"..__fibaroSceneId).triggers.properties
for _,d in ipairs(lights) do c = c + (fibaro:getValue(d.id,'value')=="0" and 0 or 1) end
if c == 0 then -- No lights on
fibaro:debug("Alla lampor av")
elseif c == #lights then -- All lights on
fibaro:debug("Alla lampor på")
else -- Some lights on
fibaro:debug("Några lampor på")
end
Re: Indikering tända lampor
Posted: 12 Dec 2019, 16:21
by stefafo
jang wrote: ↑07 Dec 2019, 11:20
Deklarera lamporna du vill monitorera under %% properties. I exemplet nedan '17 value', '18 value', och '20 value'.
Ersätt fibaro:debug utskrifterna med vad du vill ska hända...
Hej och tack för svar, det var precis något sådant jag var ute efter!
Så om jag tolkar dig rätt anger jag ID på alla lampor jag vill övervaka längst upp, bara radar upp dom?
Men sen var jag inte riktigt med på "Ersätt fibaro:debug utskrifterna med vad du vill ska hända..."
Det bästa vore om man kunde få den här scenen att sätta en variabel i antingen "några lampor tända" eller "inga lampor tända". Hur får jag till det? Jag vet ju hur man skapar variabler och hur jag ska få blockscenerna att påverka variabeln, men hur skriver man det i den här LUA-koden?
Ursäkta om det är dumma frågor
Re: Indikering tända lampor
Posted: 12 Dec 2019, 17:53
by jang
Japp, du listar alla lampor som ska delta i skriptet överst.
Code: Select all
--[[
%% properties
17 value
18 value
20 value
%% autostart
--]]
if fibaro:getSourceTrigger().type ~= 'property' then fibaro:abort() end
local c,lights = 0,api.get("/scenes/"..__fibaroSceneId).triggers.properties
for _,d in ipairs(lights) do c = c + (fibaro:getValue(d.id,'value')=="0" and 0 or 1) end
if c == 0 then -- No lights on
fibaro:setGlobal("lampkoll","Ingen")
elseif c == #lights then -- All lights on
fibaro:setGlobal("lampkoll","Alla")
else -- Some lights on
fibaro:setGlobal("lampkoll","Några")
end
Du måste skapa en variabel i 'Variables Panel' som heter 'lampkoll'.
Värdet sätts till "Alla", "Ingen" eller "Några"
Sedan kan du trigga på den i andra (block) scener.
Re: Indikering tända lampor
Posted: 14 Dec 2019, 20:06
by stiffafo
jang wrote: ↑12 Dec 2019, 17:53
Japp, du listar alla lampor som ska delta i skriptet överst.
Code: Select all
--[[
%% properties
17 value
18 value
20 value
%% autostart
--]]
if fibaro:getSourceTrigger().type ~= 'property' then fibaro:abort() end
local c,lights = 0,api.get("/scenes/"..__fibaroSceneId).triggers.properties
for _,d in ipairs(lights) do c = c + (fibaro:getValue(d.id,'value')=="0" and 0 or 1) end
if c == 0 then -- No lights on
fibaro:setGlobal("lampkoll","Ingen")
elseif c == #lights then -- All lights on
fibaro:setGlobal("lampkoll","Alla")
else -- Some lights on
fibaro:setGlobal("lampkoll","Några")
end
Du måste skapa en variabel i 'Variables Panel' som heter 'lampkoll'.
Värdet sätts till "Alla", "Ingen" eller "Några"
Sedan kan du trigga på den i andra (block) scener.
Så himla bra, funkar klockrent!
Tack för hjälpen!
Kan ju berätta vad det ska användas till, har 3D-printat en liten panel till nattduksbordet. Två dioder och två knappar, om någon belysning är tänd är också den ena dioden tänd. Om någon dörr är olåst är den andra tänd. Ena knappen släcker alla lampor och andra knappen låser dörrarna. Tyckte inte the button funkade något vidare för detta och saknade återkopplingen.
Re: Indikering tända lampor
Posted: 15 Dec 2019, 00:59
by alexndr
”The Button” är en riktig skämsprodukt. Sämsta Fibaro gjort. Att de ens fick säljas med tanke på hur dåligt de funkar är pinsamt.