home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
74.04k stars 31.07k forks source link

Velux integration and somfy motors #116700

Closed Vybralk closed 3 months ago

Vybralk commented 6 months ago

The problem

Velux integration use KLF-200 to control blinds which are compatible with io-homecontrol protocol. I am using it currently with somfy and velux blinds. Using klf-200 and his web interface i am able to register and control all velux'/somfy blinds.

Unfortunately when i add velux integration into HA i see somfy devices only in readonly mode (as it doesnt have ID).

I have checked the log, and it seemed that somfy blinds doesn't have serial id.

SOMFY 2024-05-03 12:49:35.032 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationNotification node_id="3" order="3" placement="0" name="Obyvak" velocity="Velocity.SILENT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="0" product_type="0" node_variation="NodeVariation.NOT_SET" power_mode="0" build_number="0" serial_number="None" 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="2024-05-03 12:45:45" alias_array=""/> VELUX 2024-05-03 12:49:35.004 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameGetAllNodesInformationNotification node_id="0" order="0" placement="0" name="PracovnaLevaInput34" velocity="Velocity.DEFAULT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="1" product_type="5" node_variation="NodeVariation.NOT_SET" power_mode="1" build_number="9" serial_number="53:2a:5d:32:14:0f:20:9e" 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="2024-05-03 12:45:45" alias_array=""/>

it seemed to be same issua as 77928

Can we utilize the device names as serial IDs, if we're unable to obtain proper serial numbers? Or is there any other option ?

What version of Home Assistant Core has the issue?

core-2024.5.0

What was the last working version of Home Assistant Core?

core-2024.5.0

What type of installation are you running?

Home Assistant Core

Integration causing the issue

velux

Link to integration documentation on our website

https://www.home-assistant.io/integrations/velux

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

2024-05-03 12:49:27.057 DEBUG (MainThread) [pyvlx] Loadig pyvlx v0.2.21
2024-05-03 12:49:27.058 DEBUG (MainThread) [homeassistant.components.velux] Velux interface started
2024-05-03 12:49:27.059 DEBUG (MainThread) [pyvlx] Connecting to KLF 200
2024-05-03 12:49:31.748 DEBUG (MainThread) [pyvlx] Amount of connections since last HA start: 1
2024-05-03 12:49:31.749 DEBUG (MainThread) [pyvlx] SEND: <FramePasswordEnterRequest password="wf****"/>
2024-05-03 12:49:31.762 DEBUG (MainThread) [pyvlx] REC: <FramePasswordEnterConfirmation status="PasswordEnterConfirmationStatus.SUCCESSFUL"/>
2024-05-03 12:49:31.769 DEBUG (MainThread) [pyvlx] SEND: <FrameGetVersionRequest/>
2024-05-03 12:49:31.779 DEBUG (MainThread) [pyvlx] REC: <FrameGetVersionConfirmation software_version="0.2.0.0.71.0" hardware_version="6" product="KLF 200"/>
2024-05-03 12:49:31.786 DEBUG (MainThread) [pyvlx] SEND: <FrameGetProtocolVersionRequest/>
2024-05-03 12:49:31.971 DEBUG (MainThread) [pyvlx] REC: <FrameGetProtocolVersionConfirmation version="3.14"/>
2024-05-03 12:49:31.977 DEBUG (MainThread) [pyvlx] Connected to: <DtoVersion softwareversion="0.2.0.0.71.0" hardwareversion="6" productgroup="14" producttype="3"/>,  <DtoProtocolVersion majorversion="3" minorversion="14"/>
2024-05-03 12:49:31.978 DEBUG (MainThread) [pyvlx] SEND: <FrameHouseStatusMonitorDisableRequest/>
2024-05-03 12:49:32.720 DEBUG (MainThread) [pyvlx] REC: <FrameHouseStatusMonitorDisableConfirmation/>
2024-05-03 12:49:32.728 DEBUG (MainThread) [pyvlx] SEND: <FrameGetStateRequest/>
2024-05-03 12:49:32.931 DEBUG (MainThread) [pyvlx] REC: <FrameGetStateConfirmation gateway_state="GatewayState.GATEWAY_MODE_WITH_ACTUATORS" gateway_sub_state="GatewaySubState.IDLE"/>
2024-05-03 12:49:32.934 DEBUG (MainThread) [pyvlx] SEND: <FrameSetUTCRequest time="2024-05-03 12:45:44"/>
2024-05-03 12:49:33.142 DEBUG (MainThread) [pyvlx] REC: <FrameSetUTCConfirmation/>
2024-05-03 12:49:33.161 DEBUG (MainThread) [pyvlx] SEND: <FrameGetNetworkSetupRequest/>
2024-05-03 12:49:33.172 DEBUG (MainThread) [pyvlx] REC: <FrameGetNetworkSetupConfirmation ipaddress="192.168.1.57" netmask="255.255.255.0" gateway="192.168.1.1" dhcp="DHCPParameter.DISABLE"/>
2024-05-03 12:49:33.180 DEBUG (MainThread) [pyvlx] SEND: <FrameHouseStatusMonitorEnableRequest/>
2024-05-03 12:49:34.002 DEBUG (MainThread) [pyvlx] REC: <FrameHouseStatusMonitorEnableConfirmation/>
2024-05-03 12:49:34.010 DEBUG (MainThread) [pyvlx] Heartbeat start
2024-05-03 12:49:34.012 DEBUG (MainThread) [pyvlx] SEND: <FrameGetSceneListRequest/>
2024-05-03 12:49:34.019 DEBUG (MainThread) [pyvlx] Heartbeat: creating task
2024-05-03 12:49:34.022 DEBUG (MainThread) [pyvlx] Heartbeat: task started
2024-05-03 12:49:34.022 DEBUG (MainThread) [pyvlx] Heartbeat: sleeping
2024-05-03 12:49:34.774 DEBUG (MainThread) [pyvlx] REC: <FrameGetSceneListConfirmation count_scenes="0"/>
2024-05-03 12:49:34.782 DEBUG (MainThread) [pyvlx] SEND: <FrameGetAllNodesInformationRequest/>
2024-05-03 12:49:34.985 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationConfirmation status="AllNodesInformationStatus.OK" number_of_nodes="4"/>
2024-05-03 12:49:34.995 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationNotification node_id="0" order="0" placement="0" name="PracovnaLevaInput34" velocity="Velocity.DEFAULT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="1" product_type="5" node_variation="NodeVariation.NOT_SET" power_mode="1" build_number="9" serial_number="53:2a:5d:32:14:0f:20:9e" 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="2024-05-03 12:45:45" alias_array=""/>
2024-05-03 12:49:35.004 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameGetAllNodesInformationNotification node_id="0" order="0" placement="0" name="PracovnaLevaInput34" velocity="Velocity.DEFAULT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="1" product_type="5" node_variation="NodeVariation.NOT_SET" power_mode="1" build_number="9" serial_number="53:2a:5d:32:14:0f:20:9e" 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="2024-05-03 12:45:45" alias_array=""/>
2024-05-03 12:49:35.010 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationNotification node_id="1" order="1" placement="0" name="PokojProHosty" velocity="Velocity.DEFAULT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="0" product_type="0" node_variation="NodeVariation.NOT_SET" power_mode="0" build_number="0" serial_number="None" 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="2024-05-03 12:45:45" alias_array=""/>
2024-05-03 12:49:35.016 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameGetAllNodesInformationNotification node_id="1" order="1" placement="0" name="PokojProHosty" velocity="Velocity.DEFAULT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="0" product_type="0" node_variation="NodeVariation.NOT_SET" power_mode="0" build_number="0" serial_number="None" 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="2024-05-03 12:45:45" alias_array=""/>
2024-05-03 12:49:35.021 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationNotification node_id="2" order="2" placement="0" name="PracovnaPravaInput12" velocity="Velocity.DEFAULT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="1" product_type="5" node_variation="NodeVariation.NOT_SET" power_mode="1" build_number="9" serial_number="53:2a:5d:32:14:0f:20:49" 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="2024-05-03 12:45:45" alias_array=""/>
2024-05-03 12:49:35.025 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameGetAllNodesInformationNotification node_id="2" order="2" placement="0" name="PracovnaPravaInput12" velocity="Velocity.DEFAULT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="1" product_type="5" node_variation="NodeVariation.NOT_SET" power_mode="1" build_number="9" serial_number="53:2a:5d:32:14:0f:20:49" 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="2024-05-03 12:45:45" alias_array=""/>
2024-05-03 12:49:35.032 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationNotification node_id="3" order="3" placement="0" name="Obyvak" velocity="Velocity.SILENT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="0" product_type="0" node_variation="NodeVariation.NOT_SET" power_mode="0" build_number="0" serial_number="None" 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="2024-05-03 12:45:45" alias_array=""/>
2024-05-03 12:49:35.034 DEBUG (MainThread) [pyvlx] REC: <FrameGetAllNodesInformationFinishedNotification/>
2024-05-03 12:49:35.044 DEBUG (MainThread) [pyvlx] NodeUpdater process frame: <FrameGetAllNodesInformationNotification node_id="3" order="3" placement="0" name="Obyvak" velocity="Velocity.SILENT" node_type="NodeTypeWithSubtype.ROLLER_SHUTTER" product_group="0" product_type="0" node_variation="NodeVariation.NOT_SET" power_mode="0" build_number="0" serial_number="None" 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="2024-05-03 12:45:45" alias_array=""/>

Additional information

No response

home-assistant[bot] commented 6 months ago

Hey there @julius2342, @deermaximum, mind taking a look at this issue as it has been labeled with an integration (velux) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `velux` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Renames the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign velux` Removes the current integration label and assignees on the issue, add the integration domain after the command. - `@home-assistant add-label needs-more-information` Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue. - `@home-assistant remove-label needs-more-information` Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


velux documentation velux source (message by IssueLinks)

guerini commented 6 months ago

Same issue for me. It is a real problem in homeassistant because we cannot associate theses somfy devices to rooms. This issue was already discussed in pyvlx requirement and the conclusion was that it has to be fixed on HA velux component side, not pyvlx side.

peter-vanpoucke commented 6 months ago

Looks indeed that the integration uses that serial number as the unique ID: https://github.com/home-assistant/core/blob/ee031f485028ef5871d0fce3644d0b6f88351535/homeassistant/components/velux/__init__.py#L114

Guess that should stay the same to not break stuff. But what to use instead? I guess the node ID might be an option, although that can be renamed.

robi59italy commented 6 months ago

same here with Velux integration but only with 2024.5.1.. with 2024.5.0 worked fine for a day until this morning when the integration stopped to work and no way to restart

net1957 commented 6 months ago

same here on a new installation Core 2024.5.3 Supervisor 2024.05.1 Operating System 12.3 Interface utilisateur 20240501.1

it's working but you cannot configure it

Cette entité ("cover.bureau") n'a pas d'identifiant unique, par conséquent ses paramètres ne peuvent pas être gérés depuis l'interface utilisateur.

Vybralk commented 4 months ago

I have manualy updated mentioned 3x python files, and test it with somfy/velux motors and it works! From my point of view it is fixed and could be merged into main trunk.

H2FSpawn commented 4 months ago

I have also the problem with a Shading cover with a somfy motor and unique ID. I have integrated ist with my velux gateway into HA. My Velux gateway shows my only 1 entity which is a rolling shutter from Velux. My shading cover i can integrate in my dashboard, but i can't use it for automation. I think the problem is, that the shading cover have no unique id.

Is there a workaround to set the unique id manually? image image