Корзина  (пустая) 0 руб.
Корзина  (пустая) 0 руб.
Корзина  (пустая) 0 руб.
Корзина  (пустая) 0 руб.

+7 495 204-27-80

Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА: Включение света в коридоре по датчику двери

Включение света в коридоре по датчику двери 23 Янв 2017 12:35 #20470

  • DrKirill
  • DrKirill аватар
  • Вне сайта
  • Гуру
  • FIBARO HC2 (RU)
  • Сообщений: 94
  • Спасибо получено: 9
  • Репутация: 0
Может кому пригодится для FIbaro HC2 LUA.
Сцена включает свет и отправляет PUSH при открытии двери.
Свет поддерживается во включенном состоянии по датчику движения который стоит над входной дверью.

Уже все работает, но функционал буду допиливать.
--[[
%% autostart
%% properties
111 value
119 value
%% weather
%% events
%% globals
--]]
 
local startSource = fibaro:getSourceTrigger();
local doorID = 111; -- ID датчика двери
local sensorID = 119; -- ID датчика движения
local lightID = 125; -- ID света
local pushNoteID = 159; -- ID push сообщения
local DoorOpenTime = fibaro:getModificationTime(doorID, 'value');
local SensorTime = fibaro:getModificationTime(sensorID, 'value');
local endTimer = 180;
local debug = true;
 
--Функция отладки
----------------------------------------------------------------------------------
Debug = function ( color, message, level)
  fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span")); 
end
 
--Функция таймера
----------------------------------------------------------------------------------
startTimer = function ()
if debug then
   Debug( "green", "Запущен таймер отключения на: "..endTimer.."сек."); 
end
local counter = endTimer;
while(counter > 0)
    do
        counter = counter - 1
        fibaro:sleep(1000)
    	if tonumber(fibaro:getValue(sensorID, "value")) > 0 then 
      		--if debug then
    		--	Debug( "green", "Обновляю таймер!");
			--end
      		counter = endTimer;
        end
    end
  	if debug then
    	Debug( "green", "Выключаю свет!");
	end
  	fibaro:call(lightID, "turnOff");
end
 
--Функция включения света
----------------------------------------------------------------------------------
turnOnLight = function()
  Debug( "green", "Включаю свет в прихожей!");
  fibaro:call(lightID, "turnOn");
end
 
--Функция счетчика сцен
----------------------------------------------------------------------------------
if (fibaro:countScenes() > 1) then
  Debug( "red", "Отмена, много экземпляров сцены = "..fibaro:countScenes());
  fibaro:abort();
end
----------------------------------------------------------------------------------
SceneTriggered = function()
--checkLights();
turnOnLight();
startTimer();
end
 
--Запуск сцены
----------------------------------------------------------------------------------  
if ( startSource["type"] == "other" ) then
    SceneTriggered();
--elseif ( startSource["type"] == "property" ) then
--  SceneTriggered();
elseif (tonumber(fibaro:getValue(doorID, "value")) > 0 ) then
  	if debug then
    	Debug( "green", "Открыта входная дверь!");
	end
  fibaro:call(38, "sendDefinedPushNotification", pushNoteID);
  SceneTriggered();
end
 
 
-- If it's been at least 10 seconds since the value was last modified
--if ((os.time() - lastModified) >= 10) then
--  fibaro:debug('It has been 10 seconds or more')
--else
--  fibaro:debug('It has been less than 10 seconds')
--end
FIBARO HC2 (RU)
Последнее редактирование: 23 Янв 2017 12:42 от DrKirill. Причина: Добавил контроллер.

Включение света в коридоре по датчику двери 23 Янв 2017 12:40 #20471

  • PhantoMM
  • PhantoMM аватар
  • Вне сайта
  • Завсегдатай
  • Vera_Edge
  • Сообщений: 195
  • Спасибо получено: 16
  • Репутация: 1
Это для какого контроллера?
Vera Edge x1 ; Fibaro FGS-221 x1 ; Fibaro FGD-211 x4 ; Fibaro FGS-211 x1 ; Danfoss LC-13 x2 ; Aeon Multisensor 4in1 x1 ; Fibaro RGBW x1 ; Fibaro FGK-104 x3 ; Z-Wave.Me Floor Thermostat x1 ; Fibaro_FGMS-001 x4 ; MySensor Relay x 1; MySensor Distance x 1

