Forum użytkowników automatyki budynkowej

Z-wave => Fibaro - sceny => Wątek zaczęty przez: Piotr B w Wrzesień 16, 2019, 10:04:16 am

Tytuł: Prośba o pomoc
Wiadomość wysłana przez: Piotr B w Wrzesień 16, 2019, 10:04:16 am
Witajcie,

mam scenę, jak poniżej.

Problem jest następujący:
wszystko działa poprawnie jak włączony jest TV (moc powyżej zadeklarowanej) i zmieni się stan zmienne isNight z 0 na 1 - światło się włącza.
Gdy jest sytuacja odwrotna - zmienna ma już stan 1 i włączę TV (czyli moc przekroczy wartość) scena nie zapala światła - muszę scenę uruchomić ręcznie i wtedy jest OK.

urządzenia 350 i 348 - wall plug


--[[
%% autostart
%% properties
350 power
%% weather
%% events
%% globals
isNight
--]]

local startSource = fibaro:getSourceTrigger();
if ( ( tonumber(fibaro:getValue(350, "power")) >= 20 )
and
 ( tonumber(fibaro:getGlobalValue("isNight")) == tonumber("1") ))
then
   fibaro:call(348, "turnOn");
  else
  setTimeout(function()   fibaro:call(348, "turnOff");
   end, 10000)
end

Pozdrawiam

Piotr
Tytuł: Odp: Prośba o pomoc
Wiadomość wysłana przez: vandi w Wrzesień 19, 2019, 03:59:38 pm
może w ten sposób
--[[
%% properties
350 power
%% globals
isNight
--]]
if fibaro:countScenes() > 1 then fibaro:abort() end
local hc =  fibaro
local typWyzw = hc:getSourceTrigger()['type']
local mocPrzekroczona = tonumber(hc:getValue(350, "power")) >= 20
local noc = tonumber(hc:getGlobalValue("isNight")) == 1

if typWyzw == 'global' or typWyzw == 'property' then
  if mocPrzekroczona and noc then hc:call(348, "turnOn") end
  if mocPrzekroczona == false or noc == false then setTimeout(function() hc:call(348, "turnOff") end, 10000)  end
end