Hej allihopa!
Nu fick jag hem en HC2 igår och är i full gång, men jag har fastnat på ett script.
Scriptet är för en ringklocka som skall ha två,lägen:ljudlös och vanlig.
Det finns 2 globala värden, Normal och Tyst.
Lagt in debug som svar på kriterierna för att sklppa notiserna på mobilen.
Kvittar hur jag ställer variablerna i paneler, får alltid samma utgång, Normal.
Använder fibaros dörrsensor kopplad till ringklockan.
Tänkte kolla om det finn någon vänlig själ som kan slänga ett öga på mitt script och rätta vad jag gjort fel på. =)
Är galet grön.
Tack på,förhand!
Mvh Johan
--[[
%% properties
43 value --sensorn, dörrsensor med kabel på potfria ingången.
%% events
%% globals
Doorbell
--]]
local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(43, "value")) > 0 )
and
( fibaro:getGlobalValue("Doorbell") == "Normal" )
or
startSource["type"] == "other"
)
then
fibaro:debug("Status är normal")
elseif (
( tonumber(fibaro:getValue(43, "value")) > 0 )
and
( fibaro:getGlobalValue("Doorbell") == "Tyst" )
or
startSource["type"] == "other"
)
then
fibaro:debug("Status är tyst")
end
Luaknas
Ett par, förhoppningsvis, hjälpande ord på vägen:
1) När du ändrar en global variabel i variabelpanelen så triggas inte en scen - för att trigga en scen genom en global variabel förändring så måste det skötas genom en annan scen eller VD.
2) Att blanda in getSourceTrigge på det sättet du valt är nog dömt att misslyckas. getSourceTrigger handlar mera om att bestämma om en scen startats manuellt (tryckt RUN) eller triggats - jag tror därför att du bör avstå att ha med det testerna.
3) Att kombinera värdet på device 43 och globala variabeln, ser jag som onödigt komplexed. Om det är så att läget är TYST så borde resten inte spela in i över huvudet taget eller hur? Således skulle jag nog skriva något liknande (nedanstående är psuedo kod):
1) När du ändrar en global variabel i variabelpanelen så triggas inte en scen - för att trigga en scen genom en global variabel förändring så måste det skötas genom en annan scen eller VD.
2) Att blanda in getSourceTrigge på det sättet du valt är nog dömt att misslyckas. getSourceTrigger handlar mera om att bestämma om en scen startats manuellt (tryckt RUN) eller triggats - jag tror därför att du bör avstå att ha med det testerna.
3) Att kombinera värdet på device 43 och globala variabeln, ser jag som onödigt komplexed. Om det är så att läget är TYST så borde resten inte spela in i över huvudet taget eller hur? Således skulle jag nog skriva något liknande (nedanstående är psuedo kod):
Code: Select all
if Normal then
if device43 > 0 then
...
else
...
end
end
Kör Home Assistant efter totalt nederlag för HomeSeer
-
- Ny medlem
- Posts: 21
- Joined: 24 Feb 2016, 23:11
- 8
Bamsefar, du skall ha en bamsekram för tipsen!
Kikade runt lite (bl.a. din eminenta LUA-skola) och knåpade lite till.
Slutade med detta och det verkar fungera hitills, nu skall bara resten in. =)
--[[
%% properties
%% events
%% globals
--]]
local myVar1 = fibaro:getValue(43, "value") --Doorbell Unpressed/Pressed (0/1)
local myVar2 = fibaro:getGlobalValue("Doorbell") --Variables, Silent/Normal (0/1)
fibaro:debug('value = ' .. myVar1)
fibaro:debug('value = ' .. myVar2)
if (tonumber(myVar1) == 1) and (tonumber(myVar2) == 1)
then
fibaro:debug("Normalt ")
else
fibaro:debug("Tyst ")
end
Kikade runt lite (bl.a. din eminenta LUA-skola) och knåpade lite till.
Slutade med detta och det verkar fungera hitills, nu skall bara resten in. =)
--[[
%% properties
%% events
%% globals
--]]
local myVar1 = fibaro:getValue(43, "value") --Doorbell Unpressed/Pressed (0/1)
local myVar2 = fibaro:getGlobalValue("Doorbell") --Variables, Silent/Normal (0/1)
fibaro:debug('value = ' .. myVar1)
fibaro:debug('value = ' .. myVar2)
if (tonumber(myVar1) == 1) and (tonumber(myVar2) == 1)
then
fibaro:debug("Normalt ")
else
fibaro:debug("Tyst ")
end