跳到主要内容

· 阅读需 4 分钟
hezhuo

问题

  1. mqtt设备/网关发送和订阅主题与平台不一致并无法修改,怎么接入ThingsPanel平台?

  2. mqtt设备/网关json报文规范与平台规范不一致,怎么接入ThingsPanel平台?

使用规则引擎转发设备数据

使用规则引擎转发设备数据的方式常用来解决第一种问题。

  1. 在规则引擎中新建一条接入规则
  2. 拖拽一个mqtt in节点,填写设备主题接入数据
  3. 再拖拽一个mqtt out节点,与mqtt in节点连线
  4. mqtt out配置中需要添加新的mqtt-broker节点,根据平台mqtt网关/设备接入规则填写主题和认证方式(AccessToken接入填写用户名,MQTTBasic认证填写用户名和密码)
  5. 平台到设备的通信参考以上步骤
  6. 除了以上节点,合理使用其他功能节点,也可以转换报文规范并对设备传输的值加工和处理

使用编辑参数页面的数据处理脚本功能

数据处理脚本功能可解决第二种问题,它的原理相当于中间件。

  1. 创建设备后,点击编辑参数,在数据处理下拉框选择自定义协议
  2. 在弹出的自定义数据解析脚本对话框中输入上行解析脚本下行解析脚本
  3. 保存后创建其他同类设备的时候可以直接选择解析脚本
  4. 数据处理脚本通常还可对设备传输的值做加工处理
  5. 具体细节可以参考下面提供给的解析案例

案例

网关设备平台规范报文:

{
"TH180001": {
"temp": 26.5,
"hum": 45.5
},
"TH180002": {
"temp": 26.5,
"hum": 45.5
}
}

非规范设备报文:

{
"sensorDatas": {
"TH180001": {
"temp": 265,
"hum": 455
},
"TH180002": {
"temp": 265,
"hum": 455
}
},
"type": 2
}

以上行解析脚本为例:

  1. 分析发现设备发来的报文多了一层嵌套,并且数值都未做处理
  2. 创建网关设备,添加两个子设备。(注意子设备地址在编辑参数中填写,同一网关中不可重复,如下图)
  3. 首先编写代码
    var device_msg = '{"sensorDatas":{"TH180001":{"temp":265,"hum":455},"TH180002":{"temp":26.5,"hum":45.5}},"type":2}'
    var public_topic = "gateway/attributes"
    var msg = encodeInp(device_msg,public_topic)
    console.log(msg)
    function encodeInp(msg, topic){
    // 将设备自定义msg(自定义形式)数据转换为json形式数据, 设备上报数据到物联网平台时调用
    // 入参:topic string 设备上报消息的 topic
    // 入参:msg byte[] 数组 不能为空
    // 出参:string
    // 处理完后将对象转回字符串形式
    // 例,byte[]转string:var msgString = String.fromCharCode.apply(null, msg);
    // 例,string转jsonObj:msgJson = JSON.parse(msgString);
    // 例,jsonObj转string:msgString = JSON.stringify(msgJson);
    var msgString = String.fromCharCode.apply(null, msg)
    if (topic === "gateway/attributes"){
    var jsonObj = JSON.parse(msgString);
    newObj = jsonObj.sensorDatas
    for(var key in newObj){
    for(var k in newObj[key]){
    newObj[key][k] = newObj[key][k]/10
    }
    }
    msg = JSON.stringify(newObj);
    }
    return msg;
    }
  4. 使用在线js调试工具,这里用的是:https://www.lddgo.net/code/runcode/javascript
  5. 调试好以后,将函数粘贴进脚本保存(脚本在网关的编辑参数中,如图)
  6. 下行脚本的编写也同上

· 阅读需 3 分钟
zjhong

发布说明

这次的发布修改了之前用户提出的众多问题,尤其是大规模设备的管理、复杂设备的接入、如何高效的将数据转发给第三方。另外这次也是对性能进行了一个整体的测试,模拟10000个设备对系统进行了压力测试,并实现了单TimescaleDB节点5000设备/秒接入能力(4核心8G)。在权限方面,横向精细到操作和按钮,建立了较为完整的RBAC权限支持。当然也包括很多细节改进。

系统演示

演示地址:http://dev.thingspanel.cn

账号密码

新增功能​

  • 增加了 Redis 作为缓存模块
  • 增加了 RBAC 权限管理模块,使用的是 Casbin 权限框架,权限粒度具体到设备、按钮或者接口

  • 增加了角色管理页面,支持多个角色。

  • 增加了权限管理页面,权限精细到操作。

  • 系统后端增加了对 Docker 环境变量的支持,方便配置。
  • 简化了部署,增加了对华为云 / 阿里云的适配。
  • 增加了接入规则引擎和数据转发功能。

  • 重写了业务 - 设备分组 - 设备模块,支持设备无限分组

  • 增加了操作设备的日志,支持查询手动操作和自动操作记录

优化和修复​

  • 优化了首次登录加载速度。
  • 优化了整体的 UI。
  • 优化了部分表索引和排序,提高了操作的流畅度。
  • 提高了压力测试标准,对各方面性能和结构进行了优化。
  • 优化了自动化的告警和控制策略。
  • 重写了用户添加功能和页面。
  • 优化了告警信息页面。

下一个版本计划

下一个版本编号0.4.0,功能上计划借鉴HomeAssistant,实现更为开放的结构,增加共享图表组件组,使开发插件更为简单,更高的插件开发效率。ThingsPanel之前存在的重大结构性问题将得到改进,尤其在大型集成项目上,效率将非常突出。

· 阅读需 2 分钟
zjhong

ThingsPanel 是一款物联网底层开源软件,主要功能是采集设备数据、可视化、自动化控制,为众多集成商、设备商、方案商提供快速的产品和交付方案。

ThingsPanel 的手机端 APP 用于对 ThingsPanel 提供移动管理和控制支持。主要实现的功能包括监测、控制、策略、以及设备添加管理等功能。是 ThingsPanel 的轻型使用客户端,支持 SAAS 场景。

手机端的功能特点包括:

  • 使用 Uniapp 开发,可以方便的编译成 iOS,安卓,微信小程序以及其他小程序,H5。
  • 可以扫码添加设备(设备需要在后台先导入)。
  • 查看监测值。
  • 切换智能化项目和设备分组。
  • 手动控制。
  • 设置控制策略,
  • 分为设备触发和时间条件触发两种。
  • 查看操作日志。
  • 个人账号管理功能。
  • 手机验证码登录。

ThingsPanel-APP手机客户端登录页面 ThingsPanel-APP登录页

ThingsPanel-APP手机客户端首页 ThingsPanel-APP