Indikering tända lampor

Post Reply
stiffafo
Ny medlem
Posts: 5
Joined: 19 Jun 2018, 12:55
5

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 :D

(Kör HC2 med 2st HCL som slavar)
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
7

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.
stiffafo
Ny medlem
Posts: 5
Joined: 19 Jun 2018, 12:55
5

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?
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
7

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?
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

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
stefafo
Ny medlem
Posts: 7
Joined: 15 Sep 2017, 15:51
6

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 :roll:
jang
Medlem
Posts: 388
Joined: 05 Jan 2014, 00:44
10
Location: Stockholm

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.
stiffafo
Ny medlem
Posts: 5
Joined: 19 Jun 2018, 12:55
5

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! :D

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.
alexndr
Medlem
Posts: 420
Joined: 14 Jul 2016, 14:38
7

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