modbus slave 设备通过 网关thingsboard-gateway 将数据上传到thingsboard云平台

搭建thingsboard物联网云平台花了大量时间,从小白到最后搭建成功,折磨了好几天,也感谢网友的帮助,提供了思路最终成功搞定,特此记录。

一、thingsboard环境搭建(Ubuntu20.04LTS)

参考官方文档,按部就班操作即可

http://www.ithingsboard.com/docs/user-guide/install/ubuntu/

二、thingsboard-gateway环境搭建

也是参考官方文档,直接安装

Step 1. Download the deb file

|------------------------------------------------------------------------------------------------------------------|
| wget https://github.com/thingsboard/thingsboard-gateway/releases/latest/download/python3-thingsboard-gateway.deb |

Step 2. Install the gateway using apt

Install ThingsBoard IoT Gateway as package and run it as daemon use the following command:

|-------------------------------------------------------|
| sudo apt install ./python3-thingsboard-gateway.deb -y |

The deb package will automatically install the necessary libraries for the IOT Gateway to work:

  1. System libraries: libffi-dev, libglib2.0-dev, libxml2-dev, libxslt-dev, libssl-dev, zlib1g-dev, python3-dev, python3-pip.
  2. Python modules: importlib, importlib-metadata, jsonschema, pymodbus, lxml, jsonpath-rw, paho-mqtt, pyserial, PyYAML, simplejson, pyrsistent.

Step 3. Check gateway status

复制代码
systemctl status thingsboard-gateway

修改配置文件:/etc/thingsboard-gateway/config/tb_gateway.json

bash 复制代码
{
  "thingsboard": {
    "host": "127.0.0.1",
    "port": 1883,
    "remoteShell": false,
    "remoteConfiguration": true,
    "statistics": {
      "enable": true,
      "statsSendPeriodInSeconds": 3600,
      "configuration": null
    },
    "deviceFiltering": {
      "enable": false,
      "filterFile": "list.json"
    },
    "maxPayloadSizeBytes": 1024,
    "minPackSendDelayMS": 200,
    "minPackSizeToSend": 500,
    "checkConnectorsConfigurationInSeconds": 60,
    "handleDeviceRenaming": true,
    "security": {
      "type": "accessToken",
      "accessToken": "ke6h88w6f0fssjaq4s9e"
    },
    "qos": 1,
    "checkingDeviceActivity": {
      "checkDeviceInactivity": false,
      "inactivityTimeoutSeconds": 200,
      "inactivityCheckPeriodSeconds": 500
    },
    "ts": 1721138363329
  },
  "storage": {
    "type": "memory",
    "read_records_count": 100,
    "max_records_count": 100000,
    "data_folder_path": "./data/",
    "max_file_count": 10,
    "max_read_records_count": 10,
    "max_records_per_file": 10000,
    "data_file_path": "./data/data.db",
    "messages_ttl_check_in_hours": 1,
    "messages_ttl_in_days": 7,
    "ts": 1721138363329
  },
  "grpc": {
    "enabled": false,
    "serverPort": 9595,
    "keepaliveTimeMs": 10000,
    "keepaliveTimeoutMs": 5000,
    "keepalivePermitWithoutCalls": true,
    "maxPingsWithoutData": 0,
    "minTimeBetweenPingsMs": 10000,
    "minPingIntervalWithoutDataMs": 5000,
    "keepAliveTimeMs": 10000,
    "keepAliveTimeoutMs": 5000
  },
  "connectors": [
    {
      "type": "modbus",
      "name": "MODBUS CONNECT",
      "configuration": "modbus_serial.json"
    }
  ]
}

mqtt_modbus.json配置

bash 复制代码
{
  "master": {
    "slaves": [
      {
        "type": "serial",
        "method": "rtu",
        "port": "/dev/ttyS1",
        "baudrate": 9600,
        "timeout": 35,
        "stopbits": 1,
        "bytesize": 8,
        "byteOrder": "BIG",
        "wordOrder": "BIG",
        "retries": true,
        "retryOnEmpty": true,
        "retryOnInvalid": true,
        "pollPeriod": 5000,
        "unitId": 1,
        "deviceName": "Modbus Temperature Sensor",
        "sendDataOnlyOnChange": false,
        "connectAttemptTimeMs": 5000,
        "connectAttemptCount": 5,
        "waitAfterFailedAttemptsMs": 300000,
        "attributes": [
          {
            "tag": "16int",
            "type": "16int",
            "functionCode": 4,
            "objectsCount": 2,
            "address": 3
          }
        ],
        "timeseries": [
          {
            "tag": "temperature",
            "type": "16uint",
            "functionCode": 4,
            "objectsCount": 1,
            "address": 1
          },
          {
            "tag": "humidity",
            "type": "16uint",
            "functionCode": 4,
            "objectsCount": 1,
            "address": 2
          }
        ],
        "attributeUpdates": [
          {
            "tag": "shared_attribute_write",
            "type": "32int",
            "functionCode": 6,
            "objectsCount": 2,
            "address": 29
          }
        ],
        "rpc": [
          {
            "tag": "setValue",
            "type": "16int",
            "functionCode": 6,
            "objectsCount": 1,
            "address": 1
          },
          {
            "tag": "getValue",
            "type": "16int",
            "functionCode": 3,
            "objectsCount": 1,
            "address": 2
          }
        ]
      }
    ]
  },
  "id": "19c7e3fa-bfd8-4edb-9590-1fd570902b35"
}

三、modbus slave配置

在命令行重启网关:

sudo systemctl restart thingsboard-gateway.service

云平台就会出现Modbus Temperature Sensor这个设备

四、新建调试界面,对设备进行调试

终于通信成功!!!!!

相关推荐
liubinkaixin4 小时前
海上风电叶片试验的上千片应变片,长线干扰怎么解
物联网
数字新视界4 小时前
机房动环监控提升数据中心安全性
物联网·3d·数字孪生·三维可视化·数据可视化
serene945 小时前
Modbus“出道史”:1979年诞生,后来一路火到现在
物联网·开发·modbus·通讯协议·模拟器
黄鹂鸟科技6 小时前
软件定制开发设计要点:从需求梳理、原型确认到敏捷交付与持续维护
后端·物联网·系统架构
虎王物联6 小时前
随身WiFi什么时候能恢复出厂:去控机和硬刷机的差别
物联网·随身wifi
IT规划师6 小时前
MQTT实战 - QoS 0-1-2 到底怎么选?一张图看懂(四)
物联网·mqtt·.net core·iot·qos
钱工的门窗技术笔记20 小时前
智能门窗的边界与前提:为什么“智能”不能替代本体性能
网络·物联网·智能家居
乐讯通物联网服务商1 天前
仓库环境监测器配上物联网卡,环境数据如何实时上云
物联网·物联网卡·仓库环境监测器
黄鹂鸟科技1 天前
进销存系统设计要点:从采购计划、库存监控到成本核算
后端·物联网·系统架构