ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-12-08 16:02:02  阅读:327  来源: 互联网

标签:入门 遥测 展示 telemetry client 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

六、电量展示

仪表盘

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

部件:电量展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按图操作就好。

设为首页

在这里插入图片描述
在这里插入图片描述
可以看到, 首页已经变成了设备的电量图示。
在这里插入图片描述

七、下一步

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

标签:入门,遥测,展示,telemetry,client,ThingsBoard,设备,属性
来源: https://blog.csdn.net/u010764910/article/details/121780231

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有