『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 9747|回复: 14

[教程系列] 老白NR教程第一帖:解析万物在线NR流程~那些抄来的东西。

[复制链接]

74

主题

1958

帖子

7963

积分

元老级技术达人

积分
7963
金钱
5955
HASS币
430

活跃会员教程狂人

发表于 2019-5-22 22:26:41 | 显示全部楼层 |阅读模式
本帖最后由 咸味土豆 于 2019-5-23 19:26 编辑

声明

本文仅针对坛子里面用了我发的那个万物流程、并且跟我一样不会用NR的兄弟。

帖子链接:https://bbs.hassbian.com/thread-7202-1-1.html

这几天也抽空琢磨了下,有一些收获,感觉还是有必要发个帖子分享一下,一起学习。

前情提示:其他人均可忽略,其他人均可忽略,其他人均可忽略。

适用人群

1、初学nodered或者HA、你感兴趣、自己却不了解、通过自己的学习、花费一些时间成本、最终可以学会去使用它的人群。

2、会主动学习;

3、会利用现成的机器OR工具(此处仅仅指代会用<谷歌搜索>、<Chrome右键Google翻译成简体中文>等);

4、会去查看官方文档

HA官方支持的设备接入:

https://www.home-assistant.io/components/

HA官方资料:

https://www.home-assistant.io/docs/

NR官方文档:

https://nodered.org/docs/

不适用的人群

大佬们

小白教程

先贴万物流程图:

TIM截图20190522203327.png

1、token流程:

TIM截图20190522205148.png

inject:作为输入端(译名时间戳),可能是最常用的节点了,NR的流程计算,遵循“输入”-“处理”-“输出”原则;

debug:作为输出端,用来看调试日志(NR的优势,HA是需要重启看log的,检查配置千遍,不如重启看一下日志)。

上图中两个inject节点:

“定时2个小时:是因为花神的节点本身说明了:token需要两个小时获取一次,所以有了这个定时的时间戳;

“手动触发”:只是为了调试看日志。

正常情况下,如果你不手动触发的话,NR右侧的信息输出窗口每隔两个小时会有一条获取token的日志。

TIM截图20190522211335.png

2、dodoJie大佬提供的sensor转换Fun写法:

TIM截图20190522204606.png

这个处理节点中:

var newMsg = {payload:msg.payload.dataArray.data[0]};

个人理解:经过这个处理环节,输出给下一环节的数据均来自于上面的设备“0”

TIM截图20190522212431.png

花神的第二个节点“设备监控”(上面的登陆处理完成,且正常获取了token的情况下)就是为了获取从万物的服务上拉下来的数据,我因为买了3个GPS模块,所以会在这个节点的日志中,找到三个设备的数据,json数据格式和位置见图:

TIM截图20190522213228.png

D大的处理结果就是,把“设备监控”中、你利用花神的节点、从万物服务器拉下来的数据通过筛选(这里筛选了msg.payload-dataArray-data-0这个设备的数据),发送给下一个处理的环节,下一个环节收到的信息(如下图,注意那个msg.payload):

结合上面的描述,仔细看图找点规律。

3、通过MQTT发送:

通过上面的处理,你就得到了一个新的json格式的文本,然后你就可以通过HA本身对接收到的json数据进行处理,得到了万物的GPS模块的Sensor信息。

g兄在原贴中贴上了利用HA的json转换时间戳的写法。

4、萝卜大佬提供的位置追踪的Fun写法:

流程:

TIM截图20190522214949.png

上面同理,从设备监控只能够获取到的数据,取了我们需要的值(经纬度、电量等),通过筛选处理发给了下一个流程;

这个环节你筛选了几个数据值:比如经纬度(longitude和latitude)、电量(battery_level,因为我现在这个模块本身就没有电池,所以就的不到数据)、speed(来自设备[0]的数据中的speed)、gps_accuracy(我汉化了个名字叫定位方式,来自于[0]中的source_type);

为什么要改个名字叫“gps_accuracy”而不叫原名称的“source_type”,因为HA的devices_track.xxxxx设备中的Attributes值中就叫“gps_accuracy”,所以需要改个名字,让经过这个FUN处理的信息发送给HA的时候转换成HA自己定义的、可以识别的ID;

这个流程中的下一步:

TIM截图20190522215921.png

这个作用,我目前的理解是,把上面的到的数据转换成json格式,然后通过MQTT发出去(HA可以识别的格式),我还没学到这个。

5、萝卜大佬提供的地理信息转换的Fun写法:

TIM截图20190522220512.png

如上图的箭头指示:

rbe前面的FUN处理,为了取得你的设备的经纬度信息,通过rbe过滤掉不用的信息,将经纬度信息转换成花大的“逆地理解析”这个节点能读取的内容,,然后下一个FUN语言就是为了把他翻译成HA能理解的语言,可以用过MQTT发送给HA、然后通过自定义的devices_track.xxxx(json格式的写法)转换成实际的地理位置。

OK,整个流程据基本上解释完了。

6、自己学习了一下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() &lt; 10 ? "0" + date.getHours() : date.getHours();
    var minute = date.getMinutes() &lt; 10 ? "0" + date.getMinutes() : date.getMinutes();
    var second = date.getSeconds() &lt; 10 ? "0" + date.getSeconds() : date.getSeconds();

msg.payload =   year + "-" + month + "-" + day + "  " + hour + ":" + minute + ":" + second;

return msg;

流程图:

TIM截图20190522221414.png

折腾了这么久,就学了这么点东西,欢迎指导交流,路过大佬请轻拍,谢谢。


最后

欢迎来到NodeRED的世界!






评分

参与人数 2金钱 +40 HASS币 +10 收起 理由
xieahui + 20 土豆大神整个流打个包分享下呗.
+ 20 + 10 小白学习典范!

查看全部评分

所有过往,皆为序章。
回复

使用道具 举报

62

主题

581

帖子

6075

积分

论坛元老

Rank: 8Rank: 8

积分
6075
金钱
5419
HASS币
240

教程狂人论坛风云人物

发表于 2019-5-22 23:03:12 | 显示全部楼层
rbe的作用有误。这个用来过滤一些重复的信息。比如你第一次发的信息是1,第二次还是1....,添加了rbe,选择了里面的如果数值没有变化,则不要重复发送了。这个节点还有一些其他选项,自己打开看来学习。

评分

参与人数 1金钱 +6 收起 理由
咸味土豆 + 6 666666

查看全部评分

尝试过萝卜,我想你一定会忘记青瓜
回复

使用道具 举报

74

主题

1958

帖子

7963

积分

元老级技术达人

积分
7963
金钱
5955
HASS币
430

活跃会员教程狂人

 楼主| 发表于 2019-5-22 22:28:05 | 显示全部楼层
哎,图片为啥变成了附件,编辑的时候不这样啊。XXXX
所有过往,皆为序章。
回复

使用道具 举报

123

主题

4629

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16077
金钱
11363
HASS币
45
发表于 2019-5-22 22:43:29 | 显示全部楼层
咸味土豆 发表于 2019-5-22 22:28
哎,图片为啥变成了附件,编辑的时候不这样啊。XXXX

那些没有在主贴中插入的图片,会变成附件模式显示。把它们插入到合适位置就可以了。话说土豆兄的NR技术越来越高了,我是望尘莫及了。。
回复

使用道具 举报

2

主题

321

帖子

1925

积分

金牌会员

Rank: 6Rank: 6

积分
1925
金钱
1604
HASS币
0
发表于 2019-5-23 00:18:09 | 显示全部楼层
感谢分享,正好要学习NR
回复

使用道具 举报

7

主题

1977

帖子

5671

积分

论坛元老

流水无味

Rank: 8Rank: 8

积分
5671
金钱
3694
HASS币
145

灌水之王

发表于 2019-5-23 07:40:06 | 显示全部楼层
感谢分享 从中学习
回复

使用道具 举报

10

主题

661

帖子

5328

积分

论坛元老

Rank: 8Rank: 8

积分
5328
金钱
4662
HASS币
50
发表于 2019-5-23 09:55:00 | 显示全部楼层
膜拜中。。
回复

使用道具 举报

39

主题

2072

帖子

7765

积分

元老级技术达人

积分
7765
金钱
5678
HASS币
110
发表于 2019-5-23 09:56:33 | 显示全部楼层
虽然知道原理 但是这么详细的讲一下  看过理解更深了
回复

使用道具 举报

39

主题

750

帖子

4715

积分

论坛元老

Freddy.

Rank: 8Rank: 8

积分
4715
金钱
3940
HASS币
0

最佳新人卓越贡献

发表于 2019-5-23 14:48:57 | 显示全部楼层
老小白前来点赞
回复

使用道具 举报

0

主题

240

帖子

3974

积分

论坛元老

Rank: 8Rank: 8

积分
3974
金钱
3734
HASS币
0
发表于 2019-5-23 16:18:38 | 显示全部楼层

感謝樓主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-13 22:36 , Processed in 0.375486 second(s), 38 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表