Концепция умного дома
С чего все началось
Когда у меня появилась собственная квартира, я захотел сделать максимально удобным проживание в ней. В то же время на рынке начало появляться множество различных решений для автоматизации рутинных домашних задач. К примеру, ежедневную уборку заменили роботы-пылесосы. Анализируя их возможности и ограничения (к сожалению до сих пор их очень много), я приступил к проработке собственного “идеального” концепта умного дома. И сразу же столкнулся с рядом технических проблем в большинстве устройств. Почти все они завязаны на работу с глобальным, централизованным сервером. Примером таких устройств являются умные лампы Yeelight, устройства линейки Tuya и т.п. Каждое устройство одного производителя добавляется, настраивается и управляется через единое приложение. Некоторые приложения поддерживают (частично) сторонние устройства. Но все взаимодействие придерживается логике: приложение -> сервер -> устройство. Редко бывает так, что устройство работает напрямую с приложением (по bluetooth). Последний тренд компаний - обязательная авторизация… Это еще одна проблема, с которой я столкнулся. Невозможно создать одну учетную запись и использовать ее во всех приложениях…
Манифест “умного дома”
Для себя я решил, что устройства должны работать через Wi-Fi. Я хорошо знаком с семейством контроллеров ESP8266 и ESP32. Так же представляю возможности сетевых протоколов и физической работы Wi-Fi. Сети на базе bluetooth я не рассматриваю из-за дороговизны, малой распространенности и общей закрытости устройства. Zigbee так же показался мне недостаточно развит, он так же на порядок дороже, чем Wi-Fi, и представлен в виде десятка производителей, не все из которых поддерживают перепрошивку на сторонний софт. Из этого родились следующие требования к системе:
- Работа через Wi-Fi
- Легкая настройка соединения с Wi-Fi
- Работоспособность при полном отсутствии Wi-Fi (в чистом поле)
- Использование Wi-Fi для информирования об изменениях
- Использование Wi-Fi для полной возможности управления
- Возможность автоматического обновления глобальной информации (время/дата/погода) автономно, без использования промежуточного сервера
- Выход из строя устройства не влияет на работу других устройств
- Любое устройство можно заменить его простым аналогом в течение короткого времени (умный выключатель легко поменять на обычный выключатель)
- Устройство не должно выполнять больше одной функции, для которой оно создавалось (выключатель не должен отслеживать время суток для корректной работы)
- Если устройство предоставляет дополнительную информацию о себе, но это не основная его обязанность, то эта информация не может быть использована как основа для работы других устройств (пример: настольная лампа может измерить температуру, на основе которой работает кондиционер)
Так же я определил для себя дополнительные требования, не являющиеся обязательными, но желательными, если они возможны:
- У каждого устройства есть свой web интерфейс, работающий автономно
- Каждое устройство умеет создавать автономную точку доступа
- Каждое устройство предусматривает возможность общения по одному из IoT протоколов (Rest API, MQTT и т.п.)
Что удовлетворяет этим требованиям
Как упоминалось выше, я знаком с контролерами ESP8266 и ESP32. Для этих контроллеров существует SDK и несколько готовых открытых прошивок: ESPHome, ESPEasy и Tasmota. Я остановился на последней. Это обусловлено большой базой поддерживаемых устройств. А так же эта прошивка позволяет гибко настраивать контроллер и тем самым использовать его в любых устройствах. Сама концепция проекта предполагает автономное использование устройства. Большинство устройств имеют минимально необходимую функциональность. Все это сделало возможным дальнейшее развитие своей идеи умного дома.