Управление физической кнопкой через MQTT с интеграцией Telegram бота. Проект позволяет отслеживать различные типы нажатий кнопки и взаимодействовать с устройством через Telegram.
- 📶 Отслеживание статуса подключения (WiFi/MQTT) на OLED-дисплее
- 🔘 Обнаружение различных типов нажатий:
- Одиночные нажатия
- Серии быстрых нажатий
- Длинные удержания
- 📡 Публикация событий через MQTT брокер
- 🤖 Полноценная интеграция с Telegram:
- Получение уведомлений в реальном времени
- Просмотр статистики нажатий
- Управление через чат
- 📊 Визуализация состояния на OLED-дисплее
-
Установите необходимые библиотеки в Arduino IDE:
- Adafruit GFX Library
- Adafruit SSD1306
- PubSubClient
-
Клонируйте репозиторий:
git clone https://github.com/WhiteHodok/MQTTbutton.git
-
Настройте параметры в коде:
// Network settings
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* mqtt_server = "MQTT_BROKER_IP";
const char* mqtt_user = "MQTT_USERNAME";
const char* mqtt_pass = "MQTT_PASSWORD";- Прошейте вашу ESP32 любым способом.
- Установите зависимости
cd root/bot
pip install -r requirements.txt- Создайте переменную среды в корне где лежит main.py
touch .env-
Передайте ей атрибуты из config.py
-
Запустите вашего бота
python3 main.py| ESP32-S3 Pin | Подключение |
|---|---|
| GPIO35 | Кнопка (к земле через подтягивающий резистор 10кОм) |
| GPIO36 (SCL) | SCL OLED дисплея |
| GPIO37 (SDA) | SDA OLED дисплея |
| 3.3V | VCC OLED дисплея |
| GND | GND OLED дисплея и кнопки |
Примечания:
- Для кнопки используйте подтягивающий резистор 10кОм к земле
- OLED дисплей: SSD1306 128x64, I2C адрес 0x3C
- Рекомендуется использовать экранированные провода для I2C
{
"event": "press",
"count": 3
}
{
"event": "long_press"
}
{
"event": "series_end",
"count": 5
}ESP32:
- PubSubClient
- Adafruit_SSD1306
Python:
- aiogram 3.20
- aiomqtt 2.3.2
- pydantic 2.11.3