Включение света в коридоре по датчику двери 23 Янв 2017 12:45 #20472

  • DrKirill
  • DrKirill аватар
  • Вне сайта
  • Гуру
  • FIBARO HC2 (RU)
  • Сообщений: 94
  • Спасибо получено: 9
  • Репутация: 0
Добавил контроллер!
Пока много отладки и закомменченого кода, если кому интересно, вылью новый когда до релиза доведу?!

fibaro:call(38, "sendDefinedPushNotification", pushNoteID); - и в этом месте пока не знаю откуда 38 берется, скорее всего это айди пушера!
FIBARO HC2 (RU)
Последнее редактирование: 23 Янв 2017 12:49 от DrKirill.

Включение света в коридоре по датчику двери 23 Янв 2017 19:40 #20480

  • Diogen
  • Diogen аватар
  • Вне сайта
  • Новый участник
  • Сообщений: 15
  • Репутация: 0
Выкладывайте конечно, тема интересна.

Включение света в коридоре по датчику двери 25 Янв 2017 10:39 #20503

  • DrKirill
  • DrKirill аватар
  • Вне сайта
  • Гуру
  • FIBARO HC2 (RU)
  • Сообщений: 94
  • Спасибо получено: 9
  • Репутация: 0
Добавленно напоминание о том что забыли закрыть дверь.
--[[
%% autostart
%% properties
111 value
119 value
%% weather
%% events
%% globals
--]]
 
local startSource = fibaro:getSourceTrigger();
local doorID = 111; -- ID датчика двери
local sensorID = 119; -- ID датчика движения
local lightID = 125; -- ID света
local pushMsg = "Открыта входная дверь"; -- Текст push сообщения
local pushDeviceID = 38; -- ID телефона
local endTimer = 60; --Время до выключения в секундах
local debug = true;
 
--Функция отладки
----------------------------------------------------------------------------------
function Debug(color, message, level)
	if (debug == true) then
  		fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span")); 
	end
end
 
--Функция таймера
----------------------------------------------------------------------------------
function startTimer()
Debug("green", "Запущен таймер отключения на: "..endTimer.."сек.", "NOTICE"); 
local counter = endTimer;
while(counter > 0)
    do
        counter = counter - 1;
        fibaro:sleep(1000);
    	Debug("green", counter);
    	if tonumber(fibaro:getValue(sensorID, "value")) > 0 then 
    		Debug( "green", "Обновляю таймер!");
      		counter = endTimer;
        end
    end
  	turnOffLight();
end
 
--Проверка открыта ли дверь
----------------------------------------------------------------------------------
function doorIsOpen()
	if(tonumber(fibaro:getValue(doorID, "value")) > 0 ) then
    	return true;
    else
    	return false;
    end
end
 
--Функция включения света
----------------------------------------------------------------------------------
function turnOnLight()
  Debug("green", "Включаю свет в прихожей!");
  fibaro:call(lightID, "turnOn");
end
 
--Функция выключения света
----------------------------------------------------------------------------------
function turnOffLight()
	Debug("green", "Выключаю свет!");
  	fibaro:call(lightID, "turnOff");
  	return true;
end
 
--Функция счетчика сцен
----------------------------------------------------------------------------------
if (fibaro:countScenes() > 1) then
  Debug("red", "Отмена, много экземпляров сцены = "..fibaro:countScenes());
  fibaro:abort();
end
 
--Тело вызова функций сцены
----------------------------------------------------------------------------------
function SceneTriggered()
--checkLights();
turnOnLight();
startTimer();
  	if(doorIsOpen == true) then
		sendMessage("Слышь, дерь то закрой!");
  	end
end
 
--Отправка PUSH
----------------------------------------------------------------------------------
function sendMessage(pushMsg)
  fibaro:call(pushDeviceID, "sendPush", pushMsg);
end
 
--Запуск сцены по тригеру
----------------------------------------------------------------------------------  
if (startSource["type"] == "other") then
    SceneTriggered();
elseif (tonumber(fibaro:getValue(doorID, "value")) > 0 ) then
  Debug("green", "Открыта входная дверь!");
  sendMessage(pushMsg);
  SceneTriggered();
end
FIBARO HC2 (RU)
Время создания страницы: 0.138 секунд