存储PLCNext社区PLC.Next. on LinkedInPLC.Next. on Instagram  PLC.Next. on YouTube github plcnext社区存储PLCNext社区

 

 如何创建博客条目

制作rs Blog
Hits: 1380

使用PLCNext Controller通过主页助手作为智能家居设备 

这个 little demo project shows how to easily use a PLCnext controller as a smart home device in the open-source 家庭自动化软件 家庭助理 via the REST API and Modbus TCP. With the PLCnext 控制器您可以使用 Axioline. components in your automation 添加轻松更强大 输出 then the GPIO Pins of the Raspberry Pi, 温度传感器 like Pt100 and bus systems like 达利。你所需要的只是一个 working 家庭助理安装和 a PLCnext controller 小但可抵押 PLCnext project.

pre 优先遗嘱

图书馆:

家庭助理 Services:

功能i泰文描述

简要介绍 of the possibilities of using a PLCnext Controller 作为智能家居设备,有 a PLCnext project that can hard reset other 通过控制带继电器的电源电压的装置。这 resets are triggered by commands 发送到电报 Bot, before an email is send 有这些信息 启动重启。 This example will be shown with 两种不同的方式 connect the PLCnext 控制器到家庭助理环境。

建筑学

Arichtecture1.

联系 via Modbus TCP

从Modbus TCP连接开始, 将Modbus服务器添加到 PLCnext project by using the Modbus TCPl ibrary. The configuration is the same as in the 图书馆例子。选择 right Modbus register depends on 数据和方法 they are meant to be used. In this case the variables are mapped to the coil register.

请注意 to the fact, that the Modbus server 当时不支持多个连接。 So if a connection 没有正确结束,哪个 不幸的是发生了 sometimes while 测试连接, 服务器将进入错误状态 并且必须手动重新启动。避免 this, it is recommended to 程序在Modbus服务器中自动重新启动 PLCnext project. 

为了 the Modbus client 有两个主要可能性 in Home Assistant and it is 在你选择你的最爱。这 first one is to use the Node-RED add-on and one of the modbus. libraries 那里可用。 The more intuitive one is to 配置实体 the configuration.yaml 您的家庭助理环境 (更多信息)。如下所示 the standard switch service 使用,这是一种常见的方式 to work with boolean variables, because it has implemented turn_on/turn_off functionalities 设置或重置变量。

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 

If 您选择节点红色可能性,是 aware of the fact that it typically 开始不同的连接 阅读和写作 with modbus tcp,使modbus server goes 在如上所述的错误状态。 To avoid this, you can use Modbus UDP or two Modbus servers in your PLCnext project, one for reading and one for writing.

 

通过REST API连接

这 second possibility for the connection is the PLCNext REST数据接口。 This interface is related to the PLCnext HMI, so it is necessary to have at least one HMI page in your PLCnext 项目,即使是 empty, in order 使REST API可用。 Furthermore, the 必须签署变量 with the HMI flag. For 更详细的信息 请看看 PLC.下一页 Info Center.

在这种情况下 the 使用Node-Red加载项 to generate 主助手方面的HTTP请求。 加载项的安装是 done by following 这个 和 这个 指示。 Make 确保在继续之前已经完成了这两个步骤。

如果是 HMI用户身份验证 in the PLCnext 项目已激活, the node-red中的身份验证可以如下所示:

Rest1

这 flow 运行身份验证并存储 访问令牌在稍后使用它 requests. 对于确切的结构 HTTP请求还请检查文档 in the PLC.Next. Info Center.

进入 Node-Red中的家庭助理环境的数据, 有几个节点随附 Node-RED add-on. 下图底部的短流程 创造一个新的实体 Home Assistant and 在这个实体上方的流程中 检查更改。如果 实体设置为true, a variable in the PLCnext controller is also 设置为true并触发重置。因为 the restart variable in the PLCnext project is 自动设置为假 重置,家庭助理的实体是 set to false after a 延迟5秒。

Rest2

 

电报机器人

与之沟通 家庭助理电报机器人 API is used. 对于使用此新机器人必须 be registered by following this 操作说明.

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

这 easiest way to find your chat id is to write your bot a message and then start http request:

//api.telegram.org/botYOUR_API_TOKEN/getUpdates

一个有用的例子 电报机器人可能是,它通知 你每天早上关于今天天气状况,所以你 表明你应该是什么 wear 这天。在这个项目中 he gets another task, to hard reset a PLC (push the button in the Modbus寄存器)通过命令 in Telegram. 命令“/ mbrestartplc”被发送到机器人 并开始自动化脚本 in Home Assistant, which finally changes the Modbus coil register value 和“/ restrestartplc”是一样的 通过使用REST API。

 

SMTP.

在家庭助理 简单的邮件传输协议 (SMTP) can be used to send emails 选择了  您的家庭自动化提供的数据。这 可以通过添加以下代码来实现服务 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 

点击 这里 获取有关的更多信息 家庭助理中的SMTP服务。

 

自动化

If all services and libraries are 实施和准备, 他们必须组合。这个完成了 by 自动化是 programmed in the automations.yaml 家庭助理环境。 The 自动化结构非常简单 as 它如下表所示。 别名只是家庭助理自动化的名称。 触发器是必须真实的条件 to execute the automation, like a certain telegram command 在这种情况下使用,而且 action is the 任务,就像在这种情况下 setting 变量为true并发送电子邮件。

modbus. TCP

休息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!' 

结论

这个 little demo 项目证明,它是 quite simple to integrate a PLCNext控制器在家庭自动化中。 The availability of all PLC data in Home Assistant paves the way 适用于应用程序 much 比这更强大 example. Think about more 复杂的PLC程序 can be 依赖于控制和监测 the 天气 或其他数据 在家庭助理中提供。