文章

ThingsBoard入门实战(三):设备遥测与展示

ThingsBoard入门实战(三):设备遥测与展示

ThingsBoard入门实战(三):设备遥测与展示

设备遥测与展示

一、设备基础概念

观察下设备面板,有以下几部分构成:

  • 属性:基础信息,比较稳定
  • 遥测:需要测量的状态信息
  • 警告:设备或者设备监控的状态出现问题
  • 事件:发生在设备上的事件
  • 关联:设备属于谁,在哪个资产上等等
  • 审计日志:谁在平台上对设备做了什么操作

其中属性是基础,遥测是核心

二、属性

ThingsBoard能够给实体分配自定义属性并进行管理。

属性 代表设备基本信息, 以key-value格式存在, 可以与IoT设备无缝兼容。

属性分客户端属性,服务端属性和共享属性, 使用官方的图示比较容易理解。

  • 客户端属性

  • 服务端属性

  • 共享属性

三、遥测

物联网的核心目的之一就是通过传感器采集相应的遥测数据上传。对此,ThingsBoard 提供了大量与遥测数据操作相关的功能:

  • 采集 使用MQTT, CoAP或者HTTP协议采集设备数据。
  • 存储 在Cassandra(高效、可扩展、能容错的NoSQL数据库)中存储时序数据。
  • 查询 查询最新时序数据值,或查询特定时间段内的所有数据。
  • 订阅 使用websockets订阅数据更新(用于可视化或实时分析)。
  • 可视化 使用可配置和可配置的小部件以及仪表盘可视化时序数据。
  • 过滤和分析 使用灵活的规则引擎过滤和分析数据(/docs/user-guide/rule-engine/)。
  • 事件警报 根据采集的数据触发事件警报。
  • 数据传输 过规则引擎节点实现与外部数据交互(例如Kafka或RabbitMQ规则节点)

官方有个说明蓝图,一目了然:

四、路灯设备定义

先定义一个简单的路灯设备,具有4个遥测状态:

  • 开关
  • 亮度
  • 电量
  • 位置信息

通过章节的进行,逐步将这几个遥测状态进行处理和展示。

五、设备模拟

想要连接设备,首先要搞清楚下载上传数据的API 以及 设备和平台连接的API。

设备API

和云平台进行通信的主要api是device api, 部署好平台就直接可以在浏览器中访问

http://IP:9090/swagger-ui/#/device-api-controller

遥测模拟

从Github下载有设备信息上传功能的设备客户端的sdk。

https://github.com/thingsboard/thingsboard-python-client-sdk

或者直接使用pip3安装:

pip3 install tb-mqtt-client

通过mqtt链接,向设备平台上传模拟设备的遥测数据:

-- coding:utf-8 -- import random from time import sleep from tb_device_mqtt import TBDeviceMqttClient, TBPublishInfo def send_to(token,telemetry): client = TBDeviceMqttClient(“IP”, token) # Connect to ThingsBoard client.connect() # Sending telemetry without checking the delivery status client.send_telemetry(telemetry) # Sending telemetry and checking the delivery status (QoS = 1 by default) result = client.send_telemetry(telemetry) # get is a blocking call that awaits delivery status success = result.get() == TBPublishInfo.TB_ERR_SUCCESS print(success) # Disconnect from ThingsBoard client.disconnect() def mock_telemetry(): t = { “turn”: 1, “light”: random.choice(range(0,100)), “battery”:random.choice(range(10,60)), } return t if name == ‘main’: while True: sleep(3) tokens = [“token_lamp_1”] for token in tokens: telemetry = mock_telemetry() send_to(token,telemetry)

请注意! pip上并不是最新版本,如果需要使用http,需要下载然后直接本地安装

git clone git@github.com:thingsboard/thingsboard-python-client-sdk.git

六、电量展示

仪表盘

部件:电量展示

按图操作就好。

设为首页

可以看到, 首页已经变成了设备的电量图示。

七、下一步

这节我们主要讲解了设备遥测的模拟和展示,下节是另一个核心功能:命令下发

本文由作者按照 CC BY 4.0 进行授权