node-red笔记---tc1通过nr接入homekit流程解说环节

node-red笔记


一、tc1示例讲解
我先从mqtt获取继电器的开关状态

1、使用debug节点获取mqtt in输出内容。
然后查看工作台tc1 mqtt in的输出是什么东西,用debug查看输出内容。(可以按一下你的设备按钮,让他输出数据)


在这上面可以可以看见这个节点会传出tc1/tc1_9a179a/stat/POWER1-6的状态

2、使用功能列表里面的switch节点
Tc1是多个继电器的,可以用switch这个节点把他们分离出来。

然后用switch把topic区分是那一路的继电器,然后输出POWER1-6

image
例如我们用1号口,这样 1号口就会只出tc1/tc1_9a179a/stat/POWER1这个topic的数据
image

3、数据转换让hk能读懂你发过去的数据
参照刚刚debug中的payload就是继电器状态,如果要在节点中接入ui,那就用已下方法
这个是nr的ui,如果不想要可以不加。(ps:这个switch是ui节点中的)
image
继续往下走
image

从上面的debug节点中得到的,on off对应传出来的payload的值就行了。

*用function或者change节点来进行数据转换

hk的开关要求数据是msg.payload.On的,但是上一步传出来的是msg.payload,那就要转换了
用functinon节点的函数转换如下图:
image

如果不用函数 用change节点也行,如下图:
image

之后,拖个hk的节点。这样就实现了,mqtt in到hk的数据转换,让hk能读懂mqtt in输出的数据。

4、数据转换让hk输出的数据能给mqtt out读懂你发过来的数据
hk的数据结构也知道了,那控制hk传出的就是msg.payload.On,但是mqtt要的是msg.payload到对应的topic里
这里同样的道理,在把hk的输出数据转换为mqtt out节点能读懂的数据,转换一下把hk的数据转换成mqtt要的就行。
如图
change节点的方式
image

用functinon节点的函数转换如下图:
函数红框里就是转换+发送给mqtt的
image

第一个let是获取上一步传出来的topic,第二步是把获取到的topic中的stat换成cmnd
stat是状态 cmnd是控制
最后一个mqtt接收 如果不会写函数 就在节点里写好topic
image

如果用函数,可以在函数里把topic也一起组合好发给mqtt,不用写topic
image

因为写了函数,在函数里面也写了topic所以到这会接受上一步传的paylod就可以控制了

这样就做好了数据转换,下面是大概流程走向。

mqtt in- - ->数据转换转换为hk能读懂的数据- - ->hk节点- - ->数据转换把hk发出的数据转换为mqtt ou能读懂的数据类型- - ->mqtt out

附上tc1的流:TC1.json (23.3 KB)

完整的hk控制开关的流就完事了

感谢iob官方直播群的大佬,是大佬在群里开小灶解说这个流,我只是负责整理。感谢大名鼎鼎的《一只菜鸡-zhz》无处不在的大佬,顺便说一句,玩软路由的都知道lede吧,ks的lede也知道吧,zhz是ks群的群主。哈哈哈哈哈哈

附上群号

我好崇拜zhz大佬,大家赶紧去抱他大腿

如此优秀的帅哥,如此厉害的zhz,抱腿没商量

这样的教程真棒~~

下午直播群听了一遍,笔记做的没楼主优秀
果断保存楼主的了

这才是真笔记啊!!牛皮!!!吹爆zhz!!