Thx for the swift reply. I will work on figuring out how to get debug logs working and revert with an issue.
To enable debug logging clicking on the Kebab menu icon in the top right hand corner of the Velux integration page should be sufficient. Once you disable debug logging again, the log download should start automatically.
I tried
- your idea
- also configuration.yaml
logger:
default: warning
logs:
homeassistant.components.velux: debug
pyvlx: debug
with no result. (Not sure how useful that can be as min value is not logged in core/homeassistant/components/velux/binary_sensor.py at a084e5134592de98f5bc54731be2cbe0004215c0 · home-assistant/core · GitHub)
The best I can achieve for now is provide the result of get_limitation call from a self made script
It’s not logged in binary_sensor.py but the pyvlx lib logs the raw data (on level debug) which is what I was mostly interested in.
I do not understand why your debug logging does not work, does your HA show something like this once enabled in the UI?
But anyways, I think the output of your script should also be good enough. Please mention the type of your window when you open a github issue.
I think I got what you need. My window is a wired roof window with center pivot, installed in 2012 so quite old.
2026-01-08 00:12:13.692 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationNotification node_id="9" order="9" placement="0" name="VeluxCuisine" velocity="Velocity.SILENT" node_type="NodeTypeWithSubtype.WINDOW_OPENER_WITH_RAIN_SENSOR" product_group="3" product_type="1" node_variation="NodeVariation.NOT_SET" power_mode="0" build_number="2" serial_number="56:18:5e:5a:0b:15:14:a3" state="UNKNOWN" current_position="UNKNOWN" target="UNKNOWN" current_position_fp1="UNKNOWN" current_position_fp2="UNKNOWN" current_position_fp3="UNKNOWN" current_position_fp4="UNKNOWN" remaining_time="0" time="2026-01-08 00:12:07" alias_array="d803=b21c"/>
2026-01-08 00:12:52.216 DEBUG (MainThread) [pyvlx] SEND: <FrameStatusRequestRequest session_id="10" node_ids="[9]" status_type="StatusType.REQUEST_CURRENT_POSITION" fpi1="254" fpi2="0"/>
2026-01-08 00:12:52.351 DEBUG (MainThread) [pyvlx] REC: <FrameStatusRequestConfirmation session_id="10" status="StatusRequestStatus.ACCEPTED"/>
2026-01-08 00:12:52.834 DEBUG (MainThread) [pyvlx] REC: <FrameStatusRequestNotification session_id="10" status_id="1" node_id="9" run_status="RunStatus.EXECUTION_COMPLETED" status_reply="StatusReply.COMMAND_COMPLETED_OK" status_type="StatusType.REQUEST_CURRENT_POSITION" status_count="1" parameter_data="NodeParameter.MP: 100 %, "/>
2026-01-08 00:12:52.834 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameStatusRequestNotification session_id="10" status_id="1" node_id="9" run_status="RunStatus.EXECUTION_COMPLETED" status_reply="StatusReply.COMMAND_COMPLETED_OK" status_type="StatusType.REQUEST_CURRENT_POSITION" status_count="1" parameter_data="NodeParameter.MP: 100 %, "/>
2026-01-08 00:12:52.835 DEBUG (MainThread) [pyvlx] REC: <FrameSessionFinishedNotification session_id="10"/>
2026-01-08 00:12:52.836 DEBUG (MainThread) [pyvlx] REC: <FrameNodeStatePositionChangedNotification node_id="9" state="UNKNOWN" current_position="100 %" target="100 %" current_position_fp1="UNKNOWN" current_position_fp2="UNKNOWN" current_position_fp3="UNKNOWN" current_position_fp4="UNKNOWN" remaining_time="0" time="2093-07-27 10:51:12"/>
2026-01-08 00:12:52.837 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameNodeStatePositionChangedNotification node_id="9" state="UNKNOWN" current_position="100 %" target="100 %" current_position_fp1="UNKNOWN" current_position_fp2="UNKNOWN" current_position_fp3="UNKNOWN" current_position_fp4="UNKNOWN" remaining_time="0" time="2093-07-27 10:51:12"/>
2026-01-08 00:12:52.837 DEBUG (MainThread) [pyvlx] VeluxCuisine position changed to: 100 %
2026-01-08 00:15:00.455 DEBUG (MainThread) [pyvlx] SEND: <FrameGetLimitationStatus node_ids="[9]" session_id="41" originator="Originator.USER" />
2026-01-08 00:15:00.474 DEBUG (MainThread) [pyvlx] REC: <FrameGetLimitationStatusConfirmation session_id="41" status="1"/>
2026-01-08 00:15:00.605 DEBUG (MainThread) [pyvlx] REC: <FrameGetLimitationStatusNotification node_id="9" session_id="41" min_value="b'\xb2'" max_value="b'\xf7'" originator="Originator.EMERGENCY" limit_time="255"/>
2026-01-08 00:15:00.607 DEBUG (MainThread) [pyvlx] REC: <FrameCommandRunStatusNotification session_id="41" status_id="1" index_id="9" node_parameter="0" parameter_value="51200"/>
2026-01-08 00:15:00.612 DEBUG (MainThread) [pyvlx] REC: <FrameSessionFinishedNotification session_id="41"/>
2026-01-08 00:16:43.360 DEBUG (MainThread) [pyvlx] REC: <FrameGetStateConfirmation gateway_state="GatewayState.GATEWAY_MODE_WITH_ACTUATORS" gateway_sub_state="GatewaySubState.PERFORMING_TASK_COMMAND"/>
2026-01-08 00:16:43.360 DEBUG (MainThread) [pyvlx] SEND: <FrameStatusRequestRequest session_id="63" node_ids="[0]" status_type="StatusType.REQUEST_CURRENT_POSITION" fpi1="254" fpi2="0"/>
2026-01-08 00:16:43.572 DEBUG (MainThread) [pyvlx] REC: <FrameStatusRequestConfirmation session_id="63" status="StatusRequestStatus.ACCEPTED"/>
2026-01-08 00:16:43.770 DEBUG (MainThread) [pyvlx] REC: <FrameNodeStatePositionChangedNotification node_id="9" state="DONE" current_position="89 %" target="80 %" current_position_fp1="UNKNOWN"
2026-01-08 00:25:35.787 DEBUG (MainThread) [pyvlx] SEND: <FrameStatusRequestRequest session_id="206" node_ids="[9]" status_type="StatusType.REQUEST_CURRENT_POSITION" fpi1="254" fpi2="0"/>
2026-01-08 00:25:35.921 DEBUG (MainThread) [pyvlx] REC: <FrameStatusRequestConfirmation session_id="206" status="StatusRequestStatus.ACCEPTED"/>
2026-01-08 00:25:36.174 DEBUG (MainThread) [pyvlx] REC: <FrameStatusRequestNotification session_id="206" status_id="1" node_id="9" run_status="RunStatus.EXECUTION_COMPLETED" status_reply="StatusReply.COMMAND_COMPLETED_OK" status_type="StatusType.REQUEST_CURRENT_POSITION" status_count="1" parameter_data="NodeParameter.MP: 89 %, "/>
2026-01-08 00:25:36.175 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameStatusRequestNotification session_id="206" status_id="1" node_id="9" run_status="RunStatus.EXECUTION_COMPLETED" status_reply="StatusReply.COMMAND_COMPLETED_OK" status_type="StatusType.REQUEST_CURRENT_POSITION" status_count="1" parameter_data="NodeParameter.MP: 89 %, "/>
2026-01-08 00:25:36.175 DEBUG (MainThread) [pyvlx] REC: <FrameSessionFinishedNotification session_id="206"/>
2026-01-08 00:25:36.177 DEBUG (MainThread) [pyvlx] REC: <FrameNodeStatePositionChangedNotification node_id="9" state="UNKNOWN" current_position="89 %" target="89 %" current_position_fp1="UNKNOWN" current_position_fp2="UNKNOWN" current_position_fp3="UNKNOWN" current_position_fp4="UNKNOWN" remaining_time="0" time="2095-02-26 03:50:40"/>
2026-01-08 00:25:36.177 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameNodeStatePositionChangedNotification node_id="9" state="UNKNOWN" current_position="89 %" target="89 %" current_position_fp1="UNKNOWN" current_position_fp2="UNKNOWN" current_position_fp3="UNKNOWN" current_position_fp4="UNKNOWN" remaining_time="0" time="2095-02-26 03:50:40"/>
2026-01-08 00:25:36.178 DEBUG (MainThread) [pyvlx] VeluxCuisine position changed to: 89 %
Note: are we aware of other causes for min limitation ? could we not consider any window with non null minimum limit as wet ? Just my 2 cents.
About my log issues:
- I didn’t know that debug logs were only displayed asking for full logs not condensed logs

- enabling debug on the integration doesn’t do anything for me, only enabling debug with this in configuration.yaml worked
logger:
default: warning
logs:
homeassistant.components.velux: debug
pyvlx: debug
Thanks for the logs, yes, this is what I was looking for, basically just to confirm what you already said.
Valid point, although you can set arbitrary limits via the API, at least theoretically, the Velux integration does not expose this. I’d like to be a bit more specific than just “everything != 0”, but I’ll probably just use >=89%, which would include the 91% value mentioned in the other thread you linked also (if my French didn’t fool me
). Ideally, one would use the originator of the limit to be most specific (see log, originator="Originator.EMERGENCY", but this is currently not exposed in pyvlx and it also seems like too much work just for preventing very unlikely false rain alarms caused by “something else” setting a limit.
No idea why this is not working for you, but I am pretty sure this is not the integretion’s fault, so I will not dig into this any further.
Should be fixed in 2026.1.1: fix rain sensor for some rare velux windows by wollew · Pull Request #160504 · home-assistant/core · GitHub
Indeed not an issue.
Your comment made me look into what was wrong in my home assistant. okay, so now I know that the reason why debug logging enable was not working was having this in configuration.yaml
logger:
default: warning
Once removed, debug logging enable working as it should
It is now working, thank you.


