我用MOES ZM-102-M Zigbee将我的门户网站混为一谈

这个全面的教程解释了精确的布线,Zigbee2MQTT配置,家庭助理集成和Alexa。 单个仪表板按钮 + 真实状态反馈 + 语音命令 'Alexa 打开门户'。

我的三个目标domotisation门户网站

我已经设定了三个具体目标,将我的Came跳动门户配备ZL180控制卡。

  • Home Assistant仪表板上的单个按钮通过精确的脉冲序列激活门户: 干接触500毫秒,打破500毫秒,然后关闭。
  • 使用位置传感器显示门是否打开或关闭的实际状态返回。
  • 使用 Alexa 进行语音控制: "Alexa,打开门户"或"Alexa,关闭门户"。

本教程使用QS-Zigbee-S10-C03模块取代旧版,该模块导致与Zigbee网络频繁断开连接。 过时文章: QS-Zigbee-S10-C03.

我的订单卡 Came ZL180

我的跳动门户与Came ZL180电子卡一起工作,该卡可以处理所有运动,安全和比赛结束。

正式技术资料表全文: 下载PDF ZL180.

ZL180 Came 控制卡安装在外壳中

ZL180卡订单终端

所有家庭自动化连接连接到ZL180卡右下角的终端块。 这10个终端允许控制门户和读取状态。

ZL180 卡 终端 识别 计划

控制打开/关闭门户

ZL180卡通过终端2(COM)和7(IMP)之间的干接触(无电压)控制开/关闭。 干接触只是意味着在不施加电压的情况下关闭电路。

  • 关闭终端接触2-7精确500毫秒(0.5秒)。
  • 在重新订购前保持至少500毫秒的休息时间。
  • 打开触点(OFF)以完成脉冲。

此脉冲序列是强制性的,并在包装传单ZL180第8页上描述。

提取记录 ZL180 序列脉冲命令终端 2-7

打开/关闭的门户状态返回

ZL180卡不提供门状态的直接干接触。 当门户完全打开时,它在终端5(COM)和10(OUV)之间提供24V信号。

ZL180信号传输24V终端 5-10

为了将0/24V信号转换为家庭自动化兼容的干接触,我在Came外壳中安装了24V IEC255继电器。 继电器将电路绝缘,并产生简单的开/闭合干接触。

图转换24V干接触继电器IEC255

以下是安装在Came房屋中的DIN支持上的IEC255继电器:

安装在Came外壳中的IEC255继电器
支持DIN继电器在Came住房
用于24V/干接触转换的IEC255继电器

DIP 配置开关至关重要

常见问题: 有些冲动没有被考虑在内。 原因往往是ZL180卡的DIP开关2上激活的『停止』功能。 此功能在收到的每个冲动时都会停止门户。

解决办法: 将 DIP2 放置在 OFF 上以允许部分控制(正常打开/关闭)。

配置 DIP2=OFF 卡 Came ZL180

选择模块 Zigbee MOES

我测试了几个模块,但选择了MOES ZM-102-M,因为它的Zigbee稳定性,价格实惠和全门功能。

MOES ZM-102-Ms 包括230V电源,脉冲输出,干接触输入和磁传感器。 ZM-102-M = 没有传感器的单模块。

模块 MOES ZM-102-M 连接器

哪里可以买到这些设备?

这里是专用于页面的链接。 ZM-102-M. 我参考了卖家和价格。

精确固定MOES ZM-102-M

  • L 和 N : 230V相加中性电源。
  • S4-S5 型 : 干接触输入(连接到IEC255中继用于门户状态)。
  • S1-S2 型 : 脉冲输出到终端2-7卡ZL180。
MOES ZM-102-M
MOES ZM-102-M 模块连接器

完整的门户布线图

完整的布线图Came portal + MOES ZM-102-M + 24V继电器

Zigbee2MQTT 模块

电源开启=自动配对模式(蓝色LED闪光10分钟)。 模块后面的按钮。 暂时靠近Zigbee协调器,如果距离很远。

LED 配对模块 MOES ZM-102-M

在"Permit Join"模式下的Zigbee2MQTT中,模块显示为_TZE200 _fabuwqzo _ts0601。 我称之为『来门户』。

接口 Zigbee2MQTT 配对 MOES ZM-102-M
著名模块 Portal Came Zigbee2MQTT

特征暴露的MOES

该模块列出了这些基本属性:

  • 触发 器 (二进制): 发送脉冲 S1-S2. true=open, false=close。 情报: 如果状态已经正确,则不发送。
  • _ 门 _ 联系 车库 (二进制): 状态 S4-S5. true=closed, false=open。
  • 倒计时 数 时 (0-43200s): 延迟后的冲动。
  • 运行 时 (-1至120): 超时运动 惊慌失措。
  • 地位 状况 : 正常 / RunTimeAlarm / OpenTimeAlarm。
Zigbee2MQTT 接口完成 Came Portal

自动集成家庭助理

实体在重新启动或刷新 Zigbee2MQTT 后自动出现在 Home Assistant 中。

实体 家庭 助理 模块 门户 来
  • binary_sensor.portal_came_garage_door_contact : 真实状态(off=closed, on=open)。
  • switch.portal_came_trigger : 脉冲按钮(ON 500ms 然后自动关闭)。
  • 传感器.portal_came_status : 模块状态 。

我 配置 覆盖 门户

我创建了一个统一的覆盖实体,结合了真实状态(二进制_sensor)和命令(switch)。 Cover Home Assistant 代表任何可行的元素: 门,门,滚筒快门

在模板下添加config.yaml → cover:

封面: 姓名: _id Single Portal : cover.portal device_class : 门图标 : > {% if is_state('binary_sensor.portal_came_garage_door_contact', 'off') %MDI:gate {% 其他 其它 %MDI:gate-open {% Endif 的 %} 国家: > {% if is_state('binary_sensor.portal_came_garage_door_contact', 'off') %闭合 {% 其他 其它 %{ } 开 {% Endif 的 %open_cover : 服务: script.actionne_le_portal_toggle close_cover: 服务: 脚本.actionne _le _porttail _toggle
实体 覆盖 门户 家庭 助理

仪表板门户按钮

仪表板 门户 控制 按钮 家庭 助理

简单按钮卡版本

单按钮版本门户按钮卡
类型 : 自定义:button-card show_name : 假tap_action : 行动: 切换实体 : cover.portal state : 值 : 封闭色 : Gray - 值 : 打开颜色 : 红色 红色

高级版本图片元素

综合图像元素门户按钮
动画 按钮 门户 打开
类型: 自定义:button-card color_type : 卡实体: cover.portal show_name : 假tap_action : 行动: 切换状态 : 值 : 打开颜色 : 》#4f010a"图标: MDI:gate-open 样式: 卡 : 动画 - 动画: Blink 2s 轻松无穷 - 运算符: 默认颜色 : 》#49556c"图标: MDI:gate 样式: 卡 : 高度: 110px - 宽度: 110px风格: 顶部: 93% 左: 5%

Alexa 语音 控制 门户

将 cover.portal 实体公开给 Alexa 进行语音控制。

  1. 设置 → 语音助手 → "x实体(ies)要公开"。
  2. 选择 封面.portal.
  3. 命令 : "Alexa,打开门户","Alexa,关闭门户"。
菜单 语音 助理 家庭 助理
Alexa 家庭 助理 实体 展览
选择 cover.portal Alexa

视觉脉搏奖金

动画 视觉 脉搏 确认 门户

通过闪烁图标发送脉冲的即时视觉确认。 通过设置 → Devices & Services → Helpers → Switch 创建 input_boolean.pulse_portal。

创建 input_boolean 脉冲门户
类型 : custom:button-card 实体: input_boolean. impulse_portail 名称: Impulsion Portal show_state : 假的 show_name : 假图标 : MDI:access-point 样式: 图标 : 颜色: | [[ if(entity.state === 'on')返回'#39FF14'; 『透明』回归; ]] - 动画: | [[[ if(entity.state === 'on')返回 'blink 0.4s线性无穷'; 返回『无』; ]]卡: 宽度: 150px - 高度: 150px - border-radius: 12px - 背景颜色: 透明 - 盒子阴影: 无

脚本操作 _le _portal _toggle(要在 scripts.yaml 中创建):

序列 : 服务: switch.turn_on 目标 : entity_id : switch.portal_came_trigger - 服务: input_boolean.turn_on 目标: entity_id : input_boolean. impulse_portal - 延迟: 第二: 1 - 服务: input_boolean.turn_off 目标: entity_id : input_boolean. impulse_portal别名: 运营门户网站

奖金 Rustine 开幕

我发现,由于我仍然无法理解的原因,大约每20个中就有一次打开门户的命令被正确触发: 脉冲被发送到模块,没有出现错误……但什么也没发生。

一切都表明该模块在排序时处于待机模式,并且根本没有反应。

另一方面,如果我在几秒钟内返回第二个脉冲,门户就会立即打开。

我通常对『锈病』过敏。 我喜欢从源头理解和纠正问题。 但在这种情况下,在我看来,最务实的解决方案似乎是添加一个追赶机制。

想法很简单:
如果在打开命令后,在几秒钟后仍然检测到门户关闭,则脚本会自动返回第二个脉冲。

最糟糕的是,我们输了两秒钟。
最多只能为用户纠正看不见的危险。

因此,我设置了以下脚本:

序列 : 化名: 在脉冲变量之前保存门户的状态: etat_portal_avant: "{{States('binary_sensor.portal_came_garage_door_contact')}" -别名: 将冲动发送到动作门户: switch.toggle 目标 : entity_id : switch.portal _came _trigger 数据: {} - 并行: 化名: 闪烁在仪表板序列上发送的脉冲: 行动: input_boolean.turn_on 目标: entity_id : input_boolean. impulse_portal 数据: {} - 延迟: 第二: 1 - 行动: input_boolean.turn_off 目标: entity_id : input_boolean. impulse_portal 数据: {} - 别名: Rustine 仅当门户是封闭序列时: 如果: 条件: 模板值 _template : {{ Etat _porttail _avant == 'off'}} : 化名: 最大等待 2s 才能打开 wait_template: { is_state('binary_sensor.portal_came_garage_door_contact', 'on')} } 超时: 第二: 2 继续 _on _timeout : 真 - 如果: 条件: 模板值 _template : "{{ not wait.completed }}" : 化名: 如果门户没有响应动作,则重新启动冲动: switch.toggle 目标 : entity_id : switch.portal _came _trigger 数据: {}别名: 操作描述门户: ) 》

该脚本在向门户发送脉冲后设置了一个简单的验证机制,并在出现问题时具有追赶逻辑。

第一步是在任何操作之前记住门户的状态。 它被记录在发送命令时是打开还是关闭(binary_sensor.portal_came_garage_door_contact)。 这些信息很重要,因为它可以知道是否激活备份逻辑。

保存此状态后,脚本通过模块(switch.portal_came_trigger)将脉冲发送到门户,就像正常操作一样。 同时,一个小的视觉指示器被激活一秒钟(input_boolean.pulse_portal),只是为了实现发送脉冲到仪表板。

就这样,"Rustine"开始发挥作用,但只有在一个非常具体的情况下: 如果门在订购时关闭了。 这种预防措施避免了不良影响,特别是当门户关闭时,因为在这种情况下,反应可能需要几秒钟,并且重要的是不要返回冲动。

如果门户关闭,脚本将等待两秒钟,看看它是否进入打开状态(binary_sensor.portal_came_garage_door_contact)。 这种期望是积极的: 如果变化发生得很快,脚本会立即检测到它并停止在那里。

另一方面,如果在这两秒内没有发生任何事情,则认为最初的冲动没有被考虑在内,可能是因为模块仍处于待机模式。 然后脚本通过模块自动发送第二个脉冲(switch.portal _came _trigger)。

最终,该机制充当安全网。 在大多数情况下,它是无用的,并且是看不见的。 但在极少数情况下,门户没有反应,它允许在没有人工干预的情况下纠正问题,只需两秒钟的延迟。

完整的技术文件

论坛 交流 反馈 体验

问题、反馈、附加图: HACF 论坛 讨论.