С чего все началось

Когда у меня появилась собственная квартира, я захотел сделать максимально удобным проживание в ней. В то же время на рынке начало появляться множество различных решений для автоматизации рутинных домашних задач. К примеру, ежедневную уборку заменили роботы-пылесосы. Анализируя их возможности и ограничения (к сожалению до сих пор их очень много), я приступил к проработке собственного “идеального” концепта умного дома. И сразу же столкнулся с рядом технических проблем в большинстве устройств. Почти все они завязаны на работу с глобальным, централизованным сервером. Примером таких устройств являются умные лампы 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. Я остановился на последней. Это обусловлено большой базой поддерживаемых устройств. А так же эта прошивка позволяет гибко настраивать контроллер и тем самым использовать его в любых устройствах. Сама концепция проекта предполагает автономное использование устройства. Большинство устройств имеют минимально необходимую функциональность. Все это сделало возможным дальнейшее развитие своей идеи умного дома.