Давайте знакомиться

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

Но эта история - не про рабочий проект.

Она началась с фразы моего друга:

«Слушай, а можно сделать так, чтобы котёл на даче был умным?»

Спойлер: можно.
Ещё один спойлер: на выходе получилось мобильное приложение, кастомные Android-виджеты и планы на кухонный информационный центр.

Задача №1. Подключить котёл к OpenTherm

У друга на даче стоит котёл с поддержкой протокола OpenTherm. Задача выглядела достаточно простой: подключить его к умному дому и начать получать данные о состоянии - температуры, режимы работы, ошибки.

Немного изучив тему, мы нашли open-source проект - OpenTherm Gateway. Спасибо автору проекта за его старания и отдельную статью на Хабре

Казалось бы - готовое решение. Подключай и пользуйся.

На практике всё оказалось чуть интереснее.

Помимо изучения документации пришлось:

  • разобраться со схемой подключения,

  • съездить в магазин радиодеталей,

  • купить необходимые компоненты,

  • провести несколько часов с паяльником.

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

Первая попытка оказалась неудачной.
То ли провода были не те.
То ли подключили не туда.
То ли просто спешили.

Но в итоге:

  • микросхема корректно подключена,

  • котёл управляется,

  • в веб-интерфейсе отображаются параметры,

  • видны температуры, режимы и статусы.

Казалось бы уже победа, НО...

Проблема №2. Всё работает… но только в локальной сети

Данные были доступны через веб-интерфейс, но исключительно внутри локальной сети.

И всё бы ничего, но эта локальная сеть находится в н-ном количестве километров от города, где мы проводим большую часть времени.

Сценарий получался странный:

  • котёл работает,

  • данные есть,

  • интерфейс красивый,

  • но увидеть всё это можно только находясь физически на даче.

А хотелось:

  • видеть температуру из города,

  • понимать, что происходит в мороз (тем более зима под минус 27),

  • быстро проверить состояние системы без танцев с VPN.

Задача №3. Интеграция с Home Assistant и Яндексом

Так как я не первый раз подключаю умный дом под свои потребности, решение было очевидным:

  • ставим Home Assistant,

  • подключаем OpenTherm Gateway,

  • пробрасываем данные в Яндекс Умный дом (еще один прекрасный проект: Yaha Cloud),

  • управляем голосом через колонку или узнаем нужные температуры.

датчики и показатели внутри
датчики и показатели внутри

Всё заработало.

Можно спросить колонку о температуре или включить режим.

Можно открыть приложение и посмотреть статусы.

И было бы все хорошо, если бы не очередное НО...

Проблема №4. Слишком много действий ради одного взгляда

Чтобы просто посмотреть температуру, нужно:

  1. Найти приложение.

  2. Запустить.

  3. Подождать загрузки.

  4. Ознакомиться (если у вас корректно сформировано избранное).

Мой друг - человек принципиальный и немного придирчивый. Лишние нажатия пальцем его не устраивали.

Ему хотелось:

«Открываю телефон - и сразу вижу всё, что нужно».

Но в текущей реализации экосистемы Яндекса полноценные данные доступны только внутри приложения. В виджетах - только сценарии.

Это нас не устроило.

Решение №5. Пишем своё приложение

А почему бы не нарастатить функционал, и не собрать свои виджеты?

  • данные меняются не каждую секунду,

  • обновления раз в 10 минут более чем достаточно,

  • принудительное обновление можно сделать по тапу на виджете,

  • вся ключевая информация должна быть прямо на рабочем столе.

Выбор пал на Flutter.

Почему именно он:

  • кроссплатформенность (Android сейчас, остальное - потенциально),

  • понятное формирование UI для основных экранов приложений,

  • удобная разработка MVP,

  • возможность в будущем расширить приложение на другие платформы.

Архитектура и реализация

Мы:

  • изучили актуальные библиотеки и АПИ, который предоставляет Яндекс.

  • подумали, как выбирать, какие параметры выводить, что настраивать,

  • решили, что делать, если данные по разным объектам хочется видеть отдельно,

  • реализовали вывод информации в различные виджеты,

  • добавили несколько вариантов конфигурации отображения.

Оказалось, что Android-виджеты - это отдельная философия.
Они по-разному ведут себя на разных устройствах, отличаются размерами, отступами и правилами рендеринга.

Поэтому пришлось:

- расширить параметры конфигурации,
- добавить настройку цветов,
- продумать отображение иконок,
- сделать гибкую компоновку,
- предусмотреть возможность разносить разные типы данных по разным виджетам.

В итоге пользователь может сам решить:

- один общий виджет со всеми параметрами,
- или несколько отдельных - температура, режим работы, статус конкретного объекта.

Результат

Товарищ доволен.

Хотя… если бы он не был дотошным, это был бы не он.

Список «а давай ещё добавим» продолжает расти.

Но важно другое - мы не пытаемся заменить существующие экосистемы или переписать функциональность умного дома.

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

Неожиданный поворот: часы на кухне

Каждый раз приходя к нему домой, я видел одну деталь:
на кухне стоят часы, сделанные из старого телефона. Они просто показывают время и погоду.

И в какой-то момент мы посмотрели на это и подумали:

«А почему бы не сделать часы + погоду + состояние котла + датчики прямо здесь?»

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

Просмотр шаблона настроек в полноэкранном режиме с временем, погодой и ...
Просмотр шаблона настроек в полноэкранном режиме с временем, погодой и ...

Так из задачи «подключить котёл» проект начал постепенно превращаться в домашний информационный центр.

Вместо выводов

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

А пока - мы закрыли свою конкретную потребность.

Закрытое тестирование

Сейчас приложение находится в закрытом тестировании - "скоро на всех площадках вашего города!"

Мы проверяем:

  • поведение виджетов на разных устройствах,

  • стабильность обновления,

  • удобство конфигурации,

  • сценарии использования в реальной жизни.

Если вам интересен подобный функционал - буду рад пообщаться и привлечь к тестированию.

Особенно если у вас:

  • есть похожие потребности мониторинга данных

  • не хватает логического деления данных в нативном приложении,

  • или просто есть интерес к кастомным Android-виджетам для умного дома.

Проект из «подключить котёл другу» незаметно превратился в небольшой продукт.
И, возможно, он будет полезен не только нам.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Есть ли у Вас идеи для реализации к существующим приложениям Умного дома?
50%Да4
37.5%Нет3
12.5%Текущие реализации меня устраивают1
Проголосовали 8 пользователей. Воздержался 1 пользователь.