标签:# <标签:0 x00007fc41bc26d20 >

下面是两种接收Sonoff RF桥发布的有效载荷的策略(与Tasmota固件一起闪过)。

策略1:value_template

在这种策略中,所有传感器都订阅射频桥发布的相同主题。这个主题的结构取决于你在配置射频桥时如何定义它。这个例子将使用' tele/RF_Bridge/RESULT '。将其更改为您为桥设置的任何内容。

因为所有传感器都订阅了相同的主题,所以传感器将接收用于另一个传感器的有效载荷。当这种情况发生时,它value_template必须产生一个有效的状态.如果没有,Home Assis19463331伟德国际tant将报告以下警告消息:“没有为实体找到匹配的键”。传感器的value_template必须总是返回一个有效的状态

对于MQTT二进制传感器,默认为payload_onpayload_off这是(大写)。另一方面状态binary_sensor可以是(小写)。记住这个重要的区别,我们可以用它来构造value_template这确保有效负载总是匹配的的东西什么也没有。

在下面的例子中,如果有效负载包含既不2 c8d0a2 c8d0e,它报告binary_sensor的当前的状态。换句话说,无论它在有效载荷中接收到什么value_template总是报告有效状态。

- platform: mqtt name: 'Bathroom Door' state_topic: 'tele/RF_Bridge/RESULT' value_template: >- {% if value_json.RfReceived. state_template: 'tele/RF_Bridge/RESULT' value_template: >Data == '2C8D0A' %} {{'ON'}} {% elif value_json.RfReceived. Data == '2C8D0A' %} {{'ON'}} {% elif value_json.RfReceived。Data == '2C8D0E' %} {{'OFF'}} {% else %} {{states('binary_sensor.浴室门')| upper}} {% endif %} device_class: door

如果你有一个传感器报告一个然后你可以通过使用off_delay选择。

在这个例子中,Data = E5D30E表示运动传感器为但是没有可用的命令来指示传感器何时启动.我已经设置off_delay: 15所以运动传感器会自动设置为经过15秒。

- platform: mqtt name: ' hall Motion' state_topic: 'tele/RF_Bridge/RESULT' value_template: >Data == 'E5D30E' %} {{'ON'}} {% else %} {{states('binary_sensor.hallway_motion') | upper}} {% endif %} off_delay: 15 device_class: motion

这种策略对一些传感器很有效,但伸缩性不好。这有一个潜在的性能损失,因为所有传感器都订阅了相同的主题。如果你有十个传感器,那么RF桥发布的每个有效载荷将由所有十个传感器进行评估。换句话说,每个有效载荷被处理10次。


策略2:信号分离器

与之前的策略相比,解复用提供了性能优势。它使用自动化分离(多路复用)射频桥的单一主题成多个主题,每个传感器一个。每个传感器都订阅了自己的主题,只接收为它准备的有效载荷。

与之前的策略不同,对于10个传感器,每个有效载荷处理10次,此策略只处理每个有效载荷两次。有效载荷首先由自动装置处理,然后由传感器处理。

要做到这一点,您必须配置Home Assistant以使用python_scrip19463331伟德国际t组件。完整的说明可以在www.19463331.compython_script集成的文档.以下是基本步骤:

  1. 添加python_script:到你的configuration.yaml文件。
  2. 创建如下子目录:配置/ python_scripts
  3. 重新启动家里的助19463331伟德国际理。

创建一个新文件配置/ python_scripts被称为rfbridge_demux.py包括以下内容:

d = {2 c8d0a:[“sensor1”,“上”,“真正的”),“2 c8d0e”:[‘sensor1’,‘了’,'真的'],“E5D30E”:[‘sensor2’,‘上’,'假'],“30 d8a0”:[‘sensor3’,‘上’,'假']}p = str (data.get(“有效载荷”)如果p不是没有:如果p在d.keys (): service_data ={“主题”:“home /{}”.format (d [p][0]),“有效载荷”:“{}”.format (d [p][1]),“qos”:0,“保留”:“{}”.format (d [p] [2])}:service_data ={“主题”:“home /未知”,“有效载荷”:“{}”.format (p)、“qos”:0,“保留”:“假”}记录器。warning(' Received unknown RF command: {}'.format(p)) hasss .services. services调用('mqtt', 'publish', service_data, False)

显然你得修改字典。d)所以它包含你的射频桥的命令。字典中每个条目的格式很简单:

“有效载荷”:[“话题”,“状态”,“保留”)

因为我们使用的是python_script,所以您可以将传感器添加到字典中,而不必重新启动Home Assistant。19463331伟德国际字典的设计使您可以指定传感器的主题是否应该保留其有效负载。

  • 因为门传感器报告了这两个在其状态中,自动化可以使用保留:真当发布到接触传感器的主题。当Home19463331伟德国际 Assistant重启时,它将重新订阅联系人传感器主题,并从代理接收其当前(保留的)状态。: + 1:

  • 另外两个传感器(运动传感器和按钮)没有报告状态。我们使用off_delay选项自动将它们重置为.然而,这种技术确实可以发布到它们各自的MQTT主题(即一次设置为话题总会出现).因此自动化应该发布到他们的主题使用保留:假.否则,如果使用保留:真,当你重启Home Assistant19463331伟德国际时,它会错误地将这些传感器设置为: 1:

这是必需的自动化。别忘了换衣服主题:到您为射频桥配置的主题。

—alias: 'rfbridge_demultiplexer'触发器:—platform: mqtt topic: tele/RF_Bridge/RESULT action:—service: python_script。rfbridge_demux data_template: payload: '{{trigger.payload_json.RfReceived.Data}}'

配置二进制传感器变得非常简单。没有value_template是必要的。

- platform: mqtt name: 'Bathroom Door' state_topic: 'home/sensor1' device_class: Door - platform: mqtt name: '过道运动' state_topic: 'home/sensor2' off_delay: 5

请注意

如果你使用策略2并且有一个以上的RF桥,你可以简单地配置所有它们来发布到相同的主题。或者,给每个人分配一个独特的主题,然后automation.rfbridge_demultiplexer,为每个主题创建一个MQTT触发器。


编辑

如果您希望使用Node-Red执行多路解复用任务(而不是建议的python_script)这里提供了一个合适的函数节点

编辑

对配置python_script集成的说明进行了微调。

编辑

在python_script中,修改如下:

p = data.get(“有效载荷”)

:

p = str (data.get(“有效载荷”))

为了适应0.118的自动类型转换,其中数字字符串被自动转换为整数。

52个喜欢
433 Mhz警报器设置HA报警面板和Sonoff RF桥
rtl_433+MQTT气象站-为什么室外和室内值交替显示
用一个射频码(射频桥)开关设备
自动化Somfy百叶窗与D1迷你和MQTT模板传感器帮助语法需要
Mqtt.py日志警告“没有为实体找到匹配的有效负载”
2019年4月最佳门传感器?
MQTT规则新手问题
允许所有传感器是持久的,而不仅仅是input_boolean
用于通常打开的门的门传感器
Mqtt.py日志警告“没有为实体找到匹配的有效负载”
MQTT二进制传感器能否保持它的状态,或者我需要一个Input_Boolean?
传感器状态改变时的时间戳和图标
虚拟binary_sensor仅仅从自动化更新?
需要帮助Sonoff桥和PIR自动化
使用Tasmota RF Bridge和rm433遥控器来控制灯光(hue ikea lights)
在Tasmota固件上带有Sonoff RF桥的射频设备:在启动时获得传感器状态
Tasmota MQTT 19463331伟德国际/助理
两个状态射频门传感器
谁能告诉我我的射频开关是否显示在MQTT Explorer中?
更新杀死了我的自动化- 2019年9月
Sonoff RF桥(塔斯莫塔)在HA注册
Sonoff RF桥(塔斯莫塔)在HA注册
Mqtt Sonoff桥
如何配置HA通过MQTT通过Sonoff的RF桥发送433MHz RF信号?
433传输速度+sonoff+zigbee2mqtt+宜家灯泡
传感器不工作
带有塔斯莫塔错误码的射频桥
在Tasmota固件上集成射频设备和sonoff射频桥
Sonoff RF桥和门传感器问题
Sonoff射频二进制传感器
DW1磁传感器通过Sonoff桥-基本帮助
自动检查无错误,执行正常,但日志报告错误
Sonoff桥MQTT PIR配置
[解决]-似乎不明白为什么我的射频开关是发射
多传感器使用相同的MQTT主题
MQTT二进制传感器配置问题,没有匹配的有效负载
MQTT,二进制传感器和意外状态
我的射频传感器/二进制传感器恒定的错误信息
射频桥和家庭助理之子19463331伟德国际
Esphome -在mqtt中发布射频码
多个Sonoff桥梁
自动化工作,但YAML是丑陋的
日志充满:没有为实体找到匹配的有效负载
索诺夫桥与塔斯莫塔正确的状态
在hass重启期间管理MQTT Sonoff RF桥二进制传感器状态的自动化或脚本
Mqtt自动编辑器无法使用有效负载-请帮助
具有多个payload_on的Mqtt二进制传感器
在mqtt 'text'有效负载上使用value_template和regex_search
解决:嗯,尝试使用tasmotting sonoff rf桥
Sonoff桥传感器和电池代码
SonOff Bridge和Tasmota
MQTT有效载荷自动化RF433光开关
Rfbridge_demux接收到未知RF命令
Rfbridge_demux接收到未知RF命令
Sonoff Bridge MQTT门传感器value_json错误
RFLink:使用每个433兆赫遥控个人按钮
模板的使用
Mqtt。带有塔斯莫塔射频桥的开关
MQTT传感器在有效负载不总是包含值时“闪烁”?
Zbridge与“tasmota”集成和“Zigbee2Tasmota”(不是ZHA)
Sonoff DW2门传感器将处于“不可用”状态
YAML正在成为过去吗?
433门铃和sonoff桥导
使用OpenMQTTGateway设置带有8266射频网关的门传感器
MQTT二进制传感器的传感器错误消息
门传感器
二进制传感器升级到0.112后显示不可用
Mqtt.py日志警告“没有为实体找到匹配的有效负载”
重启后二进制传感器状态
试图让Sonoff RFBridge控制射频光
通过mqtt的门发出警报
Sonoff rf桥和远程灯
MQTT传感器(来自domoticz)
Sonos开关ON/OFF/音量控制
从HA发送mqtt RFRaw命令?我错过了什么?

很好,谢谢分享

非常感谢!

谢谢你的来信。说明书写得很清楚,但不知怎的,我就是不能让其中一个工作。我可能会漏掉一些东西我的剧本。

你需要帮忙修理吗?

1像

还没修好呢。主要是从你的代码复制和粘贴,只改变某些东西,以匹配我有什么。我更喜欢你推荐的第二种方法,因为它效率更高
执行。我确实重启了很多次,这些脚本上没有错误。它们都正确地显示在HA屏幕上,但当设备打开或关闭时没有状态变化。我试图解决这些问题,但我没有看到任何错误记录在日志文件中。
谢谢你的关心。

是的,请。你能帮我排除一下故障吗?另一件事我的RF收到的数据格式代码在十进制,我应该改变到十六进制格式。

我需要看到射频桥、自动化和至少一两个传感器配置产生的有效载荷的样本。

我发现我有不同的主题tele/RFBridge/RESULT而不是tele/RF_Bridge/RESULT。
所以我在自动化脚本中改变了主题,但它仍然没有改变状态。

  • 别名:“rfbridge_demultiplexer”
    触发:
    • 平台:mqtt
      主题:电视/ RFBridge /结果
      行动:
    • 服务:python_script.rfbridge_demux
      data_template:
      有效载荷:“{{trigger.payload_json.RfReceived.Data}}”

我可以看到自动脚本触发每次门传感器打开/关闭

rfbridge_demux.py
d = {' 1230602 ':[' sensor1 ', ' ON ', ' true '],
“1230606”:[‘sensor1’,‘了’,‘真正的’),

二进制传感器:

消息在433Mhz射频桥

这是我的旧的。

  • 平台:mqtt
    名称:“测试门”
    state_topic:“tele RFBridge /结果”
    value_template:“{{value_json.RfReceived.Data}}”
    payload_on:“1230602”
    payload_off:“1230606”
    device_class:门
    qos: 1

我现在修好了。我确实复制了rfbridge_demuc .py再次修改了d部分,我必须更改一些东西,这导致了之前的python_script上的混乱。

我需要帮助写一个脚本重置设备与1代码,而不是off_delay:xx

DY-SQ100B漏水检测仪

这是我的旧重置脚本
重置脚本
序列:

  • 服务:mqtt.publish
    数据:
    主题:“电视/ RFBridge /结果”
    有效载荷:“{”RfReceived”:{“数据”:“11700753”}}”
    保留:“真正的”

谢谢,

干得好!

为什么要使用自动化将binary_sensor设置为off_delay可以帮你吗?

我只是想在手动复位装置之前检查一下漏水的地方。

1像

@123
这是一个很好的解决方案。非常感谢你创造和分享它。
你有它在github吗?如果是,你是否考虑添加custom_component json跟踪器:

给那些可能会犯我同样错误的人留个便条。我的rfbridge主题是sonoff/rfbridge。所以
您的自动化触发器需要反映这一点。在我的例子中:

- alias: 'rfbridge_demultiplexer'触发器:- platform: mqtt topic: tele/sonoff/rfbridge/RESULT

这可能是显而易见的,但我一开始漏掉了。

1像

好主意。你所需要做的就是发表(大写)到传感器的MQTT主题。下面是一个这样做的脚本示例:

#script: reset_sensor: alias: Reset sensor sequence: - service: mqtt。发布数据:主题:home/sensor3有效载荷:'OFF'
1像

不。我没有更新python脚本的计划。这里给出的是一个示例,它的内容,特别是字典,*必须定制

当我说“通常的主题是……”而不是说“这个主题是……”时,我认为我已经表达得很明显了。然而,你是第二个忽视修改的人,所以我将重新措辞,使其更清楚,用户必须根据他们的需要调整主题。

再次感谢您的贡献。

明白了。再次感谢。

如果同时出现2或3个传感器,会发生什么?自动化脚本会处理所有传感器吗?

1像

“当两个射频设备同时传输时会发生什么?”塔斯莫塔固件的设计者最好地回答了这个问题。

射频桥发布射频事件到它的主题,根据它收到的订单.射频桥必须处理并发射频事件的情况。

自动化只需订阅射频桥的主题,并按照收到的顺序处理负载。