Чип и Мунк спешат на помощь
Когда я рассказывал о переезде домашнего сервера на Raspberry Pi, то показал несколько запущенных контейнеров chipmunk.
$ docker ps --format "table {{.Image}}\t{{.Names}}\t{{.Status}}"
IMAGE NAMES STATUS
chipmunk chipmunk-webservice Up 10 days
chipmunk chipmunk-platform-virtual Up 10 days
chipmunk chipmunk-automator Up 10 days
chipmunk chipmunk-platform-homekit Up 10 days
chipmunk chipmunk-platform-weather Up 10 days
chipmunk chipmunk-platform-mqtt Up 10 days
chipmunk chipmunk-configurator Up 10 days
chipmunk chipmunk-transformator Up 10 days
chipmunk chipmunk-logger Up 10 days
eclipse-mosquitto mqtt Up 10 days
pasha@raspi4:~ $
Это самописный сервер домашней автоматизации. Недавно понадобилось внести в него несколько изменений и обнаружилось, что многое я уже успел забыть. Поэтому надо написать к нему нечто на подобие документации.
Chipmunk (бурундук) это наследник Гоши (go-sha Go Small Home Automation server). Был в моем детстве такой мультик, “Чип и Дейл спешат на помощь” — пара бурундуков-придурков и К⁰ решают все проблемы. Логичнее было бы обозвать его Хомяком, но хомяк был промежуточной версией и в использование не пошел. Гоша, хотя и имел модульную архитектуру, был монолитом.
В бурундуке модули стали отдельными приложениями, которые общаются между собой используя сообщения MQTT.
MQTT Server
Используется стандартный Docker образ eclipse-mosquitto
Logger
Модуль логов, стартует первым после MQTT сервера. Выводит в лог контейнера сообщения, посылаемый в топик mqtt.
Configurator
Модуль конфигуратора. Считывает конфигурацию приложения (устройства, автоматизация) и отдает ее части по запросу.
Платформы
Модуль платформы отвечает за взаимодействие с устройствами своего типа. Поддерживаются платформы следующих типов:
type Ptf string
const (
VIRTUAL Ptf = "virtual"
MQTT Ptf = "mqtt"
WEATHER Ptf = "weather"
HOMEKIT Ptf = "homekit"
AUTOMAT Ptf = "automat"
)
Все платформы имеют некое общее поведение. Подробнее
- Виртуальная VIRTUAL
Поддерживает устройства, существующие только внутри системы: таймеры, счетчики, скрипты, сценарии, виртуальные переключатели, …
- Погода WEATHER
Поддерживает погодный сенсор, данные берутся с OpenWeatherMap
- HomeKit
Эмулирует хаб HomeKit с набором устройств и нужна для двусторонней связи между Бурундуком и умным домом от Apple.
- MQTT
Поддерживает устройства, умеющие отправлять состояние и принимать команды с MQTT сервера. Преимущественно использющие прошивку tasmota или OpenBK7231
Автоматор
Модуль, предназаченный для работы автоматизации - автоматическое управление устройствами с использованием триггерров, условий и сценариев.
Трансформатор
Модуль для “преобразования” устройств с нестандартным / несистемным поведением к системным требованиям.
Webservice
Модуль web-ui панели управления и мониторинга