找回密码
 立即注册

微信扫码登录

搜索
查看: 44036|回复: 53

[教程系列] 通过Node-red 将HA中的传感器接入HomeKit

  [复制链接]

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
发表于 2018-1-13 20:23:53 | 显示全部楼层 |阅读模式
本帖最后由 lanhemeng 于 2018-1-13 20:23 编辑

先看效果
捕获1.PNG

主要用到的Node有以下两个,node-red-contrib-home-assistant和node-red-contrib-homekit

捕获2.PNG

这里以小米插座为例:
捕获3.PNG
1.先插入一个Node current state,用来检测当前插座的开关状态,进行反馈
新添加Server节点,如下图:
捕获4.PNG
之后,Node-red会自动搜索EntityID,选择相对应的无线开关
捕获5.PNG
2.插入Change节点,用于格式化payload为相应的JSON格式;
捕获6.PNG
3.添加Homekit节点,并新建一个Switch Accessory节点
捕获7.PNG
设置Server为Switch
捕获8.PNG
4.分别添加一个Function和Switch节点,
Function里的代码
on1=msg.payload.On;
global.set("on1",on1);
var msg= { payload:on1};
return msg;


Switch节点里的设置
捕获9.PNG

5.添加两个call service节点;
Service一个设置为turn_on,另外一个设置为turn_off,不要用触发
捕获10.PNG

部署之后就可以在Home APP里添加设备了;

在Node-Red里,每一个HomeKit的节点都是独立的,这样就避免诸如HB里一个设备没有响应其他设备都挂了的窘境;

另外Node-red里还有小米全家桶的Node节点,可以直接介入小米网关里的设备,非常方便;
捕获11.PNG

这种图形化编程不用码代码,非常方便;

谢谢大家;

回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-1-13 21:17:01 | 显示全部楼层
wanyakui520 发表于 2018-1-13 21:13
大神,请问下HA怎么去控制接入node 的设备,我现在卡在这了。

直接用current state检测HA的状态控制进入Node-red就行了啊
回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-1-13 21:32:02 | 显示全部楼层
wanyakui520 发表于 2018-1-13 21:30
current state不是状态监测吗?这个能实现HA控制接入在NODE的485设备?

说下具体你要实现的功能啊
回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-1-18 17:37:34 来自手机 | 显示全部楼层
czweb 发表于 2018-1-18 15:36
node-red里的homekit插件,你知道如何只更新按钮状态吗?
因为{"On":true}就直接执行动作了,我只想更新hom ...

Node-red homekit是有反馈输入的
回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-2-26 14:15:52 | 显示全部楼层
czweb 发表于 2018-2-21 19:13
更新按钮状态的代码是什么?https://flows.nodered.org/node/@boneskull/node-red-contrib-homekit
这个 ...

开关的话,输入JSONata  { "On": true }   或者 { "On": false }来更新按钮状态
回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-2-26 16:50:24 | 显示全部楼层
czweb 发表于 2018-2-26 15:29
你说的这个我知道。但是我只需要更新按钮状态,而不需要“开”或“关”这个动作。
例如:需要这个原因是 ...

只输入不输出不就行了?
回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-2-26 21:21:48 | 显示全部楼层
czweb 发表于 2018-2-26 20:37
要这么编辑node-red估计就太费劲,这个判断我是没有想出来怎么加,即可开关设备,又可实时同步状态。 ...

1.PNG
我这里面HomeKit和HA都是同步的

回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-2-27 20:54:45 | 显示全部楼层
angelyangw 发表于 2018-2-27 16:39
大神 如图的call service里面,如果我想把value的值从上游的flow中获取,比如一个inject的payload中得到, ...

If the incoming message has a `payload` property with `domain`, `service` or `data` set it will override any defaults(if any) set within the node configuration.

通过输入msg.payload.data来进行动态修改
回复

使用道具 举报

9

主题

118

回帖

1084

积分

金牌会员

积分
1084
金钱
952
HASS币
20
 楼主| 发表于 2018-3-6 16:24:49 | 显示全部楼层
angelyangw 发表于 2018-2-28 11:25
还是没弄明白怎么写...

搞定了吗?你可以把你HA组件的配置发给我,我有时间帮你试一下
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )

GMT+8, 2025-7-8 12:50 , Processed in 0.059780 second(s), 10 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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