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

通过 Home Assistant 将 PLCnext 控制器用作智能家居设备

这个小演示项目展示了如何通过 REST API 和 Modbus TCP 在开源家庭自动化软件 Home Assistant 中轻松使用 PLCnext 控制器作为智能家居设备。借助 PLCnext 控制器,您可以使用自动化中的 Axioline 组件轻松添加功能更强大的输出,然后是 Raspberry Pi 的 GPIO 引脚、Pt100 等温度传感器和 DALI 等总线系统。您所需要的只是一个有效的 Home Assistant 安装和一个带有小型但可运行的 PLCnext 项目的 PLCnext 控制器。

先决条件

图书馆:

家庭助理服务:

功能说明

为了简要概述使用 PLCnext 控制器作为智能家居设备的可能性,有一个 PLCnext 项目可以通过继电器控制其他设备的电源电压来硬重置其他设备。重置由发送到 Telegram Bot 的命令触发,然后再发送一封包含重启已启动信息的电子邮件。本示例将通过两种不同的方式将 PLCnext 控制器连接到 Home Assistant 环境。

架构

通过 Modbus TCP 连接

从 Modbus TCP 连接开始,使用 Modbus TCPl 库将 Modbus 服务器添加到 PLCnext 项目。配置与库示例中的配置相同。选择正确的 Modbus 寄存器取决于数据的类型以及它们的使用方式。在这种情况下,变量被映射到线圈寄存器。

请注意,Modbus 服务器当时不支持多个连接。因此,如果连接没有正确结束,不幸的是,在测试连接时有时会发生这种情况,服务器将进入错误状态,必须手动重新启动。为避免这种情况,建议在 PLCnext 项目中对 Modbus 服务器的自动重启进行编程。

对于 Modbus 客户端,Home Assistant 有两种主要的可能性,您可以选择自己喜欢的。第一个是使用 Node-RED 附加组件和其中一个可用的 Modbus 库。更直观的是在configuration.yaml中配置一个实体 您的家庭助理环境(更多信息)。如下图所示,使用了标准的 switch 服务,这是处理布尔变量的常用方式,因为它实现了 turn_on/turn_off 功能来设置或重置变量。

modbus: 
    type: tcp           # using Modbus TCP 
    host: YOUR_SERVER_IP    # fill the server ip address  
    port: 502 
    name: hub1          # could be changed  
switch: 
  - platform: modbus 
    coils: 
      - name: restartMB     # could be changed 
        hub: hub1 
        slave: 1 
        coil: 13            # the register position of the variable 

如果您选择 Node-RED 可能性,请注意它通常会启动不同的连接以使用 Modbus TCP 进行读取和写入,因此 Modbus 服务器会进入上述错误状态。为避免这种情况,您可以在 PLCnext 项目中使用 Modbus UDP 或两台 Modbus 服务器,一台用于读取,一台用于写入。

通过 REST API 连接

连接的第二种可能性是 PLCnext REST 数据接口。此接口与 PLCnext HMI 相关,因此您的 PLCnext 项目中必须至少有一个 HMI 页面,即使它是空的,以使 REST API 可用。此外,必须使用 HMI 标志对变量进行签名。如需更多详细信息,请查看 PLCnext 信息中心。

在这种情况下,Node-RED 插件用于在 Home Assistant 端生成 HTTP 请求。按照此说明和此说明完成附加组件的安装。在继续之前,请确保您已完成这两个步骤。

如果 PLCnext 项目中的 HMI 用户身份验证被激活,Node-RED 中的身份验证可能如下所示:

该流程运行身份验证并存储访问令牌以在以后的请求中使用它。有关 HTTP 请求的确切结构,另请查看 PLCnext 信息中心的文档。

为了在 Node-RED 中访问 Home Assistant 环境的数据,Node-RED 插件附带了几个节点。下图底部的短流程在 Home Assistant 中创建了一个新实体,并在该实体上方的流程中检查更改。如果实体设置为真,PLCnext 控制器中的变量也设置为真并触发复位。因为PLCnext项目中的restart变量在reset后会自动设置为false,所以Home Assistant中的实体也会在延迟5秒后设置为false。

电报机器人

为了与 Home Assistant 通信,使用了 Telegram Bot API。要使用这个,必须按照这个说明注册一个新的机器人。

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

找到您的聊天 ID 的最简单方法是给您的机器人写一条消息,然后启动 http 请求:

https://api.telegram.org/botYOUR_API_TOKEN/getUpdates

Telegram Bot 的一个有用示例可能是,它每天早上都会通知您今天的天气状况,以便您知道今天应该穿什么。在这个项目中,他获得了另一项任务,即通过 Telegram 中的命令硬重置 PLC(按下 Modbus 寄存器中的按钮)。命令“/MBrestartPLC”被发送到机器人并在 Home Assistant 中启动一个自动化脚本,最终更改 Modbus 线圈寄存器值,“/RESTrestartPLC”使用 REST API 执行相同操作。

SMTP

在 Home Assistant 中,简单邮件传输协议 (SMTP) 可用于发送包含家庭自动化中可用数据的电子邮件。该服务可以通过在configuration.yaml中加入如下代码来实现 :

notify:
  - name: SMTP_MESSENGER # could be changed
    platform: smtp
    server: SMTP_SERVER # e.g. smtp.gmail.com
    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 # could be changed 

单击此处获取有关 Home Assistant 中的 SMTP 服务的更多信息。

自动化

如果所有服务和库都已实现并准备好,则必须将它们组合起来。这是通过在 automations.yaml 中编程的自动化来完成的 的家庭助理环境。自动化的结构非常简单,如下表所示。别名只是 Home Assistant 中自动化的名称。触发器是执行自动化必须为真的条件,如本例中使用的某个电报命令,动作是任务,如在本例中将变量设置为真并发送电子邮件。

Modbus TCP REST 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 控制器集成到家庭自动化中非常简单。 Home Assistant 中所有 PLC 数据的可用性为比此示例更强大的应用程序铺平了道路。想想更复杂的 PLC 程序,这些程序可以根据天气或 Home Assistant 中可用的其他数据进行控制和监控。


工业技术

  1. 设备管理:跟上数百万个智能电表的步伐
  2. 家庭自动化应用
  3. 使用开源 IIoT 网关加速 Modbus 设备集成
  4. 智能家居无线调测
  5. IIoT 边缘开发 – 使用 Modbus
  6. 带有 Sensorflare 和 RaspberryPi 的 433MHz 智能家居控制器
  7. 智能家居技能差距
  8. 在 Pads 中使用 VIA 的优势
  9. 在家中使用经济实惠的 CNC 机床进行金属切割
  10. 使用 grpcurl 的远程 gRPC
  11. 通过 SNMP 管理 PLCnext 控制设备
  12. 在 PLCnext 上安装 apt(-get) 包管理器