本帖最后由 luzai 于 2019-11-22 21:21 编辑
2019-11-22更新
由于新版HA对自定义组件重新定义,就为新版改写了
注意:服务名称已经改成 :set_state.set_state
配置跟旧版的一样
配置:
附件文件放入custom_components目录即可。
在configuration.yaml写入:
set_state:
重启HA后即可看到 set_state.set_state 的服务
大致说一下我写这个插件的需求,主要是给空调加了个状态反馈的功能(射频门磁实现),射频->MQTT->HA状态更新同步,但是HA系统没有内置这个功能,于是就自己动手丰衣足食了。
配置:
附件文件放入custom_components目录即可。
在configuration.yaml写入:
set_state:
重启HA后即可看到 climate.set_state 的服务,因为我是用于空调状态更新的所以就放在climate下,当然有能力的可以稍微改一改放在自己喜欢的domain下调用。
该插件可以更改HA组件的状态(不仅限于空调),也就是state,不改变原有的attribute。
自动化调用举个例子,不要完全照搬
service: climate.set_state
data:
entity_id: switch.zhuwo_air_conditioner
state: 'on'
为了利于一些同学理解,我就大概举个应用场景的例子:
我书房的空调是壁挂机形式安装的,为了实现人走一段时间后自动关闭空调(如果开着的情况下)的功能,其中一个先决条件就是要知道空调的实时开关状态,这个时候就可以通过门磁贴在导风板上实现开关的反馈。
本例采用的是射频门磁,空调打开,导风板自动会打开送风,于是门磁就处于开的状态,自动发送射频信号,注意此处采用的射频门磁是双向门磁即开、关会发射不同的射频码用于区分开关状态,Sonoff Rf Bridge接收到射频信号后,通过MQTT发布获取的射频码信息,HA监控到该射频码后通过MQTT发布空调的状态信息(为什么不直接调用climate.set_state更改开关状态,主要是考虑到HA重启后也可以获取空调的正确状态,MQTT用于保存空调的实际状态),HA获取空调MQTT状态改变的信息后即可调用climate.set_state服务把switch.zhuwo_air_conditioner更改为on的状态。
空调开-->射频门磁发送射频码-->Sonoff Rf Bridge接收-->发布MQTT信息:tele/sonoff_rf_bridge/RESULT-->HA自动化接收处理tele/sonoff_rf_bridge/RESULT识别出是该空调开状态-->HA 发布MQTT信息: home/notification/airconditioner/shufang的状态信息-->HA自动化接收处理-->调用climate.set_state服务把switch.zhuwo_air_conditioner更改为on的状态。
当然有同学说也可以直接调用switch.zhuwo_air_conditioner的turn_on服务触发,但是我觉得没有必要重复触发开这个动作,我不想听到那一声不知所以的滴一声(红外遥控再次触发),而且也会容易改变空调现有的设置状态(比如温度、风速等等)。
|