Prośba o pomoc

  • 1 Odpowiedzi
  • 4191 Wyświetleń

0 użytkowników i 1 Gość przegląda ten wątek.

*

Offline Piotr B

  • ** 64
  • 0
Prośba o pomoc
« dnia: 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
*

Offline vandi

  • * 20
  • 6
Odp: Prośba o pomoc
« Odpowiedź #1 dnia: 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
« Ostatnia zmiana: Wrzesień 19, 2019, 04:05:34 pm wysłana przez vandi »