求助:Node-red如何保存多个路径中的值,并实现存储及控制。

救助前景


自我批评:
小白一直使用abox.单此设备非开源型设备。但经过与官方多次沟通,获取了SDK文档。
现在可通过Node-red获取对应设备属性,也可进行控制。但获取的属性是很多值在一切,且路径不一致。接触Node-red时间也不长,N多节点不会用。甚至百度都不知道咋去说。无奈,论坛中求助各位大神。

相关参数


如图:
现通过POST获取了主机中的所有设备及流程
可以获得lights(灯)envs(传感器)等值
linghts路径为:payload.data.deviceInfos.lights[0]
envs路径为:payload.data.deviceInfos.envs[0]
以上[0]是代表一个设备

详细如下

一:灯

灯里面也包含很多信息
"ieee"都是独立的,控制也需使用 ieee
路径:payload.data.deviceInfos.lights[0].ieee
"status"为灯的状态,0为关,1为开
路径:payload.data.deviceInfos.lights[0].status
"deviceName"为设备名称
路径:payload.data.deviceInfos.lights[0].deviceName
以上[0] 是讲的某一设备

二:传感器


传感器有二阶路径
"ieee"都是独立的
路径:payload.data.deviceInfos.envs[0].ieee
"value”为传感器状态 “有人&无人”,“开启&关闭”
其中value针对绿米人体分为两路
一路为人体状态,一路为光照度
状态路径:payload.data.deviceInfos.envs[4].properties[0].value
光照度路径:payload.data.deviceInfos.envs[4].properties[1].value
门磁状态路径:payload.data.deviceInfos.envs[1].properties[0].value
以上[4] 是讲的某一设备

最终需求


一:存储需求
现希望每一个设备可以单独保存,并对应其名称及其状态
如:灯
期望获取其name 且对应其status状态
并每个都是独立的
传感器同理
然后使用MQTT保存

二:控制需求
可以使用MQTT进行状态变更的控制

最终目的


最终期望使用Iobroker中的homkit或者HAB等界面进灯的控制及传感器的数值显示,调用。

以上
还望各位大神出手相助,小弟感激不尽,以礼相待。

循环当前设备信息,重构一个对象形式以ieee为键,具体设备信息为值,这样就可以方便的获取设备的信息,存储为全局,任意地方都可以直接使用。这样你的流程可以分一个定时同步设备和一个控制的流程即可


具体信息如下:

{"id":"263de756.0a56a8","type":"tab","label":"流程1","disabled":false,"info":""},{"id":"2e792144.aa05ce","type":"function","z":"263de756.0a56a8","name":"基础数据","func":"var payload = ]\npayload[0] = {id: 1, ieee:'12', rname:\"第1个设备\",status: 1}\npayload[1] = {id: 2, ieee:'13', rname:\"第2个设备\",status: 0}\npayload[2] = {id: 3, ieee:'14', rname:\"第3个设备\",status: 1}\npayload[3] = {id: 4, ieee:'15', rname:\"第4个设备\",status: 0}\npayload[4] = {id: 5, ieee:'16', rname:\"第5个设备\",status: 1}\nmsg.payload =payload\nreturn msg;","outputs":1,"noerr":0,"x":240,"y":180,"wires":"d4d5b80a.22ebb8","789ddda5.8f83d4"]]},{"id":"9ba115fd.12a538","type":"inject","z":"263de756.0a56a8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":160,"wires":"2e792144.aa05ce"]]},{"id":"d4d5b80a.22ebb8","type":"debug","z":"263de756.0a56a8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":460,"y":160,"wires":]},{"id":"789ddda5.8f83d4","type":"function","z":"263de756.0a56a8","name":"数据整理","func":"var devices = msg.payload || ]\nvar payload = {}\n\ndevices.forEach(function(e){\n    payload[e.ieee] = e\n})\nmsg.payload = payload\n//全局存储\nglobal.set('devices', payload)\nreturn msg;","outputs":1,"noerr":0,"x":450,"y":240,"wires":"e500c49e.5f1e98"]]},{"id":"e500c49e.5f1e98","type":"debug","z":"263de756.0a56a8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":660,"y":240,"wires":]}]