Пример совмещения "классического" выключателя света с датчиком движения

18 мая 2018, 16:46

Хочу поделиться примером реализации включения света датчиком движения Fibaro Motion параллельно с обычным выключателем. Задача стояла так, чтобы выключатель был в приоритете и при ручном включении света датчик уже не выключал свет автоматически.

Реализовано на контроллере Homey

используемые плагины: 

Better Logic
CountDown 

Fibaro 
Sun Events

И так приступим, переходим в раздел Settings, далее в настройки плагина Better Logic и добавляем переменную с произвольным именем, например motion тип Boolean

Затем переходим в настройки плагина CountDown и добавляем новый таймер с произвольным именем, например motion_timer

Далее нам потребуется создать 5 правил, для этого переходим в раздел Flow и создаём новое правило, для удобства можно создать папку и положить все правила в неё, собрав их в кучу для удобства.

Первое правило будет включать свет по датчику движения

Разберём его детальнее:

Первая колонка, здесь всё просто, сработал датчик движения

Вторая колонка, условия, столбик делится на 2 части, по сути они дублируют друг друга, но в первом варианте условие завязано на теге Civil Dark из плагина Sun Events (тег становится True после захода солнца и возвращается в False на рассвете, всё это с учётом геолокации и времени года), а второй вариант срабатывает на основании датчика освещенности в Fibaro Motion, но он оказался не стабильным, поэтому и появилось второе условие. Также в обоих вариантах есть условие проверки что свет в данный момент выключен и созданная ранее переменная motion в плагине Better Logic имеет значение false.

Если Один из вариантов условий соблюдается, то включается свет, останавливается ранее созданный таймер motion_timer в модуле CountDown, если он был запущен на этот момент и переменная motion в плагине Better Logic устанавливается на значение True.

А если ни одно из двух условий не может быть выполнено (например свет уже включен) то просто останавливаем таймер motion_timer в модуле CountDown.

Переходим ко второму сценарию, выключение света, при отсутствии движения

Разберём его детальнее:

Первая колонка - получена команда от Fibaro Motion что движение не обнаружено.

Вторая колонка, на этот раз один вариант условия, проверяем что свет включен и переменная motion в плагине Better Logic имеет значение True

Третья колонка - при соблюдении выше перечисленных условий запустить таймер motion_timer в модуле CountDown на 300 секунд

Третий сценарий ещё проще, После того как таймер отсчитал до 0 сек и не был остановлен новым обнаружением движения, проверить что переменная motion в плагине Better Logic имеет значение True (то есть срабатывал сценарий запуска по датчику движения) и выключить свет,

а переменную motion в плагине Better Logic установить на значение False.

Оставшиеся два сценария просто меняют значение переменной motion в плагине Better Logic на False, при включении или выключении света обычным выключателем, в данном случае за выключателем стоит Fibaro Dimmer 2.

В итоге логика работы получается такая:

Если свет был включен по датчику движения, то он горит до тех пор пока в комнате не пропадёт движение, если движение пропало, то запускается таймер на 5 минут, если в течение этих 5 минут опять появилось движение, то таймер останавливается, и вновь запускается если движение опять пропало. Если же в течение 5 минут движения больше не появилось, то свет выключается. Но если в любой момент времени щёлкнуть выключатель, то свет уже не выключится автоматически. То есть если включить свет выключателем, то первый сценарий не сработает, т.к. там есть условие проверки состояние света, включен или выключен, а следовательно переменная motion останется false и таймер на выключение не будет запущен.

Вот так относительно не сложно подружили 2 схемы включения света. Данный вариант опробовал в течение нескольких дней, работает нормально. Но если у кого-то есть идеи как упростить, буду рад услышать в комментариях.

Правило отлично работает и при удалённом включении света, через Siri/Homekit и любым другим способом, всё будет по аналогии с выключателем. Если включить свет через Homekit, то он уже не выключится автоматически.

Надеюсь данная статья кому-нибудь будет полезна!


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

  1. Олег Челбаев (sprut)

    Огонь;) спасибо автору )))

  2. Джабраил Хуршилов (djzabrail)

    Спасибо автору, то что нужно.

  3. Илья Гитлин (iGitlin)

    отлично, добавил в закладки - попробую как то адаптировать под 2х глазую схему.

  4. (stunt4man)
    (stunt4man) год назад

    Хорошая статья! У меня только, что после статьи Ильи про 2 газа, что после этой есть одно небольшое дополнение-вопрос: почему Вы не используете "аппаратный" таймер самого глаза? Меняя параметр "Motion alarm cancellation delay" в настройках самого глаза можно не создавать таймер  motion_timer и упростить FLOW( если глаз выключился то свет выключаем без проверки таймера) ? Для датчиков движения от Xiaomi, где нет этого параметра, сценарий идеален, а вот для других я бы упростил.. 

    • Александр Костерин (Akost)

      Привет, настройку глаза тестировал, но этот параметр за собой тянет много проблем, например ставим его на 5 минут. Мы были в зоне действия датчика, но ушли, выключив в ручную свет за собой, теперь если вернёмся в течении 5 минут, он нас не увидит, т.к. тревога по движению у него всё ещё активна, и свет не включит. А если бы это был отдельный таймер, а не параметр, то датчик бы нас заметил уже через 30 сек, т.к. дефолтный параметр 30 сек. Ну и согласовывать работу несколько датчиков движения удачнее через отдельный таймер, где срабатывание любого из датчиков будет этот таймер перезапускать. Поэтому использование отдельного таймера в итоге намного стабильнее.

  5. Геннадий Куракин (Onag)
    Геннадий Куракин (Onag) отредактировано год назад
    Комментарий был удален
  6. Алексей  Егоров (Aleksey_AE)

    Невероятно актуально. огромное спасибо! Думал как раз как подружить датчики xiaomi и выключатели.

  7. Сергей Цыганов (Tsvdonsk)

    очень спасибо!

  8. Сергей Цыганов (Tsvdonsk)

    а зачем отдельный плагин для определения времени суток? В колобке вроде есть свой параметр «в темное время суток»

  9. Евгений Макарьев (Evgeny)
    Евгений Макарьев (Evgeny) отредактировано год назад
    Комментарий был удален
  10. Евгений Макарьев (Evgeny)

    Отличная статья! очень помогла! Добавьте пожалуйста скрин настроек диммера?

  11. Роман Елизаров (FantomNotaBene)
    Роман Елизаров (FantomNotaBene) 10 месяцев назад

    Хочу внести свою лепту, почистить чутка - лишние элементы есть. 

    Проверка motion в conditions по окончании таймера не нужна, потому как таймер запускается только в том случае, если motion был == true. А если, пока шел таймер, щелкнули выключателем, таймер остановится/перезапустился, однако триггер "отсчет дошел до нуля" не будет запущен в таком случае.

    Так же, по окончании таймера не обязательно ставить переменную motion в false, ибо следующее включение света хоть "датчиком", хоть кнопкой все равно установит нужное значение.

    Сама задумка очень вкусная.

  12. (Voxen)
    (Voxen) 6 месяцев назад

    Подскажите как для fibaro switch сделать, там другие параметры не как в Dimmer

  13. Михаил Радьков (mike02)
    Михаил Радьков (mike02) 29 дней назад
    Очень полезная статья!
    Спасибо огромное!
    Не подскажите, можно ли установить проверку на включенный свет? Например, кто-то включил свет выключателем в душе и забыл его выключить. Как сделать, чтобы свет выключился автоматически, скажем, через час после работы реле?

    • Александр Костерин (Akost)

      Ну сделать то просто, если выключатель включен, то запустить таймер, если выключен, то остановить. Вопрос как быть если вышло 30 минут, а человек еще в комнате? Что в этом случае предлагаете делать?

      • Михаил Радьков (mike02)
        Михаил Радьков (mike02) 29 дней назад

        Я предложил бы поставить пару часов, чтоб наверняка) Это все равно лучше, чем свет будет всю ночь гореть (у меня такое очень часто).

        Можно ли при этом задавать условие - отсутствие движения? Ведь за пару часов в любом случае человек будет шевелиться или, если глаз не видит человека в душевой кабине, человек выйдет из кабины и глаз его увидит

        • Михаил Радьков (mike02)
          Михаил Радьков (mike02) 29 дней назад

          Просто мне кажется, что надо чтоб для этого был отдельный сценарий, именно для проверки "случайного" света. Так как стандартное время, по-моему, оптимальное 10 мин

        • Александр Костерин (Akost)

          Да все можно, на примере данной статьи переделывайте под себя, немного креатива и задача решена. Статья как пример, попробуйте и правьте под себя потом.

          • Михаил Радьков (mike02)
            Михаил Радьков (mike02) 29 дней назад

            Я правильно понял, что Лоджик слегка изменился и теперь его значения ставятся "равным да или нет"?

            Спасибо еще раз!

К списку статей

Тематические чаты

Похожие статьи

15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
14 ноября 2018, 06:43
Плагин для интеграции в Athom Homey дочерних zigbee-устройств, подключенных на координаторы deCONZ - RaspBee или ConBee.
01 ноября 2018, 09:27
Настройка Deconz USB стика ConBee от Dresden Elektronik в Hass.io и некоторые особенности эксплуатации
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
03 октября 2018, 22:03
Как собрать и настроить Hyperion Ambilight - адаптивную подсветку ТВ.
30 июня 2018, 12:17
Добавляем устройства управляемые по ИК через Broadlink RM3 Mini на примере кондиционера.
25 сентября 2018, 07:06
Делаем умный замок с интеграцией в HomeKit
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.