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

知吾煮蒸烤箱,工作时,剩余时间不会自动更新 #420

Closed
bizshow opened this issue Dec 24, 2024 · 11 comments
Closed

知吾煮蒸烤箱,工作时,剩余时间不会自动更新 #420

bizshow opened this issue Dec 24, 2024 · 11 comments
Assignees
Labels
wontfix This will not be worked on

Comments

@bizshow
Copy link

bizshow commented Dec 24, 2024

Describe the Bug / 描述问题

知吾煮蒸烤箱,工作时,剩余时间不会自动更新

How to Reproduce / 复现步骤

知吾煮蒸烤箱,工作时,剩余时间(sensor.chunmi_cn_xxxxxxxxxxxxxx_steam30lv1_left_time_p_2_2)
会一直显示为0,如果此时重置插件,时间会更新为最新的,但是还是会停留在那个时间,不会自动更新。
image

以下是另一个插件Xiaomi Auto的截图,对比同样的位置,是明显有一个时间上的变化的,虽然做不到像设备上的秒级,但至少每30秒轮询时,时间都会更新
image

Expected Behavior / 预期结果

时间会自动更新

Home Assistant Logs / 系统日志

No response

Home Assistant Core Version / Home Assistant Core 版本

2024.11.0

Home Assistant Operation System Version / Home Assistant Operation System 版本

none

Xiaomi Home Integration Version / 米家集成版本

v.0.1.0

Additional Context / 其他说明

No response

@SusanPhevos SusanPhevos self-assigned this Dec 25, 2024
@SusanPhevos
Copy link
Contributor

您好!请您请将日志等级设置为debug级别(方法详见这里),复现问题,并上传HA日志。如果您担心隐私问题,可将日志发送至 [email protected]

@bizshow
Copy link
Author

bizshow commented Dec 25, 2024

您好!请您请将日志等级设置为debug级别(方法详见这里),复现问题,并上传HA日志。如果您担心隐私问题,可将日志发送至 [email protected]

由于我现在在外不方便直接操作家里的蒸烤箱,暂时先用洗碗机代替,洗碗机也有同样的问题(怀疑是所有带倒计时功能的地方,都有这个问题)
以下是洗碗机工作中的状态(官方插件)
image
以下是Auto插件的状态
image

日志已同步发往 [email protected] 邮箱,请查收。

@bizshow
Copy link
Author

bizshow commented Dec 25, 2024

另外还发现,除湿机工作结束后,自动烘干的时间倒计时时间,也不会更新,一直是2400

@SusanPhevos
Copy link
Contributor

蒸烤箱、洗碗机的设备没有主动上报过“剩余时间”属性,故云端没有给xiaomi_home推送属性变化消息。
除湿机上报的“剩余时间”的值只有2400和0,并且上报2400之后并不是每次都会再上报0。这也是设备自身的问题。

@SusanPhevos SusanPhevos added the wontfix This will not be worked on label Dec 26, 2024
@bizshow
Copy link
Author

bizshow commented Dec 26, 2024

蒸烤箱、洗碗机的设备没有主动上报过“剩余时间”属性,故云端没有给xiaomi_home推送属性变化消息。 除湿机上报的“剩余时间”的值只有2400和0,并且上报2400之后并不是每次都会再上报0。这也是设备自身的问题。

感觉可能还是设备、云端或者中枢之间数据同步机制的问题,

对比Auto插件,是通过每30秒轮询的方式来更新设备状态,该left_time实体每次都会更新为最新的剩余时间,虽然不会读秒,但也够用了,

但官方的插件,这个值一直就不会更新,并且可以确定的是设备确实上报了剩余时间的,因为在米家APP中可以显示剩余时间,并且在倒计时过程中,重新配置官方的插件一次,这个值是会更新的,说明在云端这个值应该是有在更新,

所有带计时的设备,例如蒸烤箱、微波炉、电饭煲、洗碗机、洗衣机、除湿机等,都存在这个问题,感觉应该不是设备自身的问题

@SusanPhevos
Copy link
Contributor

蒸烤箱、洗碗机的设备没有主动上报过“剩余时间”属性,故云端没有给xiaomi_home推送属性变化消息。 除湿机上报的“剩余时间”的值只有2400和0,并且上报2400之后并不是每次都会再上报0。这也是设备自身的问题。

感觉可能还是设备、云端或者中枢之间数据同步机制的问题,

对比Auto插件,是通过每30秒轮询的方式来更新设备状态,该left_time实体每次都会更新为最新的剩余时间,虽然不会读秒,但也够用了,

但官方的插件,这个值一直就不会更新,并且可以确定的是设备确实上报了剩余时间的,因为在米家APP中可以显示剩余时间,并且在倒计时过程中,重新配置官方的插件一次,这个值是会更新的,说明在云端这个值应该是有在更新,

所有带计时的设备,例如蒸烤箱、微波炉、电饭煲、洗碗机、洗衣机、除湿机等,都存在这个问题,感觉应该不是设备自身的问题

因为miot-auto使用的是轮询方法,集成不断通过云端询问设备当前的属性值;xiaomi_home使用的是订阅方法,只有当设备状态改变,云端才会向xiaomi_home推送最新的属性值。如果设备不上报,云端不会向xiaomi_home推送。
米家设备插件是厂商自行开发,他们可能做了特殊处理。

@bizshow
Copy link
Author

bizshow commented Dec 26, 2024

蒸烤箱、洗碗机的设备没有主动上报过“剩余时间”属性,故云端没有给xiaomi_home推送属性变化消息。 除湿机上报的“剩余时间”的值只有2400和0,并且上报2400之后并不是每次都会再上报0。这也是设备自身的问题。

感觉可能还是设备、云端或者中枢之间数据同步机制的问题,
对比Auto插件,是通过每30秒轮询的方式来更新设备状态,该left_time实体每次都会更新为最新的剩余时间,虽然不会读秒,但也够用了,
但官方的插件,这个值一直就不会更新,并且可以确定的是设备确实上报了剩余时间的,因为在米家APP中可以显示剩余时间,并且在倒计时过程中,重新配置官方的插件一次,这个值是会更新的,说明在云端这个值应该是有在更新,
所有带计时的设备,例如蒸烤箱、微波炉、电饭煲、洗碗机、洗衣机、除湿机等,都存在这个问题,感觉应该不是设备自身的问题

因为miot-auto使用的是轮询方法,集成不断通过云端询问设备当前的属性值;xiaomi_home使用的是订阅方法,只有当设备状态改变,云端才会向xiaomi_home推送最新的属性值。如果设备不上报,云端不会向xiaomi_home推送。 米家设备插件是厂商自行开发,他们可能做了特殊处理。

感谢解答!
奇怪的是,如果我重新配置xiaomi_home集成,left_time却又能更新为最新的值(只是后续不再变化),这种情况,是因为设备虽然向云端上报了left_time,但是云端没有向xiaomi_home推送,导致xiaomi_home集成里,这个值一直没有变化,但只要重新配置xiaomi_home集成,所有设备状态都从云端重新获取了,这个值才会变,是这样么?

@hahaha3542
Copy link

蒸烤箱、洗碗机的设备没有主动上报过“剩余时间”属性,故云端没有给xiaomi_home推送属性变化消息。 除湿机上报的“剩余时间”的值只有2400和0,并且上报2400之后并不是每次都会再上报0。这也是设备自身的问题。

感觉可能还是设备、云端或者中枢之间数据同步机制的问题,
对比Auto插件,是通过每30秒轮询的方式来更新设备状态,该left_time实体每次都会更新为最新的剩余时间,虽然不会读秒,但也够用了,
但官方的插件,这个值一直就不会更新,并且可以确定的是设备确实上报了剩余时间的,因为在米家APP中可以显示剩余时间,并且在倒计时过程中,重新配置官方的插件一次,这个值是会更新的,说明在云端这个值应该是有在更新,
所有带计时的设备,例如蒸烤箱、微波炉、电饭煲、洗碗机、洗衣机、除湿机等,都存在这个问题,感觉应该不是设备自身的问题

因为miot-auto使用的是轮询方法,集成不断通过云端询问设备当前的属性值;xiaomi_home使用的是订阅方法,只有当设备状态改变,云端才会向xiaomi_home推送最新的属性值。如果设备不上报,云端不会向xiaomi_home推送。 米家设备插件是厂商自行开发,他们可能做了特殊处理。

感谢解答! 奇怪的是,如果我重新配置xiaomi_home集成,left_time却又能更新为最新的值(只是后续不再变化),这种情况,是因为设备虽然向云端上报了left_time,但是云端没有向xiaomi_home推送,导致xiaomi_home集成里,这个值一直没有变化,但只要重新配置xiaomi_home集成,所有设备状态都从云端重新获取了,这个值才会变,是这样么?

如果在倒计时组件里自带一个本地计时功能,且每30秒在线同步一次(或者在状态异常时主动同步一次),是否可以一定程度上解决该问题?

@huhuime
Copy link

huhuime commented Dec 31, 2024

恐怕要自己实现倒计时功能吧,看电热毯也是这样
image

@SusanPhevos
Copy link
Contributor

蒸烤箱、洗碗机的设备没有主动上报过“剩余时间”属性,故云端没有给xiaomi_home推送属性变化消息。 除湿机上报的“剩余时间”的值只有2400和0,并且上报2400之后并不是每次都会再上报0。这也是设备自身的问题。

感觉可能还是设备、云端或者中枢之间数据同步机制的问题,
对比Auto插件,是通过每30秒轮询的方式来更新设备状态,该left_time实体每次都会更新为最新的剩余时间,虽然不会读秒,但也够用了,
但官方的插件,这个值一直就不会更新,并且可以确定的是设备确实上报了剩余时间的,因为在米家APP中可以显示剩余时间,并且在倒计时过程中,重新配置官方的插件一次,这个值是会更新的,说明在云端这个值应该是有在更新,
所有带计时的设备,例如蒸烤箱、微波炉、电饭煲、洗碗机、洗衣机、除湿机等,都存在这个问题,感觉应该不是设备自身的问题

因为miot-auto使用的是轮询方法,集成不断通过云端询问设备当前的属性值;xiaomi_home使用的是订阅方法,只有当设备状态改变,云端才会向xiaomi_home推送最新的属性值。如果设备不上报,云端不会向xiaomi_home推送。 米家设备插件是厂商自行开发,他们可能做了特殊处理。

感谢解答! 奇怪的是,如果我重新配置xiaomi_home集成,left_time却又能更新为最新的值(只是后续不再变化),这种情况,是因为设备虽然向云端上报了left_time,但是云端没有向xiaomi_home推送,导致xiaomi_home集成里,这个值一直没有变化,但只要重新配置xiaomi_home集成,所有设备状态都从云端重新获取了,这个值才会变,是这样么?

xiaomi_home在导入设备时,会从云端主动获取一次所有设备的属性值,完成设备导入后,不再主动询问云端设备的属性值。之后,只有当设备上报属性改变消息(MIoT-Spec-V2的properties_changed消息,如果是profile设备,云端会将设备上报的profile消息转换为MIoT-Spec-V2消息),云端才会向xiaomi_home推送最新的属性值。你应该是使用了miot auto集成,3秒轮询一次设备属性,云端轮询设备属性会更新缓存在云端的设备属性值,因此每当你重新配置xiaomi_home时,xiaomi_home主动从云端获取的属性值都是最新的。然而轮询设备属性(云端向设备发送MIoT-Spec-V2的get_properties消息,设备回复属性值)不会触发云端向xiaomi_home的推送行为。你可以试试从miot auto集成中删除这个设备,这样即便重新配置xiaomi_home,也无法拿到最新的属性值。
这个现象的本质是,设备没有主动上报left_time值,不是云端的问题。

@bizshow
Copy link
Author

bizshow commented Jan 16, 2025

蒸烤箱、洗碗机的设备没有主动上报过“剩余时间”属性,故云端没有给xiaomi_home推送属性变化消息。 除湿机上报的“剩余时间”的值只有2400和0,并且上报2400之后并不是每次都会再上报0。这也是设备自身的问题。

感觉可能还是设备、云端或者中枢之间数据同步机制的问题,
对比Auto插件,是通过每30秒轮询的方式来更新设备状态,该left_time实体每次都会更新为最新的剩余时间,虽然不会读秒,但也够用了,
但官方的插件,这个值一直就不会更新,并且可以确定的是设备确实上报了剩余时间的,因为在米家APP中可以显示剩余时间,并且在倒计时过程中,重新配置官方的插件一次,这个值是会更新的,说明在云端这个值应该是有在更新,
所有带计时的设备,例如蒸烤箱、微波炉、电饭煲、洗碗机、洗衣机、除湿机等,都存在这个问题,感觉应该不是设备自身的问题

因为miot-auto使用的是轮询方法,集成不断通过云端询问设备当前的属性值;xiaomi_home使用的是订阅方法,只有当设备状态改变,云端才会向xiaomi_home推送最新的属性值。如果设备不上报,云端不会向xiaomi_home推送。 米家设备插件是厂商自行开发,他们可能做了特殊处理。

感谢解答! 奇怪的是,如果我重新配置xiaomi_home集成,left_time却又能更新为最新的值(只是后续不再变化),这种情况,是因为设备虽然向云端上报了left_time,但是云端没有向xiaomi_home推送,导致xiaomi_home集成里,这个值一直没有变化,但只要重新配置xiaomi_home集成,所有设备状态都从云端重新获取了,这个值才会变,是这样么?

xiaomi_home在导入设备时,会从云端主动获取一次所有设备的属性值,完成设备导入后,不再主动询问云端设备的属性值。之后,只有当设备上报属性改变消息(MIoT-Spec-V2的properties_changed消息,如果是profile设备,云端会将设备上报的profile消息转换为MIoT-Spec-V2消息),云端才会向xiaomi_home推送最新的属性值。你应该是使用了miot auto集成,3秒轮询一次设备属性,云端轮询设备属性会更新缓存在云端的设备属性值,因此每当你重新配置xiaomi_home时,xiaomi_home主动从云端获取的属性值都是最新的。然而轮询设备属性(云端向设备发送MIoT-Spec-V2的get_properties消息,设备回复属性值)不会触发云端向xiaomi_home的推送行为。你可以试试从miot auto集成中删除这个设备,这样即便重新配置xiaomi_home,也无法拿到最新的属性值。 这个现象的本质是,设备没有主动上报left_time值,不是云端的问题。

大概明白了,auto集成是通过轮询,触发了云端向设备的询问,虽然能更新left_time但不会触发properties_changed
而home集成,需要设备主动上报left_time,触发properties_changed后云端才会推送,集成中才能更新

看来目前没有比较好的办法解决,可能很多没有主动上报的属性,不光是left_time,还有一些设备的故障状态等(在另一个issue有提到),可能都得依靠其他方式来触发主动询问

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

4 participants