Проблема
SprutHub — отличный контроллер умного дома. Поддерживает кучу протоколов, интегрируется с HomeKit, работает стабильно. Но есть одна вещь, которой мне всегда не хватало — нормальных графиков.
Относительно не давно появились встроенные графики. Но они примерно на бесконечность проигрывают возможносостями grafana
SprutHub не даёт возможности нативно отправлять данные в какую-то БД. Никакой интеграции с Grafana из коробки. И это понятно — контроллер занимается автоматизацией, а не аналитикой. Но хотелось бы иметь и то, и другое.
Почему это важно
Я разработчик, и по работе постоянно имею дело с мониторингом. Prometheus, VictoriaMetrics, Grafana — это мои повседневные инструменты. И когда настраиваешь алерты для продакшн-систем, странно не иметь такого же контроля над собственным домом.
Grafana — это стандарт индустрии для визуализации метрик. Гибкие дашборды, мощные запросы, красивые графики. Почему бы не применить профессиональный подход к домашней автоматизации?
Собственно, этим я и занялся.
Решение
Идея простая: забирать данные из SprutHub и складывать их в базу данных для метрик. А потом визуализировать в Grafana.
Архитектура получилась такая:
SprutHub → Скрипты → InfluxDB/VictoriaMetrics → Grafana
Почему две базы данных? У каждой своя роль:
- InfluxDB — хранит детальные данные за последний месяц. Высокая точность, быстрые запросы для недавних событий
- VictoriaMetrics — долгосрочный архив на 5 лет. Агрегированные данные для трендов и сравнения год к году
Можно обойтись и одной базой, но такой подход даёт баланс между детализацией и объёмом хранения.
Преимущества
Что даёт такой подход:
- Всё локально — данные никуда не уходят, нет зависимости от облачных сервисов
- Работает офлайн — интернет не нужен, всё крутится на домашнем сервере
- Нет лимитов — хранишь столько, сколько позволяет диск
- Полный контроль — любые запросы, любые визуализации, любые алерты
- Нет задержек — данные сразу попадают в базу, без внешних API
- Любая визуализация - можно построить любой график на который вам хватит фантазии и скилов
Для запуска достаточно любого мини-ПК или даже Raspberry Pi.
Что можно мониторить
Практически любой датчик
- Температура по комнатам
- Влажность
- Уровень CO2
- Мгновенное энергопотребление (ватты)
- Накопительное потребление (кВт·ч)
- Освещённость
- Качество воздуха (VOC)
И так далее — если датчик есть в SprutHub, его можно мониторить.
Пример запроса
Вот как выглядит запрос средней температуры по комнатам в InfluxDB:
SELECT mean("value") FROM "sensors"
WHERE ("type"::tag = 'TemperatureSensor') AND $timeFilter
GROUP BY time($__interval), "room"::tag
А в VictoriaMetrics на PromQL:
max by(room) (sensors_value{type="TemperatureSensor"})
Варианты того, что можно посчитать\посмотреть имея свою grafana
- Средная температура по свех дачтиков
- Можно построить график в котором будет сравниваться текущие показатели и за прошлый год. Это, кстати, одна из моих мотивации - прозводить как-то манипулации со своим домом и потом смотреть как это отражается на графиках. То есть не только ориентриовать на свои ощущения (не самый точный источник, но важный, конечно), но и на цифры
Так же с помощью графиков, а я находил какие-то странные аномалии и это в итоге оказывалась место для улучшения.
Полная документация с примерами запросов для разных типов датчиков — в репозитории.
Итоги
Профессиональный мониторинг умного дома — это вполне реально. Не нужно ждать, пока производитель добавит нужную функцию. Можно взять инструменты, которые уже работают в индустрии, и применить их дома.
Всё решение я выложил в открытый доступ:
- Репозиторий: https://github.com/sklukin/spruthub
- Документация: https://github.com/sklukin/spruthub/blob/main/docs/start.md
Там есть готовые скрипты для SprutHub, Docker Compose файлы для быстрого запуска баз данных и Grafana, примеры дашбордов.
Если у вас SprutHub и вы хотите видеть историю своих датчиков — попробуйте. Настраивается за вечер.

