- C 82.1%
- C++ 9.1%
- Python 8.7%
| docs | ||
| firmware | ||
| server | ||
| third_party | ||
| .gitignore | ||
| CHANGELOG.md | ||
| LICENSE | ||
| NOTICE.md | ||
| README.md | ||
ESP32 MQTT Dashboard
ESP32 MQTT Dashboard — домашняя информационная панель на ESP32. Сервер собирает данные из OpenWeather, Home Assistant и Linux, публикует готовое состояние через MQTT, а один или два дисплея показывают погоду, домашний климат, состояние сервера и медиаплеера.
Текущий публичный релиз: 1.0.1. Внутренняя версия MQTT-протокола — 2; это отдельная нумерация.
Проект поддерживает два устройства:
- LilyGO T-Display-S3 — компактный дисплей 320×170 с двумя физическими кнопками;
- JC3248W535C_I_Y — сенсорная панель 320×480, интерфейс работает горизонтально как 480×320.
Оба дисплея получают одни и те же данные от сервера, но рисуют собственный интерфейс. Можно использовать оба устройства одновременно или оставить только одно.
Возможности
Сервер умеет:
- получать текущую погоду и прогноз OpenWeather;
- читать климатические датчики и медиаплеер из Home Assistant;
- собирать CPU, ОЗУ, Swap, Load Average, температуру процессора, использование диска и аптайм Linux-хоста;
- хранить историю климата и системных показателей в SQLite;
- публиковать состояние и конфигурацию дисплеев через MQTT;
- принимать с большой панели команды управления медиаплеером.
На JC3248W535 доступны страницы «Главная», «Погода», «Прогноз», «Климат», «Стример» и «Система». T-Display-S3 показывает тот же набор данных в компактной раскладке.
Что понадобится
Обязательно:
- Linux-сервер с Docker Engine и Docker Compose;
- работающий MQTT-брокер, доступный серверу и ESP32;
- Wi-Fi 2,4 ГГц для ESP32;
- хотя бы один поддерживаемый дисплей.
Необязательно:
- OpenWeather — если нужна погода и прогноз;
- Home Assistant — если нужны домашние датчики и медиаплеер;
- второй дисплей — сервер нормально работает и с одним устройством.
MQTT-брокер в состав проекта не входит. Подойдёт, например, уже установленный Mosquitto.
Быстрый старт
- Установите сервер.
- Настройте MQTT, погоду, Home Assistant и нужные дисплеи.
- Прошейте нужное устройство:
- Если нужно разобраться с обменом данными, откройте описание MQTT-протокола.
- Для переноса на другое железо есть краткие рекомендации по адаптации.
Проверенное оборудование и среда сборки
LilyGO T-Display-S3
- ESP32-S3;
- экран 320×170;
- две физические кнопки;
- Arduino IDE 2.x;
esp32 by Espressif Systems2.0.17;- TFT_eSPI 2.5.43;
- PubSubClient 2.8;
- ArduinoJson 6.21.5.
JC3248W535C_I_Y
- ESP32-S3;
- 16 МБ Flash;
- 8 МБ Octal PSRAM;
- экран 320×480;
- интерфейс 480×320 в горизонтальной ориентации;
- ёмкостный сенсор;
- ESP-IDF 5.5.5;
- LVGL 9.5.0;
esp_lcd_axs15231b2.1.0.
Внешне похожие платы могут иметь другую разводку GPIO или другой контроллер дисплея. Перед прошивкой другой ревизии сверьте характеристики платы.
Структура репозитория
server/ Python-сервер и пример конфигурации
firmware/
├── t-display-s3/ скетч Arduino IDE
└── jc3248w535/ проект ESP-IDF
docs/ документация
third_party/ тексты лицензий сторонних компонентов
CHANGELOG.md история релизов
LICENSE лицензия основного кода
NOTICE.md сведения о сторонних компонентах
Каталог server/data/ в репозитории пуст. SQLite-база создаётся при первом запуске и не должна попадать в Git или релизный архив.
Конфигурация и учётные данные
Публичные файлы содержат только примеры. Перед запуском нужно заменить YOUR_..., адрес MQTT-брокера, адрес Home Assistant, координаты OpenWeather и entity_id датчиков на свои значения.
Для обеих прошивок параметры Wi-Fi и MQTT задаются прямо в исходном коде. После их изменения прошивку нужно пересобрать и записать в устройство. Отдельный secrets.h не используется.
Автор
Разработка: Виталий Егоров
E-mail: egorowitaliy@gmail.com
Лицензия
Основной код распространяется по лицензии MIT. Сведения о Roboto, Meteocons, LVGL, ESP-IDF и других сторонних компонентах находятся в NOTICE.md и каталоге third_party/.