亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

将 PLCnext 控制器无缝接入 Home Assistant 实现智能家居控制

本演示项目展示如何通过 REST API 和 Modbus TCP,将 PLCnext 控制器作为智能家居设备轻松接入开源家庭自动化软件 Home Assistant。借助 PLCnext 控制器,您可在自动化中使用 Axioline 组件,轻松扩展比树莓派 GPIO 引脚更强大的输出能力、Pt100 温度传感器以及 DALI 等总线系统。所需条件仅为一套正常运行的 Home Assistant 安装和一个包含可运行项目的 PLCnext 控制器。

前置条件

所需库:

Home Assistant 服务:

功能描述

为简要展示 PLCnext 控制器作为智能家居设备的可能性,项目演示了通过继电器控制供电电压,利用发送给 Telegram Bot 的命令对其他设备进行硬复位,并在重启前发送邮件通知。本例将展示两种将 PLCnext 控制器接入 Home Assistant 环境的不同方式。

架构图

将 PLCnext 控制器无缝接入 Home Assistant 实现智能家居控制

Modbus TCP 连接方式

首先,在 PLCnext 项目中使用 Modbus TCP 库添加 Modbus 服务器,配置同库示例。Modbus 寄存器的选择取决于数据类型及用途,本例将变量映射到线圈寄存器。

注意: Modbus 服务器不支持多连接。若连接未正确结束(测试时常发生),服务器将进入错误状态,需手动重启。建议在 PLCnext 项目中编程实现 Modbus 服务器自动重启。

Home Assistant 端作为 Modbus 客户端有两种主流方案:一是使用 Node-RED 插件及其可用的 Modbus 库;二是更直观地在 Home Assistant 的 configuration.yaml 中配置实体。下例使用标准开关服务处理布尔变量,因其内置 turn_on/turn_off 功能可直接设置/复位变量。

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 服务器报错。可通过使用 Modbus UDP 或在 PLCnext 项目中运行两个 Modbus 服务器(一读一写)规避。

REST API 连接方式

第二种方式是 PLCnext REST 数据接口。该接口关联 PLCnext HMI,因此项目中至少需包含一个 HMI 页面(可为空)以启用 REST API,且变量需标记 HMI 标志。详细信息请参阅 PLCnext Info Center。

本例在 Home Assistant 侧使用 Node-RED 插件发起 HTTP 请求。安装步骤请参考相关说明并完成两步操作。

若 PLCnext 项目启用了 HMI 用户认证,Node-RED 中的认证流程如下图所示:

将 PLCnext 控制器无缝接入 Home Assistant 实现智能家居控制

该流程执行认证并存储访问令牌供后续请求使用。HTTP 请求的具体结构请查阅 PLCnext Info Center 文档。

要在 Node-RED 中获取 Home Assistant 数据,可使用 Node-RED 插件自带的多种节点。下图底部的简短流程在 Home Assistant 中创建新实体并监测其变化:当实体设为 true 时,PLCnext 控制器对应变量也置 true 触发复位;因 PLCnext 项目中复位变量会自动复位为 false,Home Assistant 实体也在 5 秒延迟后自动置 false。

将 PLCnext 控制器无缝接入 Home Assistant 实现智能家居控制

Telegram Bot 集成

通过 Telegram Bot API 与 Home Assistant 通信。需按说明注册新 Bot。

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

获取 Chat ID 的最简方法:给 Bot 发送一条消息,然后请求 https://api.telegram.org/botYOUR_API_TOKEN/getUpdates。

实用示例:Bot 每天早报天气提醒穿衣;本项目中,发送 "/MBrestartPLC" 命令触发 Home Assistant 自动化脚本,修改 Modbus 线圈寄存器值实现硬复位;"/RESTrestartPLC" 则通过 REST API 实现相同功能。

SMTP 邮件通知

Home Assistant 可通过 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

自动化规则

所有服务和库就绪后,需在 Home Assistant 的 automations.yaml 中编写自动化规则将其串联。自动化结构简单:alias 为名称,trigger 定义触发条件(如特定 Telegram 命令),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 程序控制与监控铺平了道路。

工业技术

  1. 基于 Sensorflare 与树莓派的 433 MHz 智能家居控制器构建指南
  2. 设备管理:支撑智能电表百万级规模部署
  3. 盘中过孔(VIA-in-Pad)提升PCB性能的关键优势
  4. 桌面级CNC金属加工机:家庭工坊的高性价比精密制造利器
  5. 在PLCnext设备上用grpcurl安全远程访问gRPC
  6. 利用 SNMP 优化 PLCnext Control 设备:实用指南
  7. 在 PLCnext Linux 上安装 APT 包管理器:分步指南
  8. 智能家居技术如何重塑日常生活
  9. 借助开源IIoT边缘网关加速Modbus设备集成
  10. 智能家居无缝无线组网:从开箱到安全远程配置的完整指南
  11. Modbus协议在IIoT边缘开发中的实战:树莓派构建安全传感器数据流
  12. 弥合智能家居技能差距:为何英国落后于欧洲