Умный дом готовит нам завтрак. Серия уроков Умный дом своими руками.

Умный дом готовит нам завтрак. Серия уроков Умный дом своими руками.

Напишем программу на OPENHAB для Умного дома. Это будет будильник с приятной мелодией и функцией  по приготовлению завтрака.
Технологии умного дома всё больше проникают в нашу жизнь. Дом научился управлять теплом и освещением, контролировать присутствие или отсутствие хозяина дома. Различные датчики и приложения умного дома очень удобны и помогают нам в повседневной жизни. Приложения умный дом стали доступны для бесплатного скачивания для мобильных телефонов и планшетов.
Сегодня научим Умный дом готовить нам завтрак. Начнём с простого Яйцо в крутую.
Заводим будильник на определённое время. Он срабатывает и будит нас приятной мелодией, а ещё он включает реле, которое включает электрическую плиту, на которой стоит кастрюлька с яйцом. В ней размещён цифровой термометр DS18B20 который будет передавать температуру воды в кастрюльке, в Умный дом. Когда вода закипит включится таймер на 5 минут, а когда время закончится реле отключится и ваш завтрак готов. Всё это будет сделано благодаря openhab правилам. И модулю ESP8266 настроенному в программе ESPEasy. Умный дом своими руками – это не только просто, но и интересно. Давайте построим свой умный дом. Дом своей мечты. 
Мы будем использовать датчик температуры DS18B20 который подключим к ESP8266 и настроим его в программе ESPEasy. Связь с OPENHAB будет происходить по протоколу mqtt, а управление нагрузкой в виде реле будет реализовано с помощью правил RULES. Следуя урокам которые размещены на этом канале, вы построите своими руками умный дом. В следующих уроках мы напишем правила rules которое будет отправлять умный дом сообщение вам на email или смс уведомление. Программа умный дом - это не не сложно и очень интересно. Подписывайтесь на канал ARDUINO ДЛЯ НАЧИНАЮЩИХ

Ваш Умный дом разбудит с утра и приготовит вам завтрак.
Сегодня научим Умный дом готовить нам завтрак. Начнём с простого Яйцо в крутую.
Заводим будильник на определённое время. Он срабатывает и будит нас приятной мелодией, а ещё он включает реле, которое включает электрическую плиту, на которой стоит кастрюлька с яйцом. В ней размещён цифровой термометр DS18B20 который будет передавать температуру воды в кастрюльке, в Умный дом. Когда вода закипит включится таймер на 5 минут, а когда время закончится реле отключится и ваш завтрак готов.

Если вам это интересно, то давайте посмотрим, как это сделать. Для начала я покажу что у меня получилось, а потом расскажу, как это сделать.

В мыслях – это выглядело намного симпатичнее. Но что получилось, то получилось.
Сначала нажимаем кнопку включение, выключение будильника. Если кнопка не активна, то будильник выключен. Затем устанавливаем время срабатывания. Я установил время на 15 часов, 15 минут. 
Качество видео съёмки на планшете получилось не очень, поэтому я вывел на экран скринкаст с монитора.
Это обычная хаб панель OPENHAB

Теперь подождём 15 секунд до включение будильника.
Видим, что ровно в 15 15 сработал будильник и включил реле управляющее эл. плитой. Также сработала мелодия будильника. Мелодию вы можете установить любую. Для этого вам надо положить её в папку sound и прописать название файла в правилах RULES.
Я сделал так чтобы звук в начале увеличивался, а в конце мелодии плавно уменьшался. Сделал это в музыкальном редакторе, но можно было бы сделать это программно. Написав цикл.

Ну вот теперь осталось дождаться пока температура в кастрюле на поднимется до 90 градусов и не включит чайник. Я выведу укрупнённый индикатор температуры. Можно было бы выбрать любой другой или добавить разные эффекты к этому. Но это вы сможете уже сделать сами. Различные варианты вы можете посмотреть в видео про будильник.

Здесь я сделал вывод температура с изменяющимися цветами.
Если температура до 30 градусов, то она будет в зелёном секторе и выводиться зелёным цветом.
До 60 градусов – розовым, а свыше красным цветом.

Как можно увидеть, воды начинает понемногу нагреваться, что мы и видим на индикаторе. Скорость воспроизведения видео я увеличил в несколько раз. Весь процесс занял у меня больше 15 минут, так что если будете повторять, то учтите это и ставьте будильник на более раннее время, а то останетесь без завтрака. Или опоздаете на работу или учёбу.

Осталось совсем немножко до температуры 90 градусов при которой включится реле которое в свою очередь включит чайник. Всё это прописано в правилах OPENHAB которые я опишу чуть дальше в этом видео. Вы сможете там изменить условия и установить свои значения. И для этого не надо быть программистом так как это простой текстовой файл.

А немного доработав этот пример вы сможете управлять любым устройством где надо определять температурой воды. Например котёл или бойлер и выполнять разные действия в зависимости от температуры.

Ну вот наконец-то температура достигла заданного уровня в 90 градусов. Включился чайник и сработал таймер на пять минут. Через 5 минут. Это время я установил в правилах отключатся все реле и выключится кнопка включения будильника.
Как всё это сделать я расскажу чуть дальше в этом видео. А пока не сработал таймер вы можете поставить лайк этому видео и написать комментарий что вам понравилось или наоборот не понравилось. Этим вы поможете в развитии этого канала. 
Также вы можете написать про что бы вы хотели увидеть видео в следующих уроках. 

Пару слов про цифровой датчик ds18b20. Это очень точный и хорошо зарекомендовавший себя термометр. Диапазон измеряемых температур от – 55 градусов до +125 градусов. У меня есть видео где я его не только кипячу, но и потом кладу в морозильную камеру. 
А ещё так как каждый термометр имеет свой адрес, то несколько таких датчиков можно соединить всего одним проводом и контроллер поймёт с какого датчика идёт сигнал.

Вот так за разговорами мы и не заметили, что таймер отключил все наши устройства.

Для сегодняшнего примера нам понадобятся.

  • Модуль реле,
  • цифровой датчик температуры DS18B20 
  • модуль ESP8266.

Сейчас я коротко покажу процесс настройки модуля ESP8266, если вам что-то будет не понятно, то вы можете посмотреть более подробное видео о прошивке модуля ESP8266 программой ESPEasy, и установке протокола MQTT для связи с Умным домом построенном на OPENHAB.

Установим датчик температуры DS18B20, чтобы не повторяться, я не буду подробно рассказывать как это сделать. Если что не понятно, то посмотрите вот это видео, так подробное всё описано.

•    Заходим по ip адресу, что вы указали при прошивке модуля ESP8266. 
•    Вводим пароль если вы его задали.
•    Переходим в DEVICE и добавляем датчик температуры.
•    Выбираем из выпадающего списка DS18B20
•    Заполняем поле Имя. 
Так как у меня это уже 3 датчик в системе, то я приписываю ему индекс 3. Если у вас он первый, то вы можете ничего не указывать или написать 1. Просто дальше в примере я буду везде указывать имя DS18B20 3, вам же надо будет указать свои данные. Или можете назвать так же, тогда вам ничего менять не придётся.
Включаем его, указываем к какому gpio он подключен. В моём случае к 13.
Ставим галку отправлять в контроллер.
Интервал я указал 5 секунд.
Количество знаков после запятой я оставил без изменений. 2.
Нажимаем отправить и нам выводят дополнительные поля.
Обязательно должен быть адрес. Если он не определился, то надо проверить подключение.
В поле разрешение установим максимальное 12 бит.
Сохраняем и видим что у нас отображается наш термометр и он уже показывает температуру. Можете проверить подышав на него.

Теперь давайте создадим датчик температуры в openhab.


нам понадобятся 4 файла из архива.

Сначала откроем файл THINGS.
Я уже много рассказывал что и за что отвечает. Наверное уже надоело одно и тоже.
Напишите в комментариях надо ли повторять или сделать отсылку к предыдущим видео. А пока повторюсь.
В первой строке мы соединяемся с брокером MQTT и это единственное место где надо ввести свои данные, в остальном если вы делали как и я то достаточно скопировать эти файлы и всё должно заработать. Отправляем своё состояние В сети мы или нет.
Теперь создаём каналы для вывода статуса, кнопки включения и выключения будильника.
Температуры с датчика ds18b20 и кнопки включения 2-х реле. Для отслеживания состояния и для ручного включения и выключения реле.


Теперь откроем файл ITEMS.
Здесь я создал Itemsы для нашего устройства и подписался на топики.


Теперь откроем файл sitemap. 
Вот так выглядит sitemap в BASIC UI.
В первой строчке показываем статус. Голубой – это значит в сети, красный офлайн.
Кнопка включения будильника. 
Настройка будильника. Установка часов и минут.
Температура с датчика ds18b20. Если больше 50 градусов, то красная, а меньше черная.
И кнопки плита и чайник.


Ну и теперь самое интересное. Файл rules.
Здесь я создал 2 правила.
Одно для будильника и включения первого реле. Отвечающего за электрическую плитку. И звукового сигнала будильника.
Это правило сработает по крону. Который срабатывает каждую минуту и ждёт когда сработает условие.
Кнопка будильника включена.
Минуты совпадают с установленными
И ЧАСЫ ТОЖЕ СОВПАДАЮТ.
А ещё я ввёл переменную флаг. И присвоил ей значение 0.
Если первое условие сработало, флаг изменит своё значение на единицу.

Второе правило сработает если флаг равен единице и температура будет больше 80 градусов.
Включится второе реле, которое включит чайник, а так же включится таймер на 5 минут. 
Через 5 минут отключатся оба реле и кнопка включения будильника.
Флаг снова станет равен 0 и можно снова включать и устанавливать будильник.
Ну вот как то так. Получилось. Пишите было ли полезно это видео и про что делать следующие.

Теперь подробнее рассмотрим файл THINGS.
В первой строчке мы указываем привязку к брокеру MQTT. Это единственная строчка где вам придётся вбивать свои данные, если вы будете использовать мой архив с кодом к этому уроку. А дальше подписываемся на топик из которого будем получать данные от брокера о статусе модуля ESP в каком он состоянии. ONLINE или OFFLINE. 

Ниже создаём каналы.
Эта строчка отвечает за карал температуры для датчика. 

Перейдём в PAPER UI. В канал датчика DS18B20 температура. И видим что он подписан на топик для получения температуры.

Теперь откроем ITEMS
В первой строчке мы задаём Статус.
Во второй - Температуру.
Температуру выводим с одним знаком после запятой. И в конце дописываем знак Цельсия.
Первая строчка выводится как текст, остальные как числа.

Ну и последний  это sitemap – это как будет выглядеть в BASIC UI или на экране мобильного телефона.

Температура при кипении будет показана красным цветом, в другом случае чёрным.

Подключим модуль реле.
Если что не понятно, то смотрите видео про подключение реле. Ссылка вот здесь.
Даём имя реле RELAY_1 и если оно у вас не первое то порядковый номер.
Включаем, также включаем подтяжку.
Указываем к какому gpio подключен.
Небольшая задержка от дребезга.
И галка отправлять в контроллер.
Видим, что реле отображается и имеет статус 1, то есть высокий уровень при выключенном состоянии. Так как мы подключили подтягивающий резистор.

Теперь в адресной строке наберём такую команду. IP адрес должен быть ваш.

192.168.1.111/control?cmd=GPIO,13,0
РЕЛЕ ВКЛЮЧИТСЯ 

192.168.1.111/control?cmd=GPIO,13,1
РЕЛЕ ВЫКЛЮЧИТСЯ 

Теперь добавим реле.
Заходим в PAPER UI, в INBOX. Нажимаем +. Выбираем MQTT Binding и жмём  добавить в ручную.
Здесь выбираем GENERIC MQTT Thing и создаём новую Вещь. Пишем название. Название должно состоять из имени что вы назвали ваш ESP когда прошивали его прошивкой ESPEasy и номера который тоже там указали. 
Теперь связываем эту вещь с москито брокером.
Сохраняем. Теперь выбираем её из списка и создаём каналы.
Для начала нам надо выбрать тип канала. Их много, но нам нужен on off Switch. Теперь прописываем его ID
Оно состоит из название вещи и дополнительной цифры. Для первого реле я указал цифру 1.
Теперь пишем статус топика для этого канала и команду для него которая состоит из имени ESP и номера вывода к которому присоединено реле. У меня это 13 ножка. 
Теперь пишем значения которые будут отправлены подписчикам топика. При включённом реле это 0, а при выключенном 1. 
Мы видим, что у нас теперь создан канал. Теперь надо скопировать адрес топика MQTT брокера и вставить его в файле items.

Теперь понажимаем кнопки. Реле должно щёлкать. Всё должно работать.

В уже созданном файле ITEMS расскомментируем строчки отвечающие за реле.
Все примеры вы потом сможете скачать единым архивом с сайта. Ссылка будет в описании.
Код состоит из вот такой строки.
SWITCH, Служебного названия, Описания которое вы увидите в интерфейсе, и ссылке на канал.
Теперь перейдём в sitemap и расскомментируем эти строчки.
Теперь установим будильник. Я опять кратко расскажу как это сделать, если что-то вызывает затруднения, то смотрите видео про Будильник. Ссылка будет вот здесь.Там я подробно рассказал про будильник и про вывод виджетов в ХАБ ПАНЕЛИ.

Этим реле можно пользоваться в двух режимах. 
В ручном режиме, то есть можно включать щёлкнув по экрану, и в качестве нагрузки при срабатывании будильника. При включении будильника также играет мелодия. Всё это будет описано в правилах OPENHAB.

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

И время таймера. Я установил 5 минут, после чего реле отключит плиту и завтрак будет готов.
Вы также можете подключить чайник. Как это сделать смотрите видео про Будильник. Для этого вам понадобится ещё одно реле для включения чайника.

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

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

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

В часах, я установил минимум  0 и максимум 23, а в минутах 0 до 59. С шагом в единицу. А в выпадающем списке нужно выбрать ITEMS к которому вы привязываете виджит. У меня это часы и минуты.

Скетчи