За прошедшее время сформировалась такая структура.
- Готовые решения, типа HomeAssistant так и не прижились.
- Использую для обмена данными MQTT. В основном Mosquitto MQTT на домашнем сервере. Часть устройств шлёт дополнительно данные и на внешние сервера, но на практике их уже почти перестал использовать. Может быть полезным для доступа снаружи к последним данным при пропаже Интернета, но это мало востребованный случай.
- Сенсоры в основном работают на ESP8266, которые шлют данные на MQTT самостоятельно. Хотя есть один Arduino Nano с парой сенсоров, подцепленный к Orange Pi по USB и посылающий данные по последовательному порту. А уже Oramge Pi закидывает их в MQTT.
- Визуализация данных осуществляется в основном в Munin. Что-то типа такого:
- Анализ данных делается по cron на домашнем сервере. Если что-то требует реакции, информаирует об этом голосом и/или в Телеграм. Вся процедура разбита на много крошечных скриптиков по классам. Одни скрипты возвращают сырое значение сенсоров из MQTT, другие анализируют полученные данные на предмет критичности, третьи делают логику, «если критично — то известить» и уже они дёргаются периодически.
- Голосовой синтез делается через Яндекс. Зависимость от Интернета, но локалхостового качественного синтеза пока нет.
- «Голосовая точка» — Orange Pi с собственными колонками, громкость которых никогда не убирается.
- У Телеграма есть собственный домашний бот, который пока выполняет совсем простые команды (типа, включить/выключить светодиодную гирлянду, отчитаться о показаниях сенсоров, сказать текст через синтезатор).
- Утром включается подсветка аквариума у черепахи, включается светодиодная гирлянда, включается понемногу нарастающая громкость интернет-радио. Во время подъёма синтезатор речи приветствует, сообщает погоду на улице. В разгар сбора напоминает дочке расписание в школе.
- Вечером сперва раздаются предупреждения за два часа, за час и за 15 минут до сна. Потом идёт пожелание спокойной ночи, отключение аквариума у черепахи. Если через полчаса свет всё ещё включен, робот начинает периодически ругаться, что ему мешают спать

В общем, пока так как-то. Надо ещё добавить управление телевизором. Утром включать что-то для побудки, вечером вырубать. Но пока не нашёл ещё, как управлять телевизором по DLNA из скриптов.
Датчик присутствия в комнате пока отрублен. Не подключена ругань на душный воздух через концентрацию CO_2. Так и не висит ещё в прихожей LED-матрица со временем, прогнозом погоды и т.п. Подумываю, тем не менее, о приобретении ещё одной такой же матрицы, чтобы в зале отображать на ней рожу робота с комментариями о каких-то проблемах в доме