modbus采集温湿度传感器
所有文档

          智能边缘 BIE

          modbus采集温湿度传感器

          本章运用modbus模块,完整演示从温湿度传感器采集信息的demo。

          一、前提准备

          • 硬件准备:

            • 树莓派 4B,安装arm64架构的Linux raspbian
            • 温湿度传感器,购买链接
            • usb转485,购买链接
          • 设备连接方式

            • 树莓派通过wifi接入网络
            • 温湿度传感器连接USB转串口线,最后通过USB接入树莓派
          • 树莓派边缘节点已经按照快速入门教程连接到云端(本文节点名称为modbus-test)

          二、模拟场景

          • 传感器采集温湿度发送到边缘节点的broker服务

          三、边缘节点应用描述

          除了边缘节点连接云端是自动部署的bartyl-core和baetyl-function两个系统应用,还需要在边缘节点上部署以下两个应用

          • broker容器应用:边缘节点MQTT broker消息模块
          • modbus容器应用:基于modbus协议采集解析数据, 该模块支持配置多个从设备定时采集数据

          四、边缘应用配置

          broker配置

          1. 创建应用broker
          • 名称:broker
          • 镜像地址:hub.baidubce.com/baetyl/broker:v2.0.0
          • 端口映射:

            • 宿主机端口:1883;
            • 容器端口:1883;
            • 协议:TCP
          • 默认情况下,broker服务没有用户名密码

          image.png

          image.png

          image.png

          modbus配置

          1. 创建modbus-conf-test配置

          image.png

          • 变量名:service.yml
          • 变量值:
          broker:
            address: tcp://broker:1883 # 连接mqtt hub的地址
            clientid: modbus-1 # 连接mqtt hub时使用的client id,基于baetyl框架运行时可不配置
          slaves:
            - id: 1 # slave id
              address: /dev/ttyUSB0 # 基于tcp连接slave时的地址
              mode: rtu
              idletimeout: 1m # 空闲tcp连接保持时间,默认1分钟
              baudrate: 9600 # 波特率 默认为19200
              databits: 8 # 数据位,可选(5,6,7,8) 默认为8 
              stopbits: 1 # 停止位,可选(1,2) 默认为1
              parity: N # 奇偶校验类型,可选N(无,对应stopbits应配置为2),E(奇校验),O(偶校验) 默认为E
          jobs:
            - slaveid: 1 # 采集任务的对应设备
              encoding: json # 指定采集解析数据,数据以JSON发送,默认为json
              maps:
                - function: 3 # 功能码,对应离散量输入
                  address: 0 # 起始地址
                  quantity: 1 # 采集数量,离散量输入对应1bit, 当解析数据时模块可自动确定
                  field:
                    name: temperature # 解析后数据field名
                    type: int16 # 针对float32数据类型解析数据
                - function: 3 # 功能码,对应输入寄存器
                  address: 1 # 起始地址
                  quantity: 1 # 采集数量,输入寄存器对应16bit
                  field:
                    name: humidity # 解析后数据field名
                    type: int16 # 针对float32数据类型解析数据
          publish:
            topic: test # 采集数据发送的mqtt主题
          logger:
            filename: var/log/baetyl/service.log # 日志路径
            level: info # 日志级别

          2、创建modbus容器应用,添加modbus容器服务

          image.png image.png image.png

          • 名称:modbus-test
          • 镜像地址:baetyltechtest/baetyl-modbus:git-23488d4
          • 增加两个卷配置

            • dev的目录修改为具体设备目录: /dev/ttyUSB0
            • 增加modbus-conf-test的配置项,容器目录为/etc/baetyl
          • 启动特权模式:选择

          五、应用部署至边缘节点

          image.png

          六、验证信息采集结果

          使用MQTT box订阅边缘节点本地broker服务. Protocol 为mqtt/tcp,订阅主题为test(主题在配置文件中定义)。该broker应用不需要用户名和密码。

          image.png

          七、日志查看

          测试过程中遇到问题,可以通过以下命令查看应用的运行状态和日志

          $ sudo kubectl get pod -A  #查看所有pod运行状态
          $ kubectl logs modbus-test-d87cf6d98-ljfnr(该值为pod的NAME) -n baetyl-edge(该值为pod的NAMESPACE)  #查看容器应用的log
          上一篇
          将BML模型部署至边缘节点
          下一篇
          边缘数据上传至MQTT Broker