ThingsBoard IoT Gateway 实战(二)- 通过 Request Connector 获取天气

本文档详细介绍了如何使用ThingsBoard IoT Gateway的Request Connector来获取天气信息。通过配置ThingsBoard平台,创建并模拟天气API,然后在网关端进行配置,设置请求间隔,最终成功从网关获取并展示天气数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ThingsBoard IoT Gateway 实战(二)- 通过 Request Connector 获取天气

1. 问题描述

用API接口查询天气

2. 分析设计

在 ThingsBoard IoT Gateway 中,访问外部API是通过 Request 连接器实现的。

网关 设备 平台 发起HTTP请求 返回HTTP消息 HTTP消息转换 上传MQTT消息 网关 设备 平台

3. 平台配置

本节进行Thingsboard平台中网关的新增配置,如果已经配置,请直接跳到下一节。
使用默认的租户登录Thingsboard平台,在界面上配置网关:
在这里插入图片描述
进入添加新设备页面:在这里插入图片描述添加Token,这里设为ENV_GATEWAY_TOEKN, 后面会用到。
在这里插入图片描述客户可以不配置,直接把这个设备挂在租户下面就可以了。
可以在设备列表中看到这个网关:
在这里插入图片描述

4. 三方平台模拟

由于第三方平台五花八门,我们自己新建app.py,写一个天气接口作为模拟:

# -*- coding: utf-8 -*-

from flask import Flask, jsonify
from flask_basicauth import BasicAuth

app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False # 返回JSON字符串中文修正

app.config['BASIC_AUTH_USERNAME'] = 'admin'
app.config['BASIC_AUTH_PASSWORD'] = '123456'
app.config['BASIC_AUTH_FORCE'] = True  # 整个站点都验证

basic_auth = BasicAuth(app)

@app.route('/weather')
def weather():
    return jsonify({"weather":"晴","temp":25.6,"sensorName":"ENV-002", "sensorType": "out"})

if __name__ == '__main__':
    app.run(debug=True)

代码使用步骤说明:

  • 安装Python: 官网下载最新版本即可
  • 安装Flask: 命令行pip install flask
  • 编写代码:新建文件app.py写入上面这段代码
  • 运行代码:命令行python app.py

5. 网关配置

网关安装见 ThingsBoard IoT Gateway 实战(一)- 入手

到网关配置文件夹编辑tb_gateway.yaml文件。

vim /etc/thingsboard-gateway/config/tb_gateway.yaml

将“thingsboard”部分中的主机和端口属性值改为ThingsBoard主机和端口。
将“security”部分中的access token修改为访问令牌,也就是ENV_GATEWAY_TOEKN。

网关配置关键部分如下:

thingsboard:
  host: thingsboard平台的IP地址
  port: 1883
 
  security:
    accessToken: thingsboard平台中配置的网关的token,这里是 ENV_GATEWAY_TOEKN
connectors:
 -
   name: REQUEST Connector
   type: request
   configuration: request_env.json

json配置

{
  "host": "http://127.0.0.1:5000",
  "SSLVerify": false,
  "security": {
    "type": "basic",
    "username": "admin",
    "password": "123456"
  },
  "mapping": [
    {
      "url": "weather",
      "httpMethod": "GET",
      "httpHeaders": {
        "ACCEPT": "application/json"
      },
      "allowRedirects": true,
      "timeout": 0.5,
      "scanPeriod": 5,
      "converter": {
        "type": "json",
        "deviceNameJsonExpression": "${sensorName}",
        "deviceTypeJsonExpression": "${sensorType}",
        "telemetry": [
          {
            "type": "double",
            "key": "temperature",
            "value": "${temp}"
          },
          {
            "type": "string",
            "key": "weather",
            "value": "${weather}"
          }
        ]
      }
    }
  ]
}

注意:

  • scanPeriod 是 请求的时间间隔,这里是5秒请求一次。
  • rest 和 request 连接器的部分参数名称有区别,请注意分辨。
    eg. 遥测在 rest 中是解析 timeseries 字段,request中是解析 telemetry 字段。

6. 查看结果

设备列表中出现了一个代表外部天气API的设备ENV-002:
在这里插入图片描述

可以看到5s刷新一次遥测数据:
在这里插入图片描述由于 deviceNameJsonExpression 可以使用表达式也可以直接使用字符串,
实际项目中,我们可以用城市名称或者区域名称+天气来做设备名,

"deviceNameJsonExpression":"深圳天气",

会比较直观。

7. 下一步

这节讲解网关通过HTTP请求连接器获取设备遥测消息。

网关 设备 平台 发起HTTP请求 返回HTTP消息 HTTP消息转换 上传MQTT消息 网关 设备 平台

下节我们看看网关通过MQTT连接器和窗帘进行交互,剧透一下:

网关 EMQX 平台 订阅MQTT消息 获取MQTT消息 MQTT消息转换 上传MQTT消息 网关 EMQX 平台
### ThingsBoard IoT Gateway代码移植方法 对于ThingsBoard IoT Gateway的代码移植,主要涉及目标平台环境准备、依赖库安装以及网关配置文件调整等方面的工作。 #### 1. 准备开发环境 为了确保能够在新的硬件平台上成功编译并运行ThingsBoard IoT Gateway,在开始之前需先搭建适合该设备的操作系统及其配套工具链。如果是在嵌入式Linux环境下操作,则可以参考官方文档来获取Buildroot源码,并按照说明完成定制化内核与根文件系统的构建[^3]。 #### 2. 安装Python及相关依赖包 ThingsBoard IoT Gateway基于Python编写而成,因此需要确认目标板上已正确部署了适当版本的解释器以及其他必要的扩展模块。通常情况下可通过pip命令在线安装这些组件;但对于离线场景来说,则可能要预先打包好whl文件再传输至目标机器执行本地安装。 #### 3. 修改MQTT连接参数 针对不同类型的物联网协议适配需求,应当编辑`thingsboard-gateway/thingsboard_gateway/config/mqtt.json`中的相应字段以匹配实际使用的Broker地址和服务端口等信息[^1]。这一步骤至关重要,因为只有当设置无误时才能实现稳定的数据交换过程。 #### 4. 调整日志级别和其他高级选项 除了上述基本项外,还建议依据具体应用场景灵活调节其他可选属性,比如启用调试模式以便于排查潜在问题所在,或是优化性能表现通过设定合理的缓冲区大小等方式达成目的。更多细节可以从官方指南中获得进一步了解[^2]。 ```bash # 更新软件包列表并安装所需依赖 sudo apt-get update && sudo apt-get install python3-pip libssl-dev libffi-dev build-essential # 使用pip安装缺失的Python库 pip3 install --upgrade pip setuptools wheel cryptography paho-mqtt pyyaml tb-rest-client tb-mqtt-client ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘎啦AGI实验室

你的鼓励是我创作最大的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值