Добавить в корзинуПозвонить
Найти в Дзене
Максим Миронов

Умный дом на роутере D-Link. Часть 4. Автоматизация, блочные скрипты. Управляем вентиляцией.

Всем привет! Для автоматического управления устройствами умного дома, в Domoticz имеется поддержка скриптов на Python или Lua, а так же "блочные скрипты". Об использовании последних я и хочу рассказать в данной статье. Понятие блочный скрипт относится к визуальному программированию. Программа составляется из блоков-картинок, похожих на пазлы. У каждого блока своя функция. Соединяя их друг с другом в нужной конфигурации мы составляем программу. Для примера настроим автоматическое управление вентилятором, чтобы регулировать уровень влажности в помещении. Допустим, что в нашем распоряжении есть датчик влажности и умная розетка, к которой подключен вентилятор. Нужно, чтобы система поддерживала влажность внутри помещения в диапазоне от 40% до 60%. Для составления блочного скрипта заходим в веб-интерфейс Domoticz, в верхнем меню нажимаем на "Setup", далее "More Options" и "Events". Откроется страница, где слева располагается список скриптов (пока пуст), оставшуюся часть раздела занимает т

Всем привет!

Для автоматического управления устройствами умного дома, в Domoticz имеется поддержка скриптов на Python или Lua, а так же "блочные скрипты". Об использовании последних я и хочу рассказать в данной статье.

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

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

Для составления блочного скрипта заходим в веб-интерфейс Domoticz, в верхнем меню нажимаем на "Setup", далее "More Options" и "Events". Откроется страница, где слева располагается список скриптов (пока пуст), оставшуюся часть раздела занимает таблица, в которой перечислены устройства, атрибуты которых можно задействовать в наших скриптах. Нажимаем на "плюсик" и выбираем "Blocky".

-2

После этого появляется инструментарий составления блочной программы.

-3

Отобразилась страница конструктора скрипта. Его интерфейс содержит кнопки "On/Off" для изменения рабочего статуса скрипта, поле ввода названия скрипта. Кнопки "Import" и "Export" позволяют выгружать и загружать код в скрипт. "Save" и "Delete", думаю понятно, что для сохранения и удаления скрипта.

Ниже располагается область составления скрипта. В левой его части набор программных блоков, рассортированных по категориям:

  • Control - содержит два блока условного выбора типа If-Do и If-Do-Else-Do, позволяющий строить конструкции с несколькими вариантами условий;
  • Logic - набор для составления логических выражений;
  • Time - хранит блоки для работы с временными параметрами;
  • Messages - для отправки уведомлений;
  • Security - изменение режима безопасности;
  • Debug/log - для записи данных в системный журнал;
  • Devices - содержит блоки, соответствующие подключенным устройствам, рассортированные по типу.

Итак, составим программу с такой логикой работы: если влажность выше 60%, то включаем вентилятор (розетку).

Для начала дадим нашему скрипту имя, которое будет лучше передавать смысл его работы. Вместо "Script #1" я написал "socket_on".

Нажимаем на "Control". Отобразятся доступные блоки, и курсором мыши перетаскиваем блок "If-Do" вправо, на поле составления скрипта.

-4

Далее нам понадобится блок сравнения. Берем его в разделе "Logic" и также перетаскиваем в область скрипта. Таким же образом возьмем и блок установки значений "Set", на следующей иллюстрации он находится в самом низу.

-5

Добавим блок с показателем влажности. Раздел "Devices", далее "Humidity".

-6

Затем блок управления розеткой. Снова "Devices" затем "Switches".

-7

Обратите внимание, что блоки устройств разбиты на группы по алфавиту в зависимости от имени устройства. Если у вас несколько устройств попадают в одну группу то следует добавить блок на поле составление скрипта, нажать на стрелочку справа от названия устройства и в выпадающем списке выбрать нужное устройство. У меня такое пока одно.

-8

Так, теперь нам нужны блоки значений. Влажность имеет значение цифровое, а состояние розетки - логическое (Да/Нет или ВКЛ/ВЫКЛ). В разделе "Logic" берем соответствующие блоки.

-9

Посмотрим, чего мы там набрали.

-10

Теперь все эти блоки нужно объединить. Одни скрепляем между собой как пазлы, вторые вставляем один в другой. Должно получиться так:

-11

Но нужно кое-что подправить. В блоке сравнения, где значение влажности, нужно поставить знак "больше", а в блоке для цифрового значения указать "60". Так же нужно проконтролировать, чтобы в блоке установки значений, розетке присваивался статус "On", т.е. "включено".

-12

Наш скрипт готов. Если влажность станет более 60%, то розетка включит подсоединенный к ней вентилятор. Теперь нажимаем на кнопку "On" в верхней части конструктора скрипта, а затем на "Save". Скрипт сохранился и появился в списке скриптов (слева на странице).

-13

Теперь нужно составить программу для выключения вентилятора при достижении нужного значения влажности. Она не будет сильно отличаться от предыдущей. Логика работы будет такой: если влажность меньше 40%, то выключить розетку.

Проделываем то же самое, что и в предыдущем примере, только в блоке сравнения ставим условие "меньше", значение влажности 40%, а в блоке установки значения вместо "On" ставим "Off". Вот так:

-14

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

В данном примере я старался рассказывать максимально просто, чтобы лишние детали не мешали восприятию информации. У нас получилось два скрипта, один на включение, второй на выключение вентилятора, но можно все эти действия объединить в один, если использовать блок условного оператора If-Do-Else-Do. Он также находится в разделе "Control", на его пиктограмме находится синий значок с шестеренкой.

-15

Создаем новый скрипт и переносим этот блок в рабочую область. Если нажать на шестеренку, то сверху основного блока отобразятся варианты конфигурации в виде двух маленьких блоков. Перемещаем блок с надписью "else if" и прикрепляем его снизу блока "if". Вид основного блока изменился как показано на иллюстрации ниже.

-16

Нажимаем опять на шестеренку, чтобы убрать варианты конфигурации, и добавляем уже знакомые нам блоки, чтобы получилось так:

-17

Один этот скрипт будет делать то же, что и два предыдущих.

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

На этом пока все.

Напомню, что ссылки на скачивание прошивок с "умным домом" для роутеров D-Link можно найти в Telegram-канале @dlink_ru_smart_home.

Другие статьи по этой теме теме:

Часть 1. Запуск системы Domoticz.
Часть 2. Подключение к Domoticz устройств Zigbee.
Часть 3. Настройка Domoticz для работы с MQTT.
Часть 5. Настраиваю управление отоплением на даче.
Часть 6. Удаленное управление со смартфона, программа IoT MQTT Panel.

Всем доброго здравия! Пока!