Помогите! Где ошибка?


-- NOTICE TO CHANGE DEVICES ID's:
--[[
%% properties
362 value
66 value
%% globals
--]]

-- BATHROOM SCENE FUNCTIONALITY:
-- No extra Global variables needed!
-- Automatic light depending of opening and closing door
-- Time to enter - detecting another situations, like cleaning bathroom

-- NOTICE TO CHANGE DEVICES ID's:
doorID = 362;
lightID = 66;

-- time to enter, longer time will detect as another situation, like: cleaning
timeToEnter = 10;

local light = fibaro:getValue(lightID, 'value');
local door = fibaro:getValue(doorID, 'value');
local armed, lastArmed = fibaro:get(doorID, 'armed');
local trigger = fibaro:getSourceTrigger();

if (fibaro:countScenes()>1) then
  fibaro:debug('Kill second scene!');
  fibaro:abort();
end

if (trigger['type']=='property') then

  -- door trigger
  if (trigger['deviceID']==tostring(doorID)) then

    -- door opened
    if (door=='1') then

      fibaro:debug('Door opened.');

      if (armed=='0') then
        fibaro:call(lightID, 'turnOn');
        fibaro:call(doorID, 'setArmed', '1');
        fibaro:call(doorID, 'setArmed', '0');
        fibaro:debug('Light on!');
      end

    -- door closed
    elseif (door=='0') then

      fibaro:debug('Door closed.');

      if (armed=='1' or (os.time()-lastArmed)>=timeToEnter) then
        fibaro:call(lightID, 'turnOff');
        fibaro:call(doorID, 'setArmed', '0');
        fibaro:debug('Light off, room empty!');
      else
        fibaro:call(doorID, 'setArmed', '1');
        fibaro:debug('Someone inside!');
      end

    end

  -- light manual
  elseif (trigger['deviceID']==tostring(lightID) and (os.time()-lastArmed)>0) then

    -- light manual off
    if (light=='0') then
      if (door=='1') then
        -- when door are opened
        fibaro:call(doorID, 'setArmed', '1');
      else
        -- when door are closed
        fibaro:call(doorID, 'setArmed', '0');
      end
      fibaro:debug('Light manual off!');
    -- light manual on
    elseif (light=='1') then
      fibaro:call(doorID, 'setArmed', '1');
      fibaro:debug('Light manual on, arming...');
    end

  end

end

задан 18 Май '15, 11:18

Eduard1000's gravatar image

Eduard1000
12
процент согласия: 0%

отредактирован 19 Май '15, 13:20

Nils_Bohr's gravatar image

Nils_Bohr
2.3k110


if (fibaro:countScenes()>1) then fibaro:debug('Kill second scene!'); fibaro:abort(); else --здесь Ваша программа

end

ссылка

отвечен 18 Май '15, 23:08

Gulayev's gravatar image

Gulayev
1.5k113
процент согласия: 11%

Извините! Мне надо было только ЭТУ строчку и процитироать, вместо всей сцены. Потому я и не могу разобраться - что может быть причиной запуска нескольких сцен? Я то запускаю лишь одну....

ссылка

отвечен 19 Май '15, 09:36

Eduard1000's gravatar image

Eduard1000
12
процент согласия: 0%

В коде сцены присутсвует, например fibaro:call(lightID, 'turnOn') что будет приводить к запуску этой же сцены согласно %% properties 66 value

ссылка

отвечен 19 Май '15, 15:33

zodchij's gravatar image

zodchij
312
процент согласия: 50%

Ваш ответ
toggle preview

Следить за этим вопросом

По почте:

Авторизовавшись, здесь Вы сможете подписаться на обновления по этому вопросу.

По RSS:

Ответы

Ответы и комментарии

Основы размётки

  • *курсив* или _курсив_
  • **жирный** или __жирный__
  • ссылка:[текст](http://url.com/ "Суть вопроса")
  • картинка?![alt текст](/path/img.jpg "Суть вопроса")
  • нумерованый список: 1. Foo 2. Bar
  • чтобы добавить перенос строки в тексте, сделайте два переноса строки в редакторе
  • базовые теги HTML также поддерживаются

Теги к вопросу:

×166
×37
×14

Задан: 18 Май '15, 11:18

Просмотров: 1,642 раз

Отредактирован: 19 Май '15, 15:33

powered by OSQA