Skip to content

MQTT Button Controller with Telegram Bot Integration

Notifications You must be signed in to change notification settings

WhiteHodok/MQTTbutton

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MQTT Button Controller with Telegram Bot Integration

image

GitHub stars ESP32 MQTT Python

Управление физической кнопкой через MQTT с интеграцией Telegram бота. Проект позволяет отслеживать различные типы нажатий кнопки и взаимодействовать с устройством через Telegram.

Telegram_iAWgNJROJI

🔥 Основные возможности

  • 📶 Отслеживание статуса подключения (WiFi/MQTT) на OLED-дисплее
  • 🔘 Обнаружение различных типов нажатий:
    • Одиночные нажатия
    • Серии быстрых нажатий
    • Длинные удержания
  • 📡 Публикация событий через MQTT брокер
  • 🤖 Полноценная интеграция с Telegram:
    • Получение уведомлений в реальном времени
    • Просмотр статистики нажатий
    • Управление через чат
  • 📊 Визуализация состояния на OLED-дисплее

📦 Установка и настройка

Для ESP32

  1. Установите необходимые библиотеки в Arduino IDE:

    • Adafruit GFX Library
    • Adafruit SSD1306
    • PubSubClient
  2. Клонируйте репозиторий:

    git clone https://github.com/WhiteHodok/MQTTbutton.git
    
    
  3. Настройте параметры в коде:

// 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";
  1. Прошейте вашу ESP32 любым способом.

Для телеграм бота

  1. Установите зависимости
cd root/bot

pip install -r requirements.txt
  1. Создайте переменную среды в корне где лежит main.py
touch .env
  1. Передайте ей атрибуты из config.py

  2. Запустите вашего бота

python3 main.py

🔌 Подключение компонентов

ESP32-S3 Pin Подключение
GPIO35 Кнопка (к земле через подтягивающий резистор 10кОм)
GPIO36 (SCL) SCL OLED дисплея
GPIO37 (SDA) SDA OLED дисплея
3.3V VCC OLED дисплея
GND GND OLED дисплея и кнопки

Примечания:

  1. Для кнопки используйте подтягивающий резистор 10кОм к земле
  2. OLED дисплей: SSD1306 128x64, I2C адрес 0x3C
  3. Рекомендуется использовать экранированные провода для I2C

Типы событий MQTT

{
  "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

About

MQTT Button Controller with Telegram Bot Integration

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published