Товары из Китая

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.


Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Для начала — предупреждение. Мне лично умный дом не нужен. Какие-то его элементы в хате имеются, но не особо заметны. Икеевская подсветка под кухонными шкафами с Zigbee удачно замаскировалась под обычное дистанционное управление. Управление подъемными воротами вполне допустимо — гаражом супруга не пользуется, поэтому ей все равно. А вот подогрев полов в душе ее уже допекает — расписание нагрева и прочие плюшки устанавливаются телефоном через Bluetooth, и это ей уже не нравится. Поэтому дальнейшее повествование имеет больше теоретический характер — а вдруг кому-то надо?

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

Основой дома будет Home Assistant — наверно, самая удобная платформа для расширения.

У нее есть возможности установить аддоны — этим и займемся для начала. Понадобится ESPHome. Заодно установим и Terminal & SSH — в жизни пригодится.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Теперь нам нужно прошить ESP8266 — первый раз это придется сделать при помощи проводов, все дальнейшие модификации можно будет выполнить через WiFi. Для программирования понадобится преобразователь USB-serial, но это описано на каждом углу.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

У меня имеется программатор с пого-пинами, который позволяет запрограммировать не запаянный модуль ESP-12 или уже впаянный. И еще полезный адаптер, который по сравнению с распространенным на Али, имеет все необходимые компоненты и даже кнопку сброса. При этом он еще и немного уже. Можно завидовать 🙂

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Программное обеспечение для прошивки не понадобится вообще, все делается через броузер, поддерживающий USB. Google Chrome вполне пойдет. Заходим на сайт web.esphome.io и следуем инструкциям — устанавливаем первоначальную прошивку и конфигурируем устройство под свою сеть.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Не забудьте перед программированием перевести ESP8266 в режим загрузки, если у вас вместо программатора простой преобразователь и кнопки. И сбросить после программирование — иначе установить сеть не получится.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Теперь наше устройство видит роутер и его даже попинговать можно.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

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

Супер-пупер реле собирается строго из того, что нашлось в хламе. А нашелся дешевый маломощный преобразователь с Али, понижающий преобразователь — их продавали пучками на e-bay еще в то время, когда Али и не существовало. Пара самых заурядных реле, датчик температуры DS18B20, который наверняка завалялся у каждого уважающего себя Плюшкина. Ну и датчик движения — тоже частый гость в хламе.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Но нашего устройства нет в списке! Не беда, добавляем:

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Меняем автоматически присвоенное малоинформативное имя на что-то другое.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

ESPHome создает для нашего устройства файл, который пока ничего не делает, но может выдать лог. Что этот файл значит — даже не спрашивайте, это, наверно, какое-то колдунское заклинание.

esphome-web-179fe4.yaml
esphome:

name: esphome-web-179fe4
friendly_name: Smart relay
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "hcf6/cl1EdJhm5cEkYwXPnvEoMBur98Uuz09pT1sxYg="
ota:

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esphome-Web-179Fe4"
password: "bgHP6dGKz9rn"
captive_portal:

Создаем новое устройство в Home Assistant.

В конце этого файла добавляем первую функциональность — наше первое реле

switch:

- platform: gpio
name: "Relay #1"
icon: mdi:power
pin: GPIO14
inverted: no

И случилось чудо — появилась кнопка для управления реле и она даже работает!

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

На радостях добавляем еще одно реле:

switch:

- platform: gpio
name: "Relay #1"
icon: mdi:power
pin: GPIO14
inverted: no
- platform: gpio
name: "Relay #2"
pin: GPIO12
inverted: no
icon: mdi:power-socket-de

Иконки для устройств, если рисуемые по умолчанию не устраивают, берем отсюда.

Просто пишем строку с наименованием иконки

icon: mdi:power-socket-de

остальное произойдет само.

Добавим еще и пищалку за компанию, но ограничим время пищания, дабы сильно не доставала:

switch:

- platform: gpio
name: "Relay #1"
icon: mdi:power
pin: GPIO14
inverted: no
- platform: gpio
name: "Relay #2"
pin: GPIO12
inverted: no
icon: mdi:power-socket-de
- platform: gpio
pin: GPIO13
id: buzzer
name: "Buzzer"
icon: "mdi:bullhorn"
on_turn_on:
- delay: 1000ms
- switch.turn_off: buzzer

Теперь добавим измерение температуры, у вас же завалялся ненужный DS18B20?

Для начала, нам нужен адрес имеющегося у нас датчика.

Добавляем в yaml файл вот такие строки

dallas:

- pin: GPIO5
update_interval: 5s

Теперь можно посмотреть лог с адресом

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

и добавить термометр:

dallas:

- pin: GPIO5
update_interval: 5s
sensor:
- platform: dallas
address: 0xba00000013d74228
name: "Relay temperature"

— Сама меряет, — сказал молодой человек, передавая астролябию покупателю, — было бы что мерять.

Ну и под конец, делаем, как казалось, самое простое — подключаем датчик движения:

binary_sensor:

- platform: gpio
pin: GPIO4
name: "PIR Sensor"
device_class: motion

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Но не тут-то было! Этот датчик отказывается работать рядом ESP8266, реагируя на помехи от WiFi, а не движение.

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

Ставим конденсатор рядом — не помогает. Добавляем интегрирующий конденсатор — как-то все это стало работать. Но вообще, судя по интернетам, народ просто избегает ставить такие датчики рядом с ESP8266.

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Полностью yaml файл выглядит вот так:

esphome-web-179fe4.yaml
esphome:

name: esphome-web-179fe4
friendly_name: Smart relay
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "hcf6/cl1EdJhm5cEkYwXPnvEoMBur98Uuz09pT1sxYg="
ota:

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Esphome-Web-179Fe4"
password: "bgHP6dGKz9rn"
captive_portal:

switch:
- platform: gpio
name: "Relay #1"
icon: mdi:power
pin: GPIO14
inverted: no
- platform: gpio
name: "Relay #2"
pin: GPIO12
inverted: no
icon: mdi:power-socket-de
- platform: gpio
pin: GPIO13
id: buzzer
name: "Buzzer"
icon: "mdi:bullhorn"
on_turn_on:
- delay: 1000ms
- switch.turn_off: buzzer
dallas:
- pin: GPIO5
update_interval: 5s
sensor:
- platform: dallas
address: 0xba00000013d74228
name: "Relay temperature"
binary_sensor:
- platform: gpio
pin: GPIO4
name: "PIR Sensor"
device_class: motion

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

Строим безумный дом. ESP8266 — безумно дешевые кирпичи.

Естественно, такой модуль жрет, как не в себя — средний потребляемый ток ESP8266 около 70 мА, от батарейки подобный модуль не запитаешь.

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


СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *