Checklist
Adaptive Cover Pro version
2.27.0
Home Assistant version
2026.5.4
Cover type
Vertical Blind
Describe the issue
During sunset last night, I noticed my blinds opened 10-15 minutes before the actual sunset. Looking at the UI card during this time, the “solar” control method was active yet the blind position jumped from something like 2% (mostly closed) to 100% (fully open).
I noticed that this seemed to occur when the sun fell below a sun angle of 2 degrees, so I did an experiment this morning:
I set up a test east-facing window and turned on debug logging. At sunrise, I noticed once again that the solar control was active yet the blind was still fully open. But this time, I had enabled debug logging and could see that the edge case handling was active:
2026-06-09 07:49:39.160 DEBUG (SyncWorker_0) [custom_components.adaptive_cover_pro.const] [Adaptive East Facing Test] Vertical calc: edge case detected (elev=0.6°, gamma=24.6°) � 2.095m
2026-06-09 07:49:39.161 DEBUG (SyncWorker_0) [custom_components.adaptive_cover_pro.const] [Adaptive East Facing Test] Converting height to percentage: 2.0955 / 2.0955 * 100
Once the sun rose to above 2 degrees in elevation, edge case handling was no longer active and the blind closed:
[custom_components.adaptive_cover_pro.const] [Adaptive East Facing Test] Vertical calc: elev=2.3°, gamma=23.8°, dist=0.495�0.495 (depth=0.000, sill=0.000), base=0.022, margin=1.115, adjusted=0.024, clipped=0.024, source=base
2026-06-09 08:08:53.685 DEBUG (MainThread) [custom_components.adaptive_cover_pro.const] [Adaptive East Facing Test] Converting height to percentage: 0.024355794252858567 / 2.0955 * 100
And indeed, the edge case handling only applies below 2 degrees
|
EDGE_CASE_LOW_ELEVATION = 2.0 # deg — below this, use low-elev path |
Therefore, I suspect the problem may be that the edge-case logic returns ‘h_win’ here while it should actually return ‘0’
|
# Very low elevation: sun nearly horizontal, full coverage safest |
|
if sol_elev < EDGE_CASE_LOW_ELEVATION: |
|
return (True, h_win) |
|
|
Basically, it looks like the comments and implementation may not match: the comments say we should fully cover the window, but in reality we return the height of the window which is interpreted as “fully open”.
The comments and docs for the high-gamma edge case also seem potentially inverted, but you would know better than I.
Thanks for all your work on this integration! I’m impressed by all the capabilities and diagnostic information it exposes.
Reproduction steps
...
Diagnostics file (attachment)
config_entry-adaptive_cover_pro-01KTNGG8VS5QCSCVR4H1DRNH01.json
Checklist
Adaptive Cover Pro version
2.27.0
Home Assistant version
2026.5.4
Cover type
Vertical Blind
Describe the issue
During sunset last night, I noticed my blinds opened 10-15 minutes before the actual sunset. Looking at the UI card during this time, the “solar” control method was active yet the blind position jumped from something like 2% (mostly closed) to 100% (fully open).
I noticed that this seemed to occur when the sun fell below a sun angle of 2 degrees, so I did an experiment this morning:
I set up a test east-facing window and turned on debug logging. At sunrise, I noticed once again that the solar control was active yet the blind was still fully open. But this time, I had enabled debug logging and could see that the edge case handling was active:
Once the sun rose to above 2 degrees in elevation, edge case handling was no longer active and the blind closed:
And indeed, the edge case handling only applies below 2 degrees
adaptive-cover-pro/custom_components/adaptive_cover_pro/const.py
Line 792 in a4ba998
Therefore, I suspect the problem may be that the edge-case logic returns ‘h_win’ here while it should actually return ‘0’
adaptive-cover-pro/custom_components/adaptive_cover_pro/geometry.py
Lines 91 to 94 in a4ba998
Basically, it looks like the comments and implementation may not match: the comments say we should fully cover the window, but in reality we return the height of the window which is interpreted as “fully open”.
The comments and docs for the high-gamma edge case also seem potentially inverted, but you would know better than I.
Thanks for all your work on this integration! I’m impressed by all the capabilities and diagnostic information it exposes.
Reproduction steps
...
Diagnostics file (attachment)
config_entry-adaptive_cover_pro-01KTNGG8VS5QCSCVR4H1DRNH01.json