如何对接不能修改订阅主题的mqtt协议设备?
❓mqtt协议设备可以上报数据到平台,但设备订阅主题不可更改且不符合平台默认主题,thingskit平台目前不支持自定义发布主题,怎么搭配使用nodered实现设备对接?
答案
💡 提示
平台自1.5.2版本后支持嵌入nodered功能平台直接使用,nodered功能节点中包含mqttbroker节点可以直接调用。如图中所示,在nodered中搭建mqttbroker,让设备直接访问。

示例json(可直接导入到nodered,配置需要自行修改):
‼️ 注意
- nodered的mqttbroker必须使用未被占用的端口且通信设备可以访问。
- 实现思路为首先将设备对接到nodered的mqttbroker上,再将对应json(若上报消息不为json请自行修改流程)解析出来通过mqtt out上报给平台设备,最后在用mqtt in节点订阅平台设备下发指令,并发送给nodered的mqttbroker。在最后步骤中,发布给设备的主题就可以自行设置了。
- 如果下发给设备的命令json需要匹配设备的要求,则可以在“接受平台下发指令”的节点后添加函数节点自行修改:

- 示例中配置可能需要修改,请按照实际情况修改。
- nodered中的mqttbroker节点仅支持3.1、3.1.1版本协议。
如何在nodered中对不同tcp协议设备下发命令?
❓ 当多设备对接到nodered的tcp in节点时,要对单个设备进行命令下发怎么实现(默认下发为广播)?
答案
💡 提示
平台自1.5.2版本后支持嵌入nodered功能平台直接使用,nodered功能节点中包含tcp对接节点可以直接调用。如图中所示,直接启用对应节点接入设备,并按照会话号区分下发设备。

示例json(可直接导入到nodered):
‼️ 注意
- 本流程使用的nodered支持的全局变量记录设备tcp连接对应会话号,且存储为json格式,key为设备注册包,value为会话号。
- 示例中使用了两个注入节点作为示范,其中msg.sid作为注册包。
- 当对接到平台时需要额外添加tcp/mqtt节点与平台设备建立连接,如图所示:

- 该示例中上传数据和下发命令可能都涉及内容的转换或解析,请添加对应的函数节点做转换。
如何在nodered中将tcp协议上报的json消息正常解析?
❓向nodered的tcp in推送json输出的内容为字符串,怎样转换为json呢?
答案
💡 提示
平台自1.5.2版本后支持嵌入nodered功能平台直接使用,nodered功能节点中包含tcp对接节点可以直接调用。如图中所示,直接启用对应节点接入设备后,添加函数节点转换。

💡提示
也可以直接使用nodered的转换节点实现。

‼️ 注意
利用该方式转换为json后可直接对数据做具体调整,例如进行数据缩放、调整json结构复合平台mqtt协议上报格式,最后用mqtt out节点对接设备数据上报到平台。也可以使用数据上报节点。
如何在nodered中将上报设备数据整合为网关+网关子设备json格式上报给平台?
❓ 向平台上报的数据为单个网关接入多个传感器的上报数据,但格式并不符合网关+网关子设备格式以及主题,如何使用nodered实现设备数据按照网关+网关子设备格式上报给平台?
答案
💡 提示
可以参考下面这个回答的流程基础上进行修改。
https://yunteng.yuque.com/avshoi/v2xdocs/ehflc7mq3ug3z02z#djUW4
💡 提示
在此基础上添加解析节点将上报数据修改为网关+网关子设备格式通过“数据上报”到平台。
假设上报数据为{"deviceName":"test","temp":25.9},其中test为网关子设备名称,25.9为实际上报数据点。

💡 注意
按照文档流程上报数据前需要创建对应的网关产品、网关子设备产品以及创建网关设备,才可以在调整“数据上报”节点中有设备和产品可以选择(名称自行定义)。
示例:
数据上报:

命令下发:

💡 提示
按照流程上报后,平台会自动创建按照deviceName键值的网关子设备。设备上报数据在网关子设备物模型内查看。不同的deviceName键值会创建不同的网关子设备,也可以自行手动创建,后续对应数据会更新其物模型属性。
如何在nodered中调用api接口(演示使用平台接口)?
❓ 当在平台中启用一个nodered实例时,如何直接调用平台的接口获取数据?
答案
💡提示
支持调用第三方接口,但第三方接口调用的方式请参考对应api文档。
💡 注意
调用平台的接口可以参考对应的文档。
参考流程(可导入):
💡 注意
在参考流程中需要修改对应的账号、密码完成token的获取,并且http请求的地址也需要按照你当前测试环境的真实地址(前端访问地址)来修改。(http请求地址如http://192.168.1.5:9527)

💡 提示
实际请求结果可以在这个地方查看。

如何在nodered内进行备份(创造还原节点)?
答案
💡 提示
thingskit平台支持对nodered实例进行还原节点备份,备份后可以手动点击还原(系统会自动备份)。
手动备份位置:

手动还原位置:


导入流程后显示不存在节点,怎么解决?
答案
💡提示
在导入nodered流程后,如图显示不存在对应节点,是因为平台部署的nodered只包含默认nodered节点,如果需要使用其他的节点请联系相关工作人员,需要重新打包。
示例:

如何使用mqtt节点接入平台?
答案
💡提示
使用nodered内置mqtt节点连接平台时,可以按照设备接入的过程理解,需要首先在平台上配置产品-设备,然后配置节点的mqtt broker。
创建mqtt产品:
创建mqtt直连设备:
配置节点:



获取设备凭证:
如何使用nodered解析时间戳(毫秒)?
答案
💡提示
可以在nodered处理时间戳转换为可以直接理解的时间格式。
💡提示
nodered注入节点可以直接获取当前服务器时间戳(毫秒)。

如何在nodered中使用http监听?
答案
💡提示
有时候为了调试http接口调用,可以在nodered内启用http监听进行调试, 也可以直接接收数据后传递给平台。
首先确定nodered示例端口(如图中为21800):

💡提示
调用节点http in,http response,debug组合一个简单的http监听流程。添加http response节点会在http请求后默认返回200状态码。
nodered导入文件

💡提示
http in节点的内容可以自行编辑,如图

按照该方式设置流程后 ,http工具请求的url如图(url由nodered所在平台地址+nodered实例端口和http inURL地址组合决定):

上报后:

如何在nodered将字符串转换为json?
答案
💡提示
有时候nodered接收的设备数据类型为字符串,但实际上数据格式为json,可以利用nodered自带节点json实现快速转换。可以看到图中已经将输如的字符串转换为Json输出了。也可以直接输入Json,默认会输出对应字符串。
如图:

nodered导入文件:

如何在nodered内将base64加密字符串转换为明文?
答案
💡提示
可以通过函数节点调用对应函数解析。
nodered导入文件:

如何在nodered内实现多条数据整合为一条数据上报?
答案
💡提示
有多条数据上报平台时可以分开上报 ,也可以整合为一条数据上报,数据上报格式一般为json。
💡提示
示例中默认上报数据为直接上报字符串,需要通过对应节点修改数据属性区分。
处理部分:

nodered导入文件:
💡提示
该流程需要满足三条数据都上报后才会整合输出为一个数据输出。
如何在nodered内处理modbusRTU返回帧数据?
答案
💡提示
如果需要在nodered内处理modbusRTU的数据,而这种数据一般是buffer类型,可以参考以下流程处理。基本思路为先将buffer数据转换为字符串后,按照寄存器返回方式处理输出为json。

如何用nodered过滤消息?
答案
💡提示
在进行消息过滤时,如主题过滤,可以使用switch节点实现。

💡提示
该流程按照msg.topic过滤msg.payload信息,主题包含v1字段则可以在debug4输出,其余消息在debug8输出。
如何在nodered响应http请求并返回对应的数据?
答案
💡提示
当nodered需要将数据通过http的方式允许第三方请求获取数据,可以通过构造http请求以及返回的方式解决。
http响应方式:
nodered导入文件:



💡提示
该实例实现的是在nodered内构建一个请求,当body为{"devicesn":"1"}或{"devicesn":"2"}时返回对应的数据,其余返回为空。
如何在nodered中接收平台下发指令?
答案
💡提示
可以直接调用命令下发节点接受平台下发指令,包含可视化、命令下发、属性下发。


如何使用数据上报、命令下发、事件上报三个节点?
答案
💡提示
数据上报、命令下发、事件上报为thingskit平台对应功能专门开发使用的nodered节点。下面对三个节点分别介绍:
💡注意
使用了数据上报、命令下发、事件上报节点的mqtt设备会一直显示在线,并不会因为数据未上报而离线。

数据上报:
该节点为最常用节点,支持将设备数据按照平台mqtt协议的json上报,支持直连设备、网关设备、网关子设备,使用时需要选择对应的平台设备,仅支持输入。对应设备仅支持mqtt协议。
命令下发:
该节点支持将平台设备下发的指令接受并输出到nodered面板内,方便进行命令下发的转发和额外处理,使用时需要选择对应的平台设备,仅支持输出。
事件上报:
该节点支持将设备产生的事件在nodered内直接上报到对应设备的物模型-事件内,使用时需要选择对应的平台设备,仅支持输入。
如何在nodered中调用api接口(演示使用openapi接口)?
答案
💡提示
使用nodered配置对应流程可以实现对平台openapi的接口请求,请求前需要在应用配置中进行相应配置。
创建应用参考:
💡提示
调用openapi的接口可以参考对应的文档。
参考流程(可导入):
💡注意
在参考流程中需要修改对应的key、secert完成token的获取,并且http请求的地址也需要按照你当前测试环境的真实地址(前端访问地址)来修改。(http请求地址如http://192.168.1.5:9527)

💡提示
实际请求结果可以在这个地方查看。

如何快速搭建一个mqtt broker测试环境,测试设备使用mqtt协议上报的数据?
答案
💡提示
如果需要将测试设备快速接入平台,且可以进行设备发布消息主题查看以及使用mqttx等设备进行相关命令调试,可以使用aedes broker节点实现快速搭建,使用mqtt in节点实现客户端发布所有主题的快速接收。

示例流程:
mqtt broker需要主题配置对应的端口:

其中将mqtt订阅主题配置为#,就可以匹配所有主题:

如何实现设备上报数据后,平台自动创建对应设备并接受数据,简化大量设备接入流程?
答案
💡提示
在一般的场景下,如果接入设备量较多,可以参考该示范流程实现设备采用mqtt协议上报携带设备标签的数据,自动在平台创建设备,并使后续上报数据上报至对应设备上。
💡注意
该流程采用网关+网关子设备方式实现设备数据接入,需要先将对应的网关产品、网关子设备产品以及网关设备都创建好,其中网关为虚拟设备,只是为了满足平台接入流程创建。
例如:需要接入100个直接接入平台的同类型设备,正常接入可以按照100个同产品的直连设备接入,但这100个设备需要自己创建。在本示例中,需要创建一个虚拟网关设备,虚拟网关设备不需要创建物模型,只需要创建一个产品和设备对应接收数据即可。
如何在nodered的function节点上引用第三方库?
答案
💡提示
如果在使用function节点时想要调用外部函数,可以使用设置的模块功能,输入对应函数进行加载后可以直接调用,平台默认不放开该功能,需要更新数据库配置。
引用第三方操作示例

💡注意
更新数据库后,重启流程后进入即可使用。
UPDATE node_red_settings_template
SET settings = (jsonb_set(settings::jsonb, '{modules,allowInstall}', 'true'::jsonb))::json
WHERE settings::jsonb #>> '{modules,allowInstall}' = 'false';