NR小白学习、总结第一帖:万物流程解析和心得体会分享。

说在前面

感谢IOB的Q群。

适用人群

1、初学nodered、自己不了解、通过自己的学习、花费一些时间成本、最终可以学会去使用它的人群;

2、会主动学习;

3、会利用现成的工具(会用<谷歌搜索>、<Chrome右键Google翻译成简体中文>等);

4、愿意去啃官方文档的。。。

小白解析

0、先贴万物流程图:

1、token流程:

TIM截图20190522205148.png

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的世界!

跟这大佬不迷路!我来了。

跟随大佬的脚步没有错:)