Как я пилю умный дом ч.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 минуты. Этого времени достаточно чтобы вода набралась и можно было включать снова. На самом деле эта функция реле очень облегчила жизнь. И не думаю что готовые решения могли бы предоставить мне такие возможности по такому же бюждету.

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

Умный дом

137 постов2.2K подписчика

Добавить пост