说在前面
感谢IOB的Q群。
适用人群
1、初学nodered、自己不了解、通过自己的学习、花费一些时间成本、最终可以学会去使用它的人群;
2、会主动学习;
3、会利用现成的工具(会用<谷歌搜索>、<Chrome右键Google翻译成简体中文>等);
4、愿意去啃官方文档的。。。
小白解析
0、先贴万物流程图:
1、token流程:
inject:作为输入端(译名时间戳),常用的触发节点;
debug:作为输出端,用来看调试日志。
流程解释,上图中两个inject节点:
“定时2个小时:是因为花神的节点本身说明了:token需要两个小时获取一次,所以有了这个定时的时间戳;
“手动触发”:只是为了调试看日志。
正常情况下,如果你不手动触发的话,NR右侧的信息输出窗口每隔两个小时会有一条获取token的日志。
2、dodoJie大佬提供的sensor转换Fun写法:
这个处理节点的语法:
var newMsg = {payload:msg.payload.dataArray.data[0]};
个人理解为:经过这个处理环节,输出给下一环节的数据均来自于上面的设备“0”
花神的第二个节点“设备监控”(上面的登陆处理完成,且正常获取了token的情况下)获取了从万物的服务上拉下来的数据,我因为买了3个GPS模块,所以会在这个节点的日志中,会得到三个设备的数据,见图:
D大的处理结果就是,把“设备监控”中、利用花神的节点、从万物服务器拉下来的数据通过筛选(这里是0这个设备的数据),发送给下一个处理的环节,下一个环节收到的信息(如下图,注意那个msg.payload):
结合上面的描述,仔细看图找点规律。
3、萝卜大佬提供的位置追踪的Fun写法:
流程:
上面同理,从"设备监控"获取到的数据,取了我们需要的值(经纬度、电量等),通过筛选处理发给了下一个流程;
这个环节你筛选了几个数据值:
比如经纬度(longitude和latitude)、电量(battery_level,因为我现在这个模块本身就没有电池,所以就的不到数据)、speed(来自设备[0]的数据中的speed)、gps_accuracy(我汉化了个名字叫定位方式,来自于[0]中的source_type)等。
这个流程中的下一步:
这个作用,我目前的理解是,把上面的到的数据转换成json格式,然后通过MQTT发出去。
4、萝卜大佬提供的地理信息转换的Fun写法:
如上图的箭头指示:
rbe前面的FUN处理,为了取得你的设备的经纬度信息,rbe将经纬度信息转换成花大的“逆地理解析”这个节点能读取的内容;
下一个FUN处理就是为了把他转换成可以通过MQTT发送出去、接收方能利用的数据。
OK,整个流程据基本上自我解释完了。
5、自己学习了一下NR时间戳的转换方法:
把接收到的秒(那些各种time数据)转换成正常的年月日时分秒,感谢大佬的指点,还有小鬼鬼,然后搞定了一个简单的FUN:
var newMsg = {payload:'msg.payload.dataArray.data.0.gps_time',};
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
var minute = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
var second = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
msg.payload = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
return msg;
流程图:
折腾了这么久,就学了这么点东西,特别感谢两个腿粗的大佬手把手给我写了这个FUN。
最后
欢迎来到NodeRED的世界!