Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: 小米无线开关蓝牙版每日凌晨5:29触发事件 #266

Closed
yusongsds opened this issue Dec 20, 2024 · 18 comments
Closed

[Bug]: 小米无线开关蓝牙版每日凌晨5:29触发事件 #266

yusongsds opened this issue Dec 20, 2024 · 18 comments
Labels
enhancement New feature or request

Comments

@yusongsds
Copy link

Describe the bug / 描述问题

小米无线开关蓝牙版每日凌晨5:29触发事件

To Reproduce / 复现步骤

ble

Expected behavior / 预期结果

解决凌晨5:29触发事件问题

Home Assistant Logs / 系统日志

2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, ir.1811270676909535232
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, ir.1811271905240834048
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, ir.1811272404278849536
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, ir.1825777784501452800
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0101
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0102
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0103
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0104
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0105
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0106
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0107
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0108
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0109
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0110
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0111
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0112
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0113
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0114
2024-12-20 05:28:54.569 ERROR (MainThread) [custom_components.xiaomi_home.miot.miot_cloud] get device info failed, proxy.705844120.0115

Home Assistant Core version / Home Assistant Core 版本

2024.12.3

Home Assistant Operation System version / Home Assistant Operation System 版本

docker 非OS

Xiaomi Home integration version / 米家集成版本

v0.1.0-v0.1.2

Additional context / 其他说明

No response

@yusongsds yusongsds added the bug Something isn't working label Dec 20, 2024
@hitaoge666
Copy link

你网络设备断网也会这样提示,是不是网络设备定时重启了?

@yusongsds
Copy link
Author

检查发现网络在凌晨近似时间会有重置操作,但即使网络中断,不会有触发小米无线开关蓝牙版检查到事件,执行单击,双击的事件触发

@topsworld
Copy link
Contributor

上面日志是正常的,是所有设备都会有相关事件触发?

@topsworld topsworld self-assigned this Dec 20, 2024
@JimmyKmi
Copy link

看起来是homeassistant设备由不可用变可用时按钮会触发一遍这个问题...是不是你路由器在这个时间重新拨号或者重启了

@yusongsds
Copy link
Author

看起来是homeassistant设备由不可用变可用时按钮会触发一遍这个问题...是不是你路由器在这个时间重新拨号或者重启了

是的路由器在这个时间设置了重拨,但小米的蓝牙BLE设备出现按钮触发,miot auto没有这个情况

@JimmyKmi
Copy link

看起来是homeassistant设备由不可用变可用时按钮会触发一遍这个问题...是不是你路由器在这个时间重新拨号或者重启了

是的路由器在这个时间设置了重拨,但小米的蓝牙BLE设备出现按钮触发,miot auto没有这个情况

miot auto 的设备离线状态基本不实时吧,没有可比性。

现在集成走的云端,重播肯定会造成设备掉线再上线。等后续支持本地能缓解重播中断。设备上线触发事件是HA自带的特性。

@topsworld topsworld added by design and removed bug Something isn't working labels Dec 21, 2024
@topsworld
Copy link
Contributor

如上,非问题,感谢热心Jimmy,问题关闭。

@MartialBE
Copy link

@JimmyKmi
请问有办法在 自动化 中忽略可不用状态吗?
我也遇到这个问题,导致所有开关的自动化全部被触发了。
我是使用实体 - 当实体发生状态变化 来配置的,
比如:单击的state, 我设置 状态从 单击 到 单击 是无法触发事件的, 只能忽略事件类型,从任意状态到任意状态才可以触发事件。
但是这样配置,一旦 网络问题, 按钮不可用 到 可用 也会触发事件。

@JimmyKmi
Copy link

@JimmyKmi 请问有办法在 自动化 中忽略可不用状态吗? 我也遇到这个问题,导致所有开关的自动化全部被触发了。 我是使用实体 - 当实体发生状态变化 来配置的, 比如:单击的state, 我设置 状态从 单击 到 单击 是无法触发事件的, 只能忽略事件类型,从任意状态到任意状态才可以触发事件。 但是这样配置,一旦 网络问题, 按钮不可用 到 可用 也会触发事件。

无,当时已经留意到了这个问题。如果设备离线不上报也会导致其他问题,最好的方法就是等本地。

也可以考虑下用米家自动化极客版

@MartialBE
Copy link

有点尴尬了,那我还是先退回Miot Auto上去吧, 昨天刚迁移完🤣。

@Jimmo-o
Copy link
Contributor

Jimmo-o commented Dec 24, 2024

有点尴尬了,那我还是先退回Miot Auto上去吧, 昨天刚迁移完🤣。

自动化触发器切换为yaml编辑,删除from,添加
not_from:
- unavailable
- unknown

@topsworld topsworld reopened this Dec 24, 2024
@topsworld topsworld added enhancement New feature or request and removed by design labels Dec 24, 2024
@MartialBE
Copy link

有点尴尬了,那我还是先退回Miot Auto上去吧, 昨天刚迁移完🤣。

自动化触发器切换为yaml编辑,删除from,添加 not_from: - unavailable - unknown

感谢回复,手动拨号试了一下,日志有显示自动化被触发,但是自动化下面的设备好像没有被执行了。

@NXY666
Copy link

NXY666 commented Dec 30, 2024

自动化触发器切换为yaml编辑,删除from,添加
not_from:
- unavailable
- unknown

嘶,好像事件的初始状态就是unknown

那么初次点击按钮的时候就是unknown单击,这样是不是就不会触发。

我感觉应该是not_to

(我没试过,从语义上理解的,因为现在身边没有设备不好测试)


另外我觉得这只能是一个临时的解决方法。

不知道能不能让事件真正触发时,都返回一个固定值(而不是现在的时间戳),这样就能直接选中这个状态值。

@grandpignon
Copy link

grandpignon commented Jan 6, 2025

我觉得核心是这些事件的值是作为一个状态续存的,下一个事件出现之前上一个事件的状态会一直持续下去,这就导致自动化的触发部分很难定义。

不仅仅是按钮,虚拟事件现在也是这样,比如我触发了一个事件A,这个事件实体的state就会一直是A,直到下一个事件触发,关键还在于这个触发部分很容易被误干扰,最常见的两种:1. 集成更新/重启,这种情况下事件实体会临时变成unavailable,然后重载完成之后还会回到之前的事件A状态,从而触发自动化。2.设备禁用/重启,这种类似,但是过程中不会变成unavailable而是变成空,下次再启动之后实际经历了一个“事件A -> 事件A” 或者“null -> 事件A”的状态变化,也会触发自动化。

我觉得事件应该是一个信号,一个瞬间,不会一直持续下去,这样才能精确触发(之前配了个虚拟事件触发的自动化执行ios上的强制提醒着实被吓了一跳,现在只能暂时暂停看看后续有没有更新了),不知道是不是可以改成这样(或者通过给出一个短时间的状态持续来模拟,比如默认的状态是Idle,当事件触发时给个2秒的持续事件后回到Idle状态,这样重启组件或者网络有问题导致unavailable/null/unknown之后也能回到Idle状态,不会命中触发条件。)

@NXY666
Copy link

NXY666 commented Jan 6, 2025

我觉得核心是这些事件的值是作为一个状态续存的,下一个事件出现之前上一个事件的状态会一直持续下去,这就导致自动化的触发部分很难定义。

不仅仅是按钮,虚拟事件现在也是这样,比如我触发了一个事件A,这个事件实体的state就会一直是A,直到下一个事件触发,关键还在于这个触发部分很容易被误干扰,最常见的两种:1. 集成更新/重启,这种情况下事件实体会临时变成unavailable,然后重载完成之后还会回到之前的事件A状态,从而触发自动化。2.设备禁用/重启,这种类似,但是过程中不会变成unavailable而是变成空,下次再启动之后实际经历了一个“事件A -> 事件A” 或者“null -> 事件A”的状态变化,也会触发自动化。

我觉得事件应该是一个信号,一个瞬间,不会一直持续下去,这样才能精确触发(之前配了个虚拟事件触发的自动化执行ios上的强制提醒着实被吓了一跳,现在只能暂时暂停看看后续有没有更新了),不知道是不是可以改成这样(或者通过给出一个短时间的状态持续来模拟,比如默认的状态是Idle,当事件触发时给个2秒的持续事件后回到Idle状态,这样重启组件或者网络有问题导致unavailable/null/unknown之后也能回到Idle状态,不会命中触发条件。)

是的,目前事件触发是一个大问题。

not_from:
  - unavailable
not_to:
  - unavailable
  - unknown

这是我现在使用的一种相对完美的解决方法。

但是这也意味着,所有事件都需要加这个玩意。(加了就不能用可视化编辑器)

@refined-fish
Copy link

refined-fish commented Jan 11, 2025

不只是无线开关,所有的 事件 event 都存在此问题,只要ha重启/网络重连/集成重载,都会造成ha识别到所有的事件
触发,由此设置的自动化也全都会触发一遍。

如上,非问题,感谢热心Jimmy。

@topsworld,在 @jimmy 的回答中提到了这个问题或许与集成依靠云端网络有关,我的实际感受似乎也确实如此,下图是我的无线开关状态,可以看到事件的上次触发时间其实是正确的(通过中枢网关本地记录),但是右侧日志却在凌晨网络重播时检测到事件。
image

也就是说这可能是集成能够改善的问题,目前即使支持本地控制也存在问题,那么是否集成能在断网/重连时,不要修改/刷新 事件 event 状态而是直接继承本地中枢的记录,这样至少能解决支持本地中枢上报设备的此类问题。比如最影响使用体验的无线开关按钮(比如这个电池电量低事件,一直触发自动化通知换电池,前段时间没解决集成需要重新验证的问题时两三天重载一次更是令人难绷😂)

@refined-fish
Copy link

not_from:
  - unavailable
not_to:
  - unavailable
  - unknown

这是我现在使用的一种相对完美的解决方法。

实测这确实能解决问题,爱你bro❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

11 participants