- PVSM.RU - https://www.pvsm.ru -
Наступило лето, с ним — жара, а также время включать кондиционеры. А если вы увлекаетесь современными технологиями и умным домом, то управление кондиционерами хочется делать как-то по-умному (или хотя бы по-современному). Ниже — ряд заметок о моей попытке интегрировать погоду в доме с голосовым управлением и кросс-платформенным интерфейсом.
В квартире стоят четыре кондиционера, ими нужно научиться управлять:
Пожалуй, даже не буду рассказывать. Решение от производителя моих кондиционеров предполагало кучу проводов, минимум два дополнительных модуля на каждый блок, и цену порядка $200 на комнату. Плюс проприетарный протокол, древнее приложение, и всё такое. Вычёркиваем.
Примерно $100 на комнату, нативно работает с Google Assistant и IFTTT, красиво выглядит, но всё равно дороговато.
tado° [2] — аналогично (и ещё дороже).
Универсальные ИК-передатчики, некоторые теоретически поддерживают нужные кондиционеры «из коробки», с грехом пополам интегрируются с Home Assistant, но в целом — так себе решение, хоть и ценник уже гораздо ближе к доступному ($20-35 за комнату, в зависимости от возможностей). Да и приложения на китайском языке (в некоторых случаях) — это не то, к чему я стремился.
Самый дешёвый и гибкий способ, о котором я и расскажу подробнее.
Тут есть над чем подумать, но в целом нам понадобится:
Тупо берём ESP8266, а для простоты прошивки и обеспечения питанием воспользуемся D1 mini. Управлять системой, очевидно, будем через WiFi.
Для прототипа воспользуемся простым ИК-светодиодом, сопротивлением и транзистором, потом подумаем, как это можно улучшить.
С ним веселее, можно задавать целевую температуру, и делать автоматическое включение/выключение. Для начала тупо возьмём DHT22.
На него выведем текущее состояние системы (для отладки), а может быть и текущий ip-адрес (вдруг пригодится?).
Реализовывать всё будем в Arduino IDE (с которой я никогда до этого не работал), используя открытые библиотеки.
Сильно позже, когда проект уже работал, я перешёл на Visual Studio Code с плагином PlatformIO [3].
Общаться с Home Assistant будем через MQTT (библиотека PubSubClient [4]), т.к. это открытый протокол, и для него есть специальный компонент [5].
Конфигурация будет выглядеть, например, как-то так:
climate:
- platform: mqtt
name: Living Room HVAC
modes:
- "off"
- "auto"
- "heat"
- "cool"
- "dry"
- "fan"
swing_modes:
- "auto"
- "off"
fan_modes:
- "auto"
- "low"
- "medium"
- "high"
mode_command_topic: "livingroom/meteo/mode/set"
mode_state_topic: "livingroom/meteo/mode"
temperature_command_topic: "livingroom/meteo/target/set"
temperature_state_topic: "livingroom/meteo/target"
fan_mode_command_topic: "livingroom/meteo/fan/set"
fan_mode_state_topic: "livingroom/meteo/fan"
swing_mode_command_topic: "livingroom/meteo/swing/set"
swing_mode_state_topic: "livingroom/meteo/swing"
current_temperature_topic: "livingroom/meteo/temperature"
Библиотека HeatpumpIR [6] поможет нам отправлять сигналы на кондиционер (модель кондиционера пока захардкодим).
Понадобятся ещё библиотеки для таймера [7], для работы с датчиком температуры [8] и с экраном [9], но это уже мелочи. Привычным жестом добавим WiFiManager и ArduinoOTA, чтобы обновлять прошивку через веб-интерфейс, а не USB.
Покупаем на алиэкспрессе случайные компоненты, собираем вместе на бредборде, тестируем идею.
Понимаем, что:
Но в целом идея работает! В интерфейсе Home Assistant появляется «родной» компонент HVAC, а значит, управление из любой точки мира у нас уже «в кармане». Родная интеграция Home Assistant с Google Assistant добавляет нам голосовые команды и обратную связь: можно у ассистента спросить про температуру в комнате, и он ответит как целевую, так и текущую температуру.
Изменение целевой температуры, скорости обдува и режима кондиционера в веб-интерфейсе тоже на месте (и, главное, работает!).
Поменяем пару компонентов: закажем экранчик поменьше, и чтобы работал через I2C (и библиотеку применим другую [10]).
Также заменим ИК-светодиод на готовый модуль.
Оказалось, что модули с одним светодиодом (на фото слева) на алиэкспрессе заказывать не стоит: они не содержат транзистора, и одна из ног (VCC) у них, по сути, бутафорская.
А вот если заказать модуль с двумя светодиодами (на фото справа), то тут уже все необходимые компоненты на месте, и подключается такой модуль легко и непринуждённо, и добивает немного дальше.
Также пришло время всё это собрать на своей печатной плате… Это был один из самых сложных моментов для человека, который никогда не проектировал печатные платы, и наверняка я всё сделал неправильно.
Для проектирования я использовал EasyEDA, готовую продукцию заказывал на OSHPark (опять же, наверняка можно было найти более дешёвый вариант), и в результате получил примерно такое:
|
|
Кнопка была добавлена в последний момент, а место для неё нашлось совершенно случайно. Оказалось, что с кнопкой всё немного веселее, можно не держать экран включенным всё время (что для OLED вредно), а показывать состояние по нажатию.
Что ж, уже неплохо, осталось добавить корпус. Для этого запускаем Blender, делаем кучку параллелепипедов, применяем ряд булевских операций…
И отправляем на 3D-принтер.
Итого, получилось дёшево (меньше $10 за экземпляр), гибко (будет работать с почти любым кондиционером), легко интегрируется, управляется голосом и через веб, стабильно добивает с пяти метров. В общем, примерно то, чего я и хотел.
Как бы всё это сделать чуть лучше?..
Есть ряд направлений для улучшения получившегося продукта (точнее, возможностей улучшения, позволивших бы превратить эксперимент в продукт):
Это было славное приключение, и я многое понял. Например, я понял, почему серийные устройства стоят так дорого, и сколько сил нужно было бы приложить, чтобы выйти на один уровень с ними. С другой стороны, очень многое в этом проекте я делал впервые (работа в Arduino IDE, заказ печатных плат, создание модели для 3D-принтера), и получить этот опыт было бесценно. Исходники, впрочем, не покажу: мне за них достаточно стыдно :)
Но своей цели я всё-таки достиг, а дешёвое и гибкое управление кондиционерами оказалось вполне достижимо.
Автор: Иван Подогов
Источник [11]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/umny-j-dom/289035
Ссылки в тексте:
[1] Sensibo Sky: https://sensibo.com/
[2] tado°: https://www.tado.com/gb/smart-air-conditioner
[3] PlatformIO: https://platformio.org/
[4] PubSubClient: https://github.com/knolleary/pubsubclient
[5] компонент: https://www.home-assistant.io/components/climate.mqtt/
[6] HeatpumpIR: https://github.com/ToniA/arduino-heatpumpir
[7] таймера: https://github.com/JChristensen/Timer
[8] датчиком температуры: https://github.com/adafruit/DHT-sensor-library
[9] экраном: https://github.com/sumotoy/TFT_ST7735
[10] другую: https://github.com/ThingPulse/esp8266-oled-ssd1306
[11] Источник: https://habr.com/post/419963/?utm_source=habrahabr&utm_medium=rss&utm_campaign=419963
Нажмите здесь для печати.