本帖最后由 sirakawa 于 2018-5-29 20:57 编辑
头几个月买了个Sonoff Rf Bridge,发现这按钮,开关这类不需要反馈的,用rf十分的方便
不过rf这玩意问题也不少,主要是2个,
一个多个RF设备同时发信号会导致干扰,
一个就是同一个按钮连续按(1秒1次就算连续),发出的信号是一样的。而且是完全一样,导致没法触发ha的状态变更
解决方法嘛,1就是RF只用来开关这类人工操作的,降低重复的几率,而且失败了也可以再按一下
2就是给他做一个状态变更出来~~
前期准备
Sonoff Rf Bridge 刷好 Sonoff-Tasmota
之所以用Sonoff-Tasmota而不是别的,一个是别的没怎么用过,一个是Sonoff-Tasmota会把所有接收到的信号都反馈给HAS
rf bridge本身只能记忆16个信号,如果不能把没记忆的信号返回给ha的话,就会导致使用的局限性
再HA中添加
sonoffRB换成你的rfbridge的名字
sensor:
# Sonoff RF Bridge
- platform: mqtt
name: 'Sonoff_RF_Bridge'
state_topic: '/sonoffRB/RESULT'
value_template: '{{ value_json.RfReceived.RfKey }}'
json_attributes:
- RfReceived
qos: 1
然后在自动化中写入下面的代码
#------------------------------------------------------------------------------#
# 收到RF信号更改覆盖MQTT情报,用来初始化传感器情报,便于RF发送重复CODE时候触发
#------------------------------------------------------------------------------#
- alias: Change Sonoff Rf Bridge Data
id: 'Change Sonoff Rf Bridge Data'
trigger:
- platform: state
entity_id: sensor.sonoff_rf_bridge
condition:
# 初期以外
- condition: template
value_template: '{{ states.sensor.sonoff_rf_bridge.state != "unknown" }}'
- condition: template
value_template: '{{ states.sensor.sonoff_rf_bridge.attributes.RfReceived.Data != "Resend" }}'
action:
- service: mqtt.publish
data_template:
topic: '/sonoffRB/RESULT'
qos: 1
retain: false
payload_template: >-
{% if states.sensor.sonoff_rf_bridge.attributes.RfReceived.Data == '6C754E' %}
{% set RfState = 'Remote Key1' %}
{% elif states.sensor.sonoff_rf_bridge.attributes.RfReceived.Data == '6C754C' %}
{% set RfState = 'Remote Key2' %}
{% else %}
{% set RfState = 'Other' %}
{% endif %}
{"RfReceived":
{"RfKey":"{{ RfState }}","Data":"Resend","D":
"Data:{{ states.sensor.sonoff_rf_bridge.attributes.RfReceived.Data }} High:{{ states.sensor.sonoff_rf_bridge.attributes.RfReceived.High }} Low:{{ states.sensor.sonoff_rf_bridge.attributes.RfReceived.Low }} Sync:{{ states.sensor.sonoff_rf_bridge.attributes.RfReceived.Sync }} RfKey:{{ states.sensor.sonoff_rf_bridge.attributes.RfReceived.RfKey }}"}}
##############
其中6C754E这类16进制代码改成你的RF开关发射的DATA,然后下面的rfstate这个名字可以随便起
这个的作用就是收到信号之后再次发送一个mqtt消息,覆盖之前的状态,这样下次来新的哪怕是重复的信号都会触发状态变更
使用
仿照下面这么用就可以,状态变更到你上面设置的名字那里就会触发~
- alias: key1
id: 'Remote Key1'
trigger:
- platform: state
entity_id: sensor.sonoff_rf_bridge
to: 'Remote Key1'
action:
- service: switch.toggle
entity_id: switch.xxxxxxxx
完工~~
而且不需要任何第三方组件,纯HA解决~
|