Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Бесшовная интеграция PLCnext в Home Assistant для умного дома

Обзор демо-проекта

Этот проект демонстрирует, как использовать контроллер PLCnext в качестве устройства умного дома в открытом ПО Home Assistant через REST API и Modbus TCP. С контроллером PLCnext можно использовать модули Axioline для расширения возможностей: мощные выходы вместо GPIO Raspberry Pi, датчики температуры Pt100, шины DALI и др. Необходимы: рабочая установка Home Assistant и контроллер PLCnext с небольшим проектом.

Предварительные требования

Библиотеки:

Сервисы Home Assistant:

Описание функционала

Проект показывает две возможности подключения PLCnext к Home Assistant. Контроллер может жестко перезагружать другие устройства, управляя их питанием через реле. Перезагрузки инициируются командами Telegram-бота, после чего отправляется email-уведомление.

Архитектура

Бесшовная интеграция PLCnext в Home Assistant для умного дома

Подключение через Modbus TCP

В проект PLCnext добавляется Modbus-сервер с помощью библиотеки Modbus TCP. Конфигурация аналогична примеру библиотеки. Переменные отображаются в coil-регистры. Важно: Modbus-сервер не поддерживает более одного соединения одновременно. При обрыве соединения сервер может войти в ошибку и потребует ручного перезапуска. Рекомендуется запрограммировать автоматический рестарт сервера в проекте PLCnext.

Для Modbus-клиента в Home Assistant есть два основных варианта: Node-RED или настройка сущности в configuration.yaml. Пример настройки переключателя (switch) для boolean-переменных:

modbus:
  type: tcp
  host: YOUR_SERVER_IP
  port: 502
  name: hub1
switch:
  - platform: modbus
    coils:
      - name: restartMB
        hub: hub1
        slave: 1
        coil: 13

При использовании Node-RED учтите, что он обычно открывает разные соединения для чтения и записи, что вызовет ошибку сервера. Решение: использовать Modbus UDP или два Modbus-сервера в PLCnext (один для чтения, другой для записи).

Подключение через REST API

Второй вариант — REST-интерфейс данных PLCnext. Он связан с HMI, поэтому в проекте должна быть хотя бы одна HMI-страница (даже пустая), а переменные должны иметь флаг HMI. Подробнее — в PLCnext Info Center.

На стороне Home Assistant используется Node-RED для генерации HTTP-запросов. Установка аддона описана в инструкциях. Если в проекте PLCnext включена аутентификация HMI-пользователей, аутентификация в Node-RED выглядит так:

Бесшовная интеграция PLCnext в Home Assistant для умного дома

Поток выполняет аутентификацию и сохраняет access token для последующих запросов. Структура HTTP-запросов описана в документации PLCnext Info Center.

Для доступа к данным Home Assistant в Node-RED используются встроенные ноды. Нижний поток создает новую сущность в Home Assistant, верхний отслеживает её изменения. Если сущность становится true, переменная в PLCnext также устанавливается в true и запускает перезагрузку. Так как переменная перезагрузки в PLCnext автоматически сбрасывается в false, сущность в Home Assistant также сбрасывается через 5 секунд.

Бесшовная интеграция PLCnext в Home Assistant для умного дома

Telegram-бот

Для связи с Home Assistant используется Telegram Bot API. Регистрация бота — по инструкции. Конфигурация в configuration.yaml:

telegram_bot:
  - platform: polling
    api_key: YOUR_API_TOKEN
    allowed_chat_ids:
      - YOUR_CHAT_ID_1
      - YOUR_CHAT_ID_2

Узнать свой chat_id можно, написав боту сообщение и запросив https://api.telegram.org/botYOUR_API_TOKEN/getUpdates.

Пример использования: бот сообщает погоду каждое утро. В этом проекте бот выполняет жесткую перезагрузку PLC по команде /MBrestartPLC (через Modbus) или /RESTrestartPLC (через REST API).

SMTP

Home Assistant может отправлять email через SMTP. Настройка в configuration.yaml:

notify:
  - name: SMTP_MESSENGER
    platform: smtp
    server: SMTP_SERVER
    port: 587
    timeout: 15
    sender: YOUR_EMAIL_ADRESS
    encryption: starttls
    username: YOUR_USERNAME
    password: YOUR_PASSWORD
    recipient:
      - EMAIL_ADRESS_OF_THE_RECIPIENT
    sender_name: My Home Assistant

Автоматизации

Сервисы и библиотеки объединяются в автоматизациях в automations.yaml. Структура проста: alias (имя), trigger (условие), action (действие). Пример для двух способов подключения:

Modbus TCPREST API
- id: '1' alias: 'Trigger a reset of a controller via modbus' trigger: platform: event event_type: telegram_command event_data: command: '/MBrestartPLC' action: - service: switch.turn_on entity_id: switch.restartMB - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via modbus!' - id: '2' alias: 'Trigger a reset of a controller via rest api' trigger: platform: event event_type: telegram_command event_data: command: '/RESTrestartPLC' action: - service: switch.turn_on entity_id: switch.restartREST - service: notify.SMTP_MESSENGER data: title: 'PLC message' message: 'PLC restart initiated via rest!'

Заключение

Проект доказывает простоту интеграции PLCnext в домашнюю автоматизацию. Доступность всех данных PLC в Home Assistant открывает путь к более сложным приложениям: управление сложными PLC-программами в зависимости от погоды или других данных Home Assistant.

Промышленные технологии

  1. Device Management: масштабирование развертываний умных счетчиков через миллионы устройств
  2. Как технологии умного дома трансформируют повседневную жизнь
  3. Ускорение интеграции Modbus-устройств с открытым IIoT пограничным шлюзом
  4. Создание умного домашнего контроллера 433 МГц с Sensorflare и Raspberry Pi
  5. Преодоление разрыва навыков умного дома: почему Британия отстает от Европы
  6. Почему VIA-in-Pad улучшает производительность ПП: ключевые преимущества
  7. Доступные настольные ЧПУ-станки для прецизионной резки металла дома
  8. Безопасный удаленный gRPC доступ с grpcurl на устройствах PLCnext
  9. Оптимизация PLCnext Control с SNMP: Практическое руководство
  10. Установка пакетного менеджера APT на PLCnext Linux: пошаговое руководство