basbruss / adaptive-cover

An Adaptive Cover component for HomeAsisstant to control covers based on the sun's position
MIT License
57 stars 7 forks source link

Manual override tripped every second position change #187

Closed Pataps closed 1 month ago

Pataps commented 1 month ago

What version of Adaptive Cover are you using?

1.2.1

What version of Home Assistant are you using?

2024.5.5

Checklist

Describe the issue

Every now and then when cover position is changed by integration cover are stuck in "opening" state and manual override is turned on. It looks like every second attempt to change position leaves it in a state that triggers manual override and leaves them stationary for configured time. this happens for all shades driven by Aqara E1 driver which is a little slow in reporting, integrated via ZHA.

Im attaching screenshots of my configuration for one of the covers.

Zrzut ekranu 2024-05-29 o 13 33 06 Zrzut ekranu 2024-05-29 o 13 34 58 Zrzut ekranu 2024-05-29 o 13 34 16 Zrzut ekranu 2024-05-29 o 13 33 31

Virtual position vs actual:

Zrzut ekranu 2024-05-29 o 13 41 21 Zrzut ekranu 2024-05-29 o 13 41 03

Cover history:

Zrzut ekranu 2024-05-29 o 13 44 14

Language might be not familiar, but icons and timestamps show the described behaviour.

Manual override history:

Zrzut ekranu 2024-05-29 o 13 45 49

Cover was not touched manually during this timeframe. Im happy to provide any info that can help you debug this, hopefully this is not device specific.

P.S. I really appreciate your work!

Reproduction steps

1. 2. 3. ...

Diagnostics dump

2024-05-29 12:37:50.019 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:37:52.597 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.578 seconds (success: True) 2024-05-29 12:37:52.598 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:37:55.238 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.639 seconds (success: True) 2024-05-29 12:37:55.239 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:37:55.243 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Resetting manual override for cover.roleta_w_sypialni_prawa_roleta, because duration has elapsed 2024-05-29 12:37:55.244 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Reset manual override for cover.roleta_w_sypialni_prawa_roleta 2024-05-29 12:37:55.245 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Set wait for target {'cover.roleta_w_sypialni_prawa_roleta': True} and target call {'cover.roleta_w_sypialni_prawa_roleta': 73} 2024-05-29 12:37:55.254 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Run set_cover_position with data {'entity_id': 'cover.roleta_w_sypialni_prawa_roleta', 'position': 73} 2024-05-29 12:37:57.894 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.655 seconds (success: True) 2024-05-29 12:37:58.918 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:37:58.918 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=80.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:20:25.154454+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:37:58.918067+02:00>) 2024-05-29 12:37:58.919 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Position 73.0 reached for cover.roleta_w_sypialni_prawa_roleta 2024-05-29 12:37:58.919 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:38:01.498 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.579 seconds (success: True) 2024-05-29 12:38:01.501 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:38:01.501 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:37:58.918067+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:01.501189+02:00>) 2024-05-29 12:38:01.502 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:38:04.106 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.604 seconds (success: True) 2024-05-29 12:38:04.179 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:38:04.181 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:01.501189+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:04.179539+02:00>) 2024-05-29 12:38:04.182 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:38:06.789 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.607 seconds (success: True) 2024-05-29 12:41:50.019 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:41:52.611 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.592 seconds (success: True) 2024-05-29 12:41:52.613 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:41:55.238 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.625 seconds (success: True) 2024-05-29 12:41:55.239 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:41:55.245 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Set wait for target {'cover.roleta_w_sypialni_prawa_roleta': True} and target call {'cover.roleta_w_sypialni_prawa_roleta': 72} 2024-05-29 12:41:55.254 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Run set_cover_position with data {'entity_id': 'cover.roleta_w_sypialni_prawa_roleta', 'position': 72} 2024-05-29 12:41:57.832 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.593 seconds (success: True) 2024-05-29 12:41:58.344 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:41:58.344 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:04.179539+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=72.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:04.179539+02:00>) 2024-05-29 12:41:58.345 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Position 72.0 reached for cover.roleta_w_sypialni_prawa_roleta 2024-05-29 12:41:58.345 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:42:00.962 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.617 seconds (success: True) 2024-05-29 12:42:00.966 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:42:00.966 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=72.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:04.179539+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=72.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:42:00.965891+02:00>) 2024-05-29 12:42:00.966 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:42:03.588 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.622 seconds (success: True) 2024-05-29 12:42:03.612 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:42:03.612 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=72.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:42:00.965891+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:42:00.965891+02:00>) 2024-05-29 12:42:03.613 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:42:03.616 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Set manual control for cover.roleta_w_sypialni_prawa_roleta, for at least 900.0 seconds, reset_allowed: False 2024-05-29 12:42:03.616 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Updating last updated to 2024-05-29 10:42:03.610538+00:00 for cover.roleta_w_sypialni_prawa_roleta. Allow reset:False 2024-05-29 12:42:06.187 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.574 seconds (success: True) 2024-05-29 12:45:50.020 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:45:52.598 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.578 seconds (success: True) 2024-05-29 12:45:52.600 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:45:55.163 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.563 seconds (success: True) 2024-05-29 12:45:55.165 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:45:57.790 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.625 seconds (success: True) 2024-05-29 12:49:50.021 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:49:52.620 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.598 seconds (success: True) 2024-05-29 12:49:52.622 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:49:55.206 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.584 seconds (success: True) 2024-05-29 12:49:55.208 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:49:57.865 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.656 seconds (success: True) 2024-05-29 12:53:50.022 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:53:52.621 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.598 seconds (success: True) 2024-05-29 12:53:52.622 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:53:55.212 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.589 seconds (success: True) 2024-05-29 12:53:55.213 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:53:57.806 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.593 seconds (success: True) 2024-05-29 12:57:50.024 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:57:52.625 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.601 seconds (success: True) 2024-05-29 12:57:52.627 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:57:55.189 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.562 seconds (success: True) 2024-05-29 12:57:55.190 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Entity state change 2024-05-29 12:57:55.195 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Resetting manual override for cover.roleta_w_sypialni_prawa_roleta, because duration has elapsed 2024-05-29 12:57:55.195 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Reset manual override for cover.roleta_w_sypialni_prawa_roleta 2024-05-29 12:57:55.196 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Set wait for target {'cover.roleta_w_sypialni_prawa_roleta': True} and target call {'cover.roleta_w_sypialni_prawa_roleta': 70} 2024-05-29 12:57:55.204 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Run set_cover_position with data {'entity_id': 'cover.roleta_w_sypialni_prawa_roleta', 'position': 70} 2024-05-29 12:57:57.823 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.632 seconds (success: True) 2024-05-29 12:57:58.198 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:57:58.198 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:42:00.965891+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=70.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:57:58.197891+02:00>) 2024-05-29 12:57:58.198 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Position 70.0 reached for cover.roleta_w_sypialni_prawa_roleta 2024-05-29 12:57:58.199 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:58:00.842 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.643 seconds (success: True) 2024-05-29 12:58:00.845 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:58:00.845 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=70.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:57:58.197891+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=70.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:58:00.845139+02:00>) 2024-05-29 12:58:00.846 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:58:03.440 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.594 seconds (success: True) 2024-05-29 12:58:03.516 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:58:03.516 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=70.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:58:00.845139+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:58:00.845139+02:00>) 2024-05-29 12:58:03.517 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:58:03.520 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Set manual control for cover.roleta_w_sypialni_prawa_roleta, for at least 900.0 seconds, reset_allowed: False 2024-05-29 12:58:03.520 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Updating last updated to 2024-05-29 10:58:03.516244+00:00 for cover.roleta_w_sypialni_prawa_roleta. Allow reset:False 2024-05-29 12:58:06.087 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.570 seconds (success: True)

basbruss commented 1 month ago

2024-05-29 12:42:03.612 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:42:03.612 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=72.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:42:00.965891+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:42:00.965891+02:00>)

This is the event that is sent by assuming ZHA where it sends an old position state, which is recognized by adaptive cover as a manual adjustment. At first sight, this is a problem in the handling of your cover integration of the StateChangedEvents, but I guess Adaptive cover could build in some fail safes since other (core) integrations also seemingly do the same thing.

Things I could do in recognizing manual events are:

  1. set a (user configurable) threshold between the old and new state so small random changes are ignored
  2. add more debug functions to see the full state change object to compare for useful anomalies that can be filtered out
  3. maybe ignore events that report new_state as opening or closing (indicating in-between steps)
Pataps commented 1 month ago

problem in the handling of your cover integration of the StateChangedEvents

It might be! I think I had less of those issues on Z2M but they still happened. I also admit that those motors are quite lazy in reporting their state so that might be the underlying issue.

Any changes in this regard will be much appreciated. Thanks for looking into this. I really enjoy your integration :)

Pataps commented 1 month ago

I have to ask, I'm curious. Why does it adjusts cover state 3 times in span of 5 seconds? Does including in-between steps benefits this integration somehow? I'm asking this because your 3rd solution looks very promising.

2024-05-29 12:37:58.918 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=80.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:20:25.154454+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:37:58.918067+02:00>) 2024-05-29 12:37:58.919 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Position 73.0 reached for cover.roleta_w_sypialni_prawa_roleta 2024-05-29 12:37:58.919 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:38:01.498 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.579 seconds (success: True) 2024-05-29 12:38:01.501 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:38:01.501 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:37:58.918067+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:01.501189+02:00>) 2024-05-29 12:38:01.502 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Wait for target: {'cover.roleta_w_sypialni_prawa_roleta': False} 2024-05-29 12:38:04.106 DEBUG (MainThread) [custom_components.adaptive_cover] Finished fetching adaptive_cover data in 2.604 seconds (success: True) 2024-05-29 12:38:04.179 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Cover state change 2024-05-29 12:38:04.181 DEBUG (MainThread) [custom_components.adaptive_cover.coordinator] Processing state change event: StateChangedData(entity_id='cover.roleta_w_sypialni_prawa_roleta', old_state=<state cover.roleta_w_sypialni_prawa_roleta=opening; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:01.501189+02:00>, new_state=<state cover.roleta_w_sypialni_prawa_roleta=open; current_position=73.0, device_class=shade, friendly_name=Roleta w sypialni prawa Roleta, supported_features=15 @ 2024-05-29T12:38:04.179539+02:00>)

Another result of this in my case is a lot of "DELIVERY_FAILED: 102" errors in the log, I guess because updates go too fast and devices can't handle them.

basbruss commented 1 month ago

Those updates are from the ZHA integration. Most motorized covers do report after x timespan an intermediate position to keep the position updated in the frontend for example

basbruss commented 1 month ago

I added all options as optional parameters to the automation config menu in v1.2.2. Can you confirm this works by setting one or all options?

Pataps commented 1 month ago

Absolutely! Will test this tomorrow :) Thanks!

basbruss commented 1 month ago

@Pataps and did it reduce/resolve the false hits?

Pataps commented 1 month ago

Hey, sorry for late response. Yes it did resolve the issue. I tested separately time and position options as well as combination. I guess the time option would need some more testing to be sure that it solely covers all scenarios but definitely states option works wonders for me. Thanks for this change, I really appreciate it. Keep up the good work!