Быстрое отключение работы света по датчику в EasyHome

Долго же я шёл к мысли так сделать — целый год.

У меня дома светом управляет EasyHomePLC. В ванной комнате и туалете свет работает по датчику движения (обычный охранный Colt Quad) с задержкой 5 минут. Также есть выключатели импульсного типа, установленные внутри, которые, как правило, не используются.

Если мы посмотрим сводную таблицу освещения в инженерном интерфейсе, то увидим свет ванной и туалета:

Быстрое отключение работы света по датчику в EasyHome

Это С7 и С8. На каждый настроено по одному выключателю. И стоят галочки ДД, что означает, что эти группы света работают по датчикам движения с номерами, соответственно, 2 и 3. Если мы посмотрим свойства галочек активности датчиков движения, мы увидим, что работа датчика группы С8 зависит от бита 1 байта 676 в памяти контроллера.

Быстрое отключение работы света по датчику в EasyHome

Если в этот бит записана единица, то свет работает по датчику, если 0, то не работает. Поскольку не всем хватает 5 минут для мытья, я вывел на отдельное окно программы EasyHome на телефоне кнопки для отключения датчиков, которые завязаны как раз на эти биты галочек из сводной таблицы света. Вот такая получилась страничка:

Быстрое отключение работы света по датчику в EasyHome

Сейчас ванная и туалет работают по датчикам, а коридор (это включение света при открывании входной двери) — без.

Через год использования в таком режиме мне пришла в голову мысль сделать так, чтобы включение и выключение датчика происходили длительным нажатием выключателя. Вошёл в ванную, нажал на кнопку и пошёл мыться, не надо телефон искать. Почему мысль до меня шла так долго? Потому что я моюсь обычно быстро :)

Для настройки этого алгоритма нам надо влезть в Свободные Функции — это специальные возможности настройки контроллера EasyHome, которые позволяют реализовать в достаточно широких пределах разные такие штуки. Во многих контроллерах это реализовано через отдельные пользовательские скрипты, например, в Fibaro Home Center 2 — на языке LUA, а в EasyHomePLC несколько непривычным, но также функциональным способом.

В инженерном интерфейсе заходим в Настройки ПЛК — Свободные функции — Free Functions. В разделе Свободные функции есть ещё пункт Мультисцены — отдельный инструмент для создания произвольных последовательностей действий пи запуске сценария.

Свободные функции позволяют нам оперировать всей памятью контроллера, в которой хранятся данные обо всех настройках алгоритмов, состоянии входов и выходов. Нам выделено 200 байт памяти для создания собственных переменных типа флагов.

Если прощелкать список функций, то можно увидеть достаточно много возможностей.

Для начала мне надо определить, с какими переменными я имею дело. Бит, отвечающий за работу света №8 — это 676.1, его мы будем менять на противоположный при длительном нажатии на выключатель. Также мне нужно знать номер бита, отвечающий за состояние нужного мне выключателя, его нахожу через таблицу выключателей, это байт 1701, бит 5.

Нужный мне алгоритм — это всего две строчки кода, вот они:

Быстрое отключение работы света по датчику в EasyHome

Когда по адресу 1701.5 появляется единичка, запускается таймер на 2 секунды. Если я держу кнопку 2 секунды, то в бит 0 байта 1 свободной памяти записывается 1. Согласно второй строчке, если в этот бит записывается 1 (если он >0), то бит работы по датчику движения 676.1 меняется на противоположный.

Вот такая простая штука, немного упрощающая жизнь.

Loading

Умный дом или дом по уму
Добавить комментарий