В кои-то веки поговнокодькал для себя.
Прикрутил в свой велосипед ещё одну опциональную корутину с aiohttp-сервером, чтобы экспортировать текущее состояние девайсов.
Теперь у меня в одном процессе:
- обработка расписания работы для устройств
- обработка входящих событий из mqtt-брокера
- периодический сбор данных о внешнем мире (температура за окном с сайта гисметео)
- API. Ну, ничего кроме экспорта не делает, но будем звать его API.
Осталось добавить в качестве данных о внешнем мире число активных пользовательских устройств с роутера и завязать на него работу тёплого пола в том или ином виде.
Ещё один нюанс, я оказывается подписываю только на mqtt-топики для управления устройствами. Текущую реальную температуру, например, я с них не читаю. А надо. Ну, в следующих заход прикручу. Но там заморока будет, сейчас у меня получение любых данных, которые расходятся с текущим ожидаемым стейтом приводят к блокировке управления устройством на 4 часа. Надо будет как-то делить куски стейта.
И всё это добро потребляет около 50мб оперативной памяти. Fuck you микросервисная архитектура.