75271436f7
User: "оверлеев которые выводят какую-то инфу из MQTT может быть
бесконечно много. Надо делать настраиваемым через json/yaml конфиг".
Заменили захардкоженный TempMqttOverlay на generic MqttOverlay:
- cpp/mqtt_overlay.hpp/.cpp: класс MqttOverlayItem (один topic + один
text overlay) + MqttOverlayManager (контейнер). Загрузка из JSON.
- cpp/mqtt_overlay_c_api.cpp: extern "C" обёртка для grid_record.c.
- docker/mqtt_overlays.json: default config с temp_outside примером.
- grid_record.c: --mqtt-overlays=PATH (заменил --temp-topic).
- src/CMakeLists.txt: temp_overlay* удалены, mqtt_overlay* добавлены.
JSON schema:
{
"overlays": [
{
"id": "temp_outside",
"topic": "zigbee2mqtt/Температура на улице",
"json_field": "temperature", // пусто = raw payload string
"format": "%+.1f°C", // printf
"anchor": "right-bottom", // right-top, left-bottom, ...
"margin_x": 32, "margin_y": 24,
"pixel_size": 32,
"color": [255, 255, 255], "alpha": 230,
"font_path": "/fonts/DejaVuSans-Bold.ttf"
}
]
}
MqttBrokerCfg делятся между всеми overlays (one connect_async per item
но shared credentials). Добавление новых overlays = редактирование JSON +
restart cfc-grid (hot-reload через ZMQ — Phase 12).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>