Будильник на OPENHAB. Управление нагрузкой. Правила OPENHAB.

Будильник на OPENHAB. Управление нагрузкой. Правила OPENHAB.

Сегодня я расскажу как с помощью openhab сделать будильник который включит розетку к которой подключён, у меня например чайник.
Теперь утром я просыпаюсь а у меня готов чай. Правда классно, и всё это сделано на OPENHAB MQTT.
Я расскажу как написать items и bindings и things на Openhab. Также я покажу правила, rules которые и будут управлять будильником.
Для работы я использовал беспроводные датчики умного дома. А всё это было собрано на ESP8266 MQTT. Были использованы запросы к брокеру и клиенту MQTT.
Сегодня Arduino я не использовал, а всё было сделано с помощью wifi модуля ESP8266 прошитому в программе ESPEasy  про которую я рассказывал в своих прошлых уроках.

Сегодня поговорим про время. Нет, мы не будем выводить часы на экран. Мы будем делать будильник. Ну и чтобы не было скучно, мы добавим к будильнику реле. Всё тоже реле из предыдущих уроков. Давайте посмотрим что получилось у меня. У вас конечно получится лучше. Показывать я буду на ХАБ панели. Ну и в конце мы немножко коснёмся встроенных виджитов которые я использовал в этом видео. 
Я вывел на экран стандартные часы, чтобы видеть время. Кнопку включения и выключения будильника. Кнопку включения, выключения реле к которой я подсоединил чайник. Этим реле можно пользоваться в двух режимах. 
В ручном режиме, то есть можно включать щёлкнув по экрану, и в качестве нагрузки при срабатывании будильника. При включении будильника также играет мелодия. Всё это будет описано в правилах OPENHAB.
Все эти виджиты показывают одно и тоже. Часы и минуты. И я их вывел на экран только для того чтобы показать различные варианты установки. Здесь всего два типа. Слайдер и переключатель, но у них есть огромное количество настроек и по этому они подойдут для любого дизайна страницы.
Как видите передвигая один ползунок, например часы, на других виджитах устанавливается такое время. Вообще без задержек изменения происходят и на других устройствах. Планшете и телефоне. Я снял видео этих изменений, но не стал их монтировать сюда, так что поверьте на слово.

А теперь давайте установим время будильника. Включаем кнопку режима работы будильника. Он окрашивается в красный цвет. Я для всех активных элементов сделал красный фон. И устанавливаем время срабатывания в 20 00. Будильник сработал – это можно не только услышать, но и увидеть. А ещё сработало реле и включило чайник. Мелодия у меня записана всего секунд на 30, а вот отключение реле произойдёт ровно через минуту. 
Потом я увеличу время. Хочу сделать так, что утром при срабатывании будильника включится чайник. После того как он вскипит и выключится, через некоторое время отключится и розетка. Так сказать двойная гарантия.

Теперь я опять просто по двигаю слайдеры чтобы убедиться в работоспособности скрипта. Как видите всё работает отлично.
Теперь я отключу кнопку включения будильника и установлю будильник на 20 02 и он конечно же не сработал. Это говорит о том что всё работает правильно. И этим кодом можно теперь поделиться с вами. Мне ведь не жалко. Я думаю, что вам тоже не жалко поставить лайк этому видео. Я ведь очень старался для вас.
А ещё у меня с прошлых уроков остались эти два реле. Вот и ими тоже надо пощёлкать. 
Это я вручную включил реле. 
Ну я думаю, что на этом хватит показывать работу, а надо переходить к созданию ITEMS ов написанию условий.
Будем делать всё на той же плате реле из прошлых уроков.
Для начала нам надо создать кнопку управления будильником. Она будет иметь два положения Включено и Выключено.
При Включенном положении - будильник будет работать, а при выключенном нет.
Для этого заходим в каналы Реле и пишем вот такой код.
Первые две строчки отвечают за время и имеют тип цифры.
А последняя нарисует нам саму кнопку, отвечающую за включение будильника. поэтому мы в название добавим слово Alarm. Заходим в её настройки подписываемся на топик «Статус». Теперь мы будем получать значения от брокера. Ноль при выключенном состоянии или единицу при включенном.
Теперь давайте откроем файл SITEMAP и выведем нашу кнопку и время в BASIC UI
Эта строчка кода отвечает за вывод кнопки. Иконку я установил солнышко.
Вот эти строки отвечают за вывод часов и минут. Это делает сэтпоинт. Здесь мы укажем, что часы будут в интервале от 0 до 23 часов, а в минутах от 0 до 59 минут. С шагом один.
Ну и в последней строчке будет переключатель, указывающий в каком положении сейчас реле. Иконка розетка.Так же щёлкнув по переключателю можно в ручную включить или выключить реле.


Вот мы и перешли к самому интересному. Правилам в OPENHAB.
В начале мы задаём имя правилу. Всегда давайте такое название, чтобы через какое-то время вы вспомнили что это и для чего применяется.
Теперь опишу структуру всех правил.

  • Когда условие верно. 
  • Тогда - сделаем это.
  • И в конце обязательно ставим END.

Тема крона очень большая, и если вам будет интересно, то можете поискать информацию сами. 
Я указал что крон должен срабатывать каждую минуту.
Здесь я создал цифровые переменные и присвоил им значения из ITEMS и текущее время.

А дальше идёт условие.
Если статус кнопки включения будильника ON и текущий час равен часу установленному в sitemap и текущая минута равна минуте установленной в sitemap, то отправить команду на включение реле и проиграть мелодию будильника. Файл мелодии должен находиться в папке Sound.
В противном случае – это когда хоть одно из трёх условий не верно, то выключить реле.


Вот так выглядит страница настройки ХАБ ПАНЕЛИ. Она вся состоит из виджитов. 
Если нажать на кнопку добавить виджит, то откроется страница с набором установленных виджитов. Но это далеко не все возможности. В OPENHAB очень большое сообщество и я уверен, что любое что вы не задумали уже было кем-то создано, надо только найти. Для этого надо нажать на кнопку Скачать больше, которая находится снизу в Пользовательских виджитах.
Повторюсь. Я здесь использовал только слайдеры и переключатели. Вот их и покажу. Что бы не затягивать видео, я не буду рассказывать, что и за что отвечает, там всё по русски и всё понятно. А просто быстро пролистаю то что сделал сам. Если вас что заинтересует, то вы можете остановить и посмотреть как у меня.
Практически для каждого виджита можно задать не только картинку, но и картинку фона.Я так сделал с будильником, а можно и свой фон подставить и будет очень красиво.
В часах, я установил минимум  0 и максимум 23, а в минутах 0 до 59. С шагом в единицу. Если поставить шаг 2, то цифры будут только чётные.
А в выпадающем списке нужно выбрать ITEMS к которому вы привязываете виджит. У меня это часы и минуты.
Так же для слайдера можно выбрать будет он вертикальным или горизонтальным. Так же здесь много дополнительных настроек. Все они понятные поэтому нет смысла рассказывать о них.
У переключателя настроек побольше, но они также понятны. Очень красивый эффект это Диапазоны. Можно выбрать разные цвета для интервалов времени. У меня есть один такой переключатель.
Поэтому я добавлю скорости и без остановок побежим дальше. 
На этом я заканчиваю это видео.
 

Скетчи