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

文章目录

设备遥测与展示

一、设备基础概念

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

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

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

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

二、属性

ThingsBoard能够给实体分配自定义属性并进行管理。
属性 代表设备基本信息, 以key-value格式存在, 可以与IoT设备无缝兼容。

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

  • 客户端属性
    ThingsBoard入门实战(三):设备遥测与展示

  • 服务端属性
    ThingsBoard入门实战(三):设备遥测与展示

  • 共享属性
    ThingsBoard入门实战(三):设备遥测与展示

三、遥测

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

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

官方有个说明蓝图,一目了然:
ThingsBoard入门实战(三):设备遥测与展示

四、路灯设备定义

先定义一个简单的路灯设备,具有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

六、电量展示

仪表盘

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

部件:电量展示

ThingsBoard入门实战(三):设备遥测与展示
ThingsBoard入门实战(三):设备遥测与展示
ThingsBoard入门实战(三):设备遥测与展示
ThingsBoard入门实战(三):设备遥测与展示
ThingsBoard入门实战(三):设备遥测与展示
ThingsBoard入门实战(三):设备遥测与展示
ThingsBoard入门实战(三):设备遥测与展示
按图操作就好。

设为首页

ThingsBoard入门实战(三):设备遥测与展示
ThingsBoard入门实战(三):设备遥测与展示
可以看到, 首页已经变成了设备的电量图示。
ThingsBoard入门实战(三):设备遥测与展示

七、下一步

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

上一篇:开源物联网平台(Thingsboard)-运行


下一篇:thingsboard学习笔记