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

+7 495 204-27-80

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

ТЕМА: Автовыключение света по датчику движения Фибаро

Автовыключение света по датчику движения Фибаро 08 Июнь 2019 22:29 #26595

  • Bogdan
  • Bogdan аватар
  • Вне сайта
  • Новый участник
  • Vera Secure UI7
  • Сообщений: 14
  • Репутация: 0
Привет. Есть скрипт для Веры (см. ниже) по включения светодиодной ленты - не могу понять почему он четко выключает свет через время указанное в переменной period. Нужно чтоб от последнего срабатывания отсчет был. Такое мнение, что он вообще не видит следующие срабатывания датчика. Подскажите плиз, что не так?
Сцена запускается по тригеру датчика движения.
Цвет RGB, соответсвующий температуре за окном ++

local WiFiControler = 37
local InsideLight = luup.variable_get ("urn:micasaverde-com:serviceId:LightSensor1" , "CurrentLevel" , 9) or "0"
InsideLight = tonumber(InsideLight)

if InsideLight > 555 then
levelTarget = 85
elseif InsideLight <= 3 then
levelTarget = 20
else levelTarget = 3
end

local outsideTemp = luup.variable_get ("urn:upnp-org:serviceId:TemperatureSensor1" , "CurrentTemperature" , 20) or "0"
outsideTemp = tonumber (outsideTemp)
--outsideTemp = 3
local StatusMagicHomeLesn = luup.variable_get("urn:upnp-org:serviceId:SwitchPower1", "Status", WiFiControler) or "1"

if StatusMagicHomeLesn == "0" and InsideLight <= 5 then
luup.call_action("urn:upnp-org:serviceId:SwitchPower1","SetTarget",{ newTargetValue=1},WiFiControler)

if outsideTemp < -15 then
luup.call_action("urn:ceefin-mcvforum-com:serviceId:MagicHomeRGBW1","SetRGBW", { newRGBW = "0,0,220,0"}, WiFiControler)
end
if outsideTemp >= -15 and outsideTemp < -10 then
luup.call_action("urn:ceefin-mcvforum-com:serviceId:MagicHomeRGBW1","SetRGBW", { newRGBW = "0,150,255,0"}, WiFiControler)
end
if outsideTemp >= -10 and outsideTemp < 0 then
luup.call_action("urn:ceefin-mcvforum-com:serviceId:MagicHomeRGBW1","SetRGBW", { newRGBW = "190,255,255,0"}, WiFiControler)
end
if outsideTemp >= 0 and outsideTemp <= 15 then
luup.call_action("urn:ceefin-mcvforum-com:serviceId:MagicHomeRGBW1","SetRGBW", { newRGBW = "255,255,0,0"}, WiFiControler)
end
if outsideTemp > 15 and outsideTemp <= 25 then
luup.call_action("urn:ceefin-mcvforum-com:serviceId:MagicHomeRGBW1","SetRGBW", { newRGBW = "255,15,15,0"}, WiFiControler)
end
if outsideTemp > 25 then
luup.call_action("urn:ceefin-mcvforum-com:serviceId:MagicHomeRGBW1","SetRGBW", { newRGBW = "255,0,0,0"}, WiFiControler)
end
luup.call_action("urn:upnp-org:serviceId:Dimming1","SetLoadLevelTarget",{ newLoadlevelTarget = levelTarget},WiFiControler) -- общий уровень света
else
--- luup.call_action("urn:upnp-org:serviceId:SwitchPower1","SetTarget",{ newTargetValue=0},WiFiControler)
end

local period = 20 -- Seconds

function checkLastTrip()
local LastTrip=luup.variable_get ("urn:micasaverde-com:serviceId:SecuritySensor1", "LastTrip", 7) or os.time()
if (os.difftime(os.time(), tonumber(lastTrip)) >= period) then
luup.call_action("urn:upnp-org:serviceId:SwitchPower1","SetTarget",{ newTargetValue=0},WiFiControler) -- Turn off the light.
else
luup.call_delay ("checkLastTrip", period) -- Check when the sensor was last tripped every <period> seconds.
end
end

luup.call_delay ("checkLastTrip", period)

return true
Последнее редактирование: 08 Июнь 2019 22:31 от Bogdan.

Автовыключение света по датчику движения Фибаро 09 Июнь 2019 12:52 #26598

  • aov
  • aov аватар
  • Вне сайта
  • Живу я здесь
  • Сообщений: 1145
  • Спасибо получено: 87
  • Репутация: 5
Если не "спорт", мож тебя плагин DelayLight устроит? Или Reactor...
Играюсь...
Сейчас: Vera Edge, Vera Plus, Hubitat, MiHome, Tuya, Алиса, Alexa, Google Home

Автовыключение света по датчику движения Фибаро 09 Июнь 2019 19:12 #26600

  • Bogdan
  • Bogdan аватар
  • Вне сайта
  • Новый участник
  • Vera Secure UI7
  • Сообщений: 14
  • Репутация: 0
В принципе "Спорт" потому что имею навыки программирования и считаю этот способ наиболее гибким. Причину почему код не видит повторное срабатывание пока не пойму

Автовыключение света по датчику движения Фибаро 13 Июнь 2019 12:45 #26622

  • Moffus
  • Moffus аватар
  • Вне сайта
  • Живу я здесь
  • VeraPlus
  • Сообщений: 469
  • Спасибо получено: 54
  • Репутация: 8
Потому, что у глаза есть включение, настраиваемый параметр таймаута и выключение.
Между включением и таймаутом новых событий не шлётся.

Есть плохой путь - установить таймаут в секунду или менее. Заодно купить мешок-другой батареек в "глаз". :)

Есть хороший путь:
Разделить этот скрипт на 2 части.
1: Включение. Только включение. Вешать на событие Whenever "Глаз" detects motion whether is armed or disarmed
2: Выключение Whenever "Глаз" stops detecting motion whether is armed or disarmed
Таймаут - параметр "глаза".

Старайтесь делать атомарные модули - одно событие, одна реакция.
Если есть возможность использовать логику устройства - её и используйте.
Время создания страницы: 0.142 секунд