Luaknas

Post Reply
Optimistjolle
Ny medlem
Posts: 21
Joined: 24 Feb 2016, 23:11
8

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
User avatar
Bamsefar
Z-Wave Kung
Posts: 1269
Joined: 25 Nov 2013, 15:06
11
Location: Stockholm

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

Code: Select all

if Normal then
   if device43 > 0 then
   ...
   else
   ...
   end
end
Kör Home Assistant efter totalt nederlag för HomeSeer :twisted: :twisted: :mrgreen:
Optimistjolle
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
Post Reply