Серия «Как я пилю умный дом»

52

Как я пилю умный дом ч.2

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

Основными вопросами был:

Какая задача стояла изначально? Сформирую несколько проблем, которые хотелось решить:

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

  2. Так же на участке есть несколько емкостей с водой, и бывали случаи, когда забывали выключить насос и вода начинала вытекать.

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

  4. Как наверное в любом СНТ, бывают случаи отключения электричества и если отключение долгое, то нужно что-то решать с холодильником, увозить продукты. Хотелось сделать уведомления в виде смс или телеграмм сообщений.

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

Почему не использовал Home assistant? (ПО для связывания умных устройств и управления ими)
На самом деле, таких систем великое множество и выбирать есть из чего. У всех есть плюсы и минусы и самым распространенным наверное является Home assistant. Была идея использовать его в качестве основной системы, но на руках был только Raspberry pi zero W. который я купил в 2021 году за 700р. и которому как раз нашлось применение.

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост

У него на борту всего 512 МБ оперативной памяти. И что-то тяжелое он однозначно не потянет. В комментариях писали, что устройств с 1 гб ОЗУ для всего хватает, но почитав тематические форумы понял, что нужно минимум 2 гб, даже если не применять большое количество плагинов.
И напомню, что я еще в процессе работ и не сделал даже половины из намеченного. Возможно в будущем обзаведусь каким-нибудь мини-сервером, желание есть.

Так же были комментарии, что готовые решения вышли бы дешевле. Возможно это так, но у готовых решений ограничен функционал и удовлетворить все хотелки врятли бы вышло.

Теперь обо всем по порядку

Остановились мы на том, что объединили устройства в одну сеть и подключили к MQTT брокеру. Теперь начнем с управления с телефона. Для этого подойдет любое приложение, которое может получать и отправлять MQTT сообщения. У всех них есть плюсы и минусы, можно выбрать любое, которое понравится фукционалом и визуально. Я остановился на IoT MQTT Panel.
После настройки в нем подключения к брокеру, необходимо добавить нужные вам кнопки, графики, индикаторы состояния и т.д.

Первым делом я добавил одно реле, которое будет управлять насосом и уже прошил в Tasmota.
Контроллеры ESP имеют так называемые GPIO, порты ввода/вывода, к которым подключаются датчики, кнопки, реле. Здесь так же не буду углубляться, скажу только что в готовых устройствах само реле привязывается к одному из GPIO и в настройках Tasmota нужно настроить режим его работы как Relay.

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост

Теперь можно управлять этим реле по MQTT по беспроводной связи. Напомню: для общения по MQTT используются топики (Topic - условно тема сообщения) и само сообщение. Для управления реле нам нужно отправить на него MQTT сообщение которое выглядит следующим образом:
cmnd/relay1/POWER ON, где

relay1 это название устройства в настройках Tasmota
POWER это выход устройства relay1. Если на этом устройстве несколько реле можно управлять ими отдельно используя POWER1, POWER2 и т.д.
ON - наше сообщение для включения реле, может быть OFF для отключения или TOGGLE для переключения.

В ответ на эти сообщения Tasmota отправляет брокеру состояние данного выхода в топик stat/relay1/POWER с сообщением ON или OFF

В приложении, в поле Topic пишем cmnd/relay1/POWER
Payload ON - ON
Payload OFF - OFF
Subscribe Topic, это топик, подписываясь на который мы будем получать актуальное состояние нашего реле. В нашем случае stat/relay1/POWER

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост

Ну и дальше на ваше усмотрение можно выбрать разные иконки, цвета. Можно включить запрос перед отправкой сообщения, который защитит от случайных нажатий. В конечном счете у нас появится первая кнопка.

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост

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

Теперь мы можем включать устройства с телефона в домашней сети. Двигаемся дальше.
В процессе поиска системы для автоматизации всего что у меня будет, наткнулся на Node-red. Дальше речь пойдет о нем. Ни разу не пожалел о своем выборе, так как система может построить практически все сценарии, которые могут придти в голову. Оправка и получение данных по MQTT, работа с Telegram ботами, скачивание и отправка в интернет любой информации, интеграция с Алисой, Zigbee, SmartTV (по крайней мере с моим LG на WebOS), работа с почтой, ModBus, SNMP и многое дрегое. А строится все управление путем создания так называемых Нод и их соединения. К тому же абсолютно бесплатна и не требовательна к ресурсам.

И так я начал решать свою первую задачу с насосом. Напомню, что вода в скважине, после непродолжительной работы насоса заканчивается и нужно было сделать периодическое включение/отключение насоса. Но это время всегда разное. В какие-то дни можно качать по 10 минут, а в какие-то вода заканчивалась через 2-3 минуты. То есть нужно оставить возможность регулировки интервалов включения.

Сначала надо настроить приложение чтобы оно отправляло сообщения с разными цифровыми значениями на нужный топик. Для этого в приложении есть виджет Slider (ползунок).

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост

Нужно задать топик для отправки. Его будет считывать Node-red, поэтому мы можем написать все что угодно. Например control/relay1. Payload min и payload max это крайние состояния ползунка. Для себя я сделал от 0 до 10 это мои минуты для управления. Slider step это шаг значений. Factor это наш множитель, который будет применяться к нашему числу для отправки. Unit просто обозначение наших единиц на виджете.

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост

Теперь с помощью приложения мы отправим брокеру сообщение с топиком control/relay1 и значением от 0 до 10. Нужно обработать его в Node-red и отправить на реле. Переходим в Node-red. Его установка подробно описана на сайте, ее описывать не буду. После установки переходим на страницу его настройки по ip-адресу. Web-интерфейс выглядит так

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост

Слева доступные ноды. Они выставляются на рабочую область и соединяются линиями. Есть ноды со входом, есть ноды с выходом, есть ноды у которых есть вход/выход. Немного про ноды

  • Switch позволяет разделять пути для сообщения, что-то вроде условия IF в языках программирования.

  • Delay добавляет задержку сообщениям или служить как фильтр выдавая сообщения определенный промежуток времени.

  • Trigger позволяет отправлять сообщение через определенный промежуток времени если не было "Стоп" сообщения.

  • Inject запускает внесенное сообщение вручную, служит для отладки. Но так же может отправлять сообщения по расписанию или с определенным интервалом.

  • Function для обработки сообщений с помощью ЯП JavaScript

Debug выводит сообщение в окно Debug, в правом краю окна. Служит для отладки.

и многие другие, с разными функциями.

Для получения сообщений MQTT используется нода mqtt in, для отправки mqtt out. После добавления ноды mqtt in в ее свойствах указываем параметры брокера. Добавляем нужные ноды и нажимаем Развернуть. Если ноды mqtt настроены правильно, то под ними появится надпись connected или подключен.

Как я пилю умный дом ч.2 Esp32, Esp8266, Home Assistant, Умный дом, Длиннопост


Теперь если сменить положение ползунка в приложении на нужное количество минут, насос будет включатся на заданное время и останавливаться на 4 минуты. Этого времени достаточно чтобы вода набралась и можно было включать снова. На самом деле эта функция реле очень облегчила жизнь. И не думаю что готовые решения могли бы предоставить мне такие возможности по такому же бюждету.

В следующих постах расскажу как делал отключение насоса по поплавкам в баках, получал события от камер и планах на будущее.

Показать полностью 8
1618

Как я пилю умный дом ч.1

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

Началось все с того, что я зачем-то заказал 2 умных реле на Aliexpress. Типа вот таких:

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

Эти реле привязываются через приложение к облачному серверу и позволяют управлять через телефон включением и отключением нагрузки. Так же можно создавать сценарии на включение/отключение по времени. Я отложил их в дальний ящик и благополучно про них забыл, пока не наткнулся на просторах интернета на прошивки Tasmota для таких реле. Вкратце расскажу о начинке:
Наряду с известными всем микроконтроллерами Arduino есть такие контроллеры как ESP8266, ESP32 и им подобные.

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

Они недорогие, производительные и их легко купить. К ним можно подключать кнопки, датчики, реле и прочее. И эти же контроллеры устанавливают во многие умные устройства, включая реле которые я купил. Это я понял вскрыв корпус реле и осмотрев плату.

Теперь о программной части: на данные контроллеры устанавливаются разные прошивки. Можно установить microPython, можно программировать на них с помощью среды разработки для Arduino. А можно устанавливать готовые прошивки, которые сильно упрощают работу с устройством. В эти прошивки уже встроен Web интерфейс, работа с беспроводными сетями и многое другое. Одна из них это Tasmota и есть несколько довольно простых способов прошить ее на ESP. Готовые модули ESP уже имеют разъем MicroUSB, для голых плат придется приобрести программатор.

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

Следующие фото взял из интернета, но у меня было точно так же.

Так выглядит внутрянка реле:

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

Синяя перпендикулярная плата как раз та, на которой ESP8266.

Это она же с обратной стороны:

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

В правой нижней части видно контакты нашей целевой платы

К этим контактам нужно подпаять провода, которые в последствии подключатся в программатор

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

Питание 220В на плату подавать не нужно. Контроллер возьмет питание от программатора. Только будьте внимательны, сам контроллер ESP питается от 3,3В. А на программаторе может быть выход только 5В. Тогда нужно будет обеспечить 3,3В от другого источника. Подробно здесь этот вопрос описывать не буду.

После смены прошивки и подключения к Wi-Fi прошивальщик сам отправит нас по нужному ip-адресу и мы окажемся на главной странице нашего устройства

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

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

Управлять включением/отключением реле из WEB интерфейса и в домашней сети мы теперь можем. Передо мной встали несколько вопросов:

  1. Как заставить устройства общаться между собой.

  2. Управление устройством через приложение, получать от него обратную связь.

  3. Сделать автоматизацию, управление по сценариям и событиям в целом.

  4. Удаленное управление из интернета.

Побродив по интернету понял что нужно идти в сторону протокола MQTT. Это протокол передачи данных между устройствами с помощью коротких сообщений.

Если коротко, то каждое устройство может рассылать и получать определенные топики вида
/статус/устройство/№реле "состояние" или команда/устройство/№реле "действие".
Для того чтобы устройства могли общаться между собой им нужен сервер. Слать сообщения напрямую они не могут. Применимо к MQTT сервер называется Брокер

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

Но брокер сам по себе не управляет устройствами, а лишь является связующим звеном, хранит и передает сообщения. На что поставить брокер? Так как для него не требуется больших вычислительных способностей я решил установить его прямо на роутер. Так как роутер всегда включен и к нему же подключаются беспроводные устройства. Если есть какое-то устройство которое будет работать 24/7 и управлять умным домом, можно воспользоваться им.

У меня уже имелся простенький роутер с 4G модемом. ZBT1626

Как я пилю умный дом ч.1 Умный дом, Esp8266, Esp32, Длиннопост

Прочитав инструкцию на 4pda установил на нее кастомную прошивку OpenWRT. И затем установил на него брокер Mosquitto. В настройках Tasmota вводим ip-адрес mqtt брокера и теперь наши устройства могут общаться меджу собой. В следующих постах расскажу подробнее о настройке MQTT, из чего делал сервер умного дома и какие устройства уже есть в работе

Показать полностью 7
Отличная работа, все прочитано!