Загрузка...

Скрипт Modbus Temperature Monitoring Bot

Тема в разделе Python создана пользователем 0xd5f 31 май 2025. 106 просмотров

Загрузка...
  1. 0xd5f
    0xd5f Автор темы 31 май 2025
    Описание

    Асинхронный Telegram-бот для мониторинга промышленных датчиков температуры, подключённых к контроллеру ОВЕН ТРМ200 по Modbus RTU (RS-485).
    • Считывание температуры с датчиков по Modbus RTU (разные COM-порты)
    • Уведомления в Telegram при выходе за пороги, скачках, потере связи
    • Админка через Telegram: добавление/удаление/настройка датчиков, управление пользователями
    • Логирование событий и температур в SQLite/PostgreSQL
    • Просмотр графиков и экспорт *****
    • Расширяемая архитектура для новых устройств

    Используемые технологии
    • Python 3.11+
    • aiogram (Telegram Bot API)
    • pymodbus (Modbus RTU)
    • apscheduler (планировщик)
    • SQLAlchemy (ORM)
    • matplotlib (графики)
    • SQLite/PostgreSQL (БД)

    Быстрый старт

    1. Установите зависимости:
    Python
     pip install -r requirements.txt
    2. Укажите токен Telegram-бота в main.py:
    Python

    API_TOKEN = "<ваш_токен>"
    3. Запустите бота:
    Python

    python main.py
    Основные команды
    • /start — справка
    • /add_sensor [имя] [modbus_addr] [min_temp] [max_temp] [com_port] — добавить датчик
    • /calibrate [имя] [коррекция] — автокалибровка датчика
    • /**** [имя] [дата] — график температуры за дату
    • /block [имя] — временно отключить уведомления по датчику
    • /sensors — список всех датчиков

    Структура проекта

    Схема базы данных
    • sensors: id, name, modbus_addr, min_temp, max_temp, poll_interval, calibration_offset, is_blocked, last_value, last_poll, last_status, com_port
    • users: id, telegram_id, username, is_admin, receive_notifications
    • events: id, sensor_id, event_type, value, timestamp, description, user_id
    • temperature_log: id, sensor_id, value, timestamp


    Примечания

    • Для работы с реальным оборудованием укажите правильный COM-порт и параметры в /add_sensor.
    • Для PostgreSQL измените строку подключения в db.py.
    • Для добавления новых типов устройств реализуйте новый класс и зарегистрируйте его в системе.

    Пилил для себя но может кому то пригодится

    Repo: GitHub
     
    31 май 2025 Изменено
Top