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这个设备

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

终于通信成功!!!!!

相关推荐
衫水7 小时前
EMQX安装使用和客户端认证
物联网
AWS官方合作商11 小时前
万物互联时代,AWS IoT Core如何构建企业级物联网中枢平台?
物联网·云计算·aws
hmywillstronger14 小时前
【ESP32】【微信小程序】MQTT物联网智能家居案例
物联网·微信小程序·智能家居
Blossom.11815 小时前
量子计算与经典计算融合:开启计算新时代
人工智能·深度学习·opencv·物联网·生活·边缘计算·量子计算
清晨細雨15 小时前
uniapp微信小程序:WIFI设备配网之TCP/UDP开发AP配网
前端·物联网·小程序·uni-app
Hy行者勇哥17 小时前
用华为云应用程序抽取华为云物联网的数据有哪几种方式?
物联网·华为云
~央千澈~17 小时前
星云智控科技-优雅草星云物联网AI智控系统软件产品技术栈一览表-优雅草卓伊凡
物联网·物联网实时监控
Hy行者勇哥18 小时前
形象理解华为云物联网iotDA开发流程
物联网·华为云
光芒Shine1 天前
【物联网-RS-485】
物联网
成都纵横智控科技官方账号1 天前
工业物联网的可视化编程革新:Node-RED与边缘计算的深度融合-纵横智控
物联网·边缘计算·数据采集·node-red·智改数转