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
73.8k stars 30.9k forks source link

Somfy Cover shows strange and missing values. #120833

Open borschet opened 4 months ago

borschet commented 4 months ago

The problem

When adding two new io-controlled covers to the Tahoma Box they are showing state "Unknow" when they are not moving. The value "Memorized1PositionState" has a value of 105 but should be between 0 and 100%. The commands are working well and the scenarios too. As I tried to localize the problem by debugging the code for the specific covers, it might be possible that the data coming from the box is already somehow strange. I tried local API and Cloud API, same behaviour.

What version of Home Assistant Core has the issue?

core-2024.6.4

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

overkiz

Link to integration documentation on our website

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

Diagnostics information

overkiz-342b252d2198775c52e8c3f513c44e52-Markise Links-4650c93881db77e6f3f602fb5eeab9aa.json overkiz-8afbba1f1c0e1577243d6495b4be1515-Markise Links-4650c93881db77e6f3f602fb5eeab9aa.json

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

=== Debugger Data === Device( attributes=States(_states=[ State(name='core:SupportedManufacturerSettingsCommands', type=<DataType.JSON_ARRAY: 10>, value=['dead_man_up', 'dead_man_down', 'dead_man_stop', 'dead_man_impulse_up', 'dead_man_impulse_down', 'enter_settings_mode', 'save_settings', 'invert_rotation', 'save_my_position', 'delete_my_position', 'reset_actuator', 'double_power_cut', 'eject_from_setting_mode']), State(name='core:FirmwareRevision', type=<DataType.STRING: 3>, value='5131572A10'), State(name='core:Manufacturer', type=<DataType.STRING: 3>, value='Somfy')]), available=True, enabled=True, label= , device_url=io://--6082/13210713, gateway_id=--6082, device_address=13210713, subsystem_id=None, is_sub_device=False, controllable_name='io:PergolaHorizontalUnoIOComponent', definition=Definition(commands=CommandDefinitions(_commands=[CommandDefinition(command_name='addLockLevel', nparams=2), CommandDefinition(command_name='advancedRefresh', nparams=2), CommandDefinition(command_name='close', nparams=0), CommandDefinition(command_name='delayedStopIdentify', nparams=1), CommandDefinition(command_name='deploy', nparams=0), CommandDefinition(command_name='down', nparams=0), CommandDefinition(command_name='getName', nparams=0), CommandDefinition(command_name='identify', nparams=0), CommandDefinition(command_name='my', nparams=0), CommandDefinition(command_name='open', nparams=0), CommandDefinition(command_name='refreshMemorized1Position', nparams=0), CommandDefinition(command_name='removeLockLevel', nparams=1), CommandDefinition(command_name='resetLockLevels', nparams=0), CommandDefinition(command_name='setClosure', nparams=1), CommandDefinition(command_name='setDeployment', nparams=1), CommandDefinition(command_name='setMemorized1Position', nparams=1), CommandDefinition(command_name='setName', nparams=1), CommandDefinition(command_name='setPosition', nparams=1), CommandDefinition(command_name='setSecuredPosition', nparams=1), CommandDefinition(command_name='startIdentify', nparams=0), CommandDefinition(command_name='stop', nparams=0), CommandDefinition(command_name='stopIdentify', nparams=0), CommandDefinition(command_name='undeploy', nparams=0), CommandDefinition(command_name='up', nparams=0), CommandDefinition(command_name='wink', nparams=1), CommandDefinition(command_name='runManufacturerSettingsCommand', nparams=2), CommandDefinition(command_name='keepOneWayControllersAndDeleteNode', nparams=0), CommandDefinition(command_name='pairOneWayController', nparams=2), CommandDefinition(command_name='sendIOKey', nparams=0), CommandDefinition(command_name='setConfigState', nparams=1), CommandDefinition(command_name='unpairAllOneWayControllersAndDeleteNode', nparams=0), CommandDefinition(command_name='unpairAllOneWayControllers', nparams=0), CommandDefinition(command_name='unpairOneWayController', nparams=2)]), states=[StateDefinition(qualified_name='core:AdditionalStatusState', type='DataState', values=None), StateDefinition(qualified_name='core:CommandLockLevelsState', type='DataState', values=None), StateDefinition(qualified_name='core:DiscreteRSSILevelState', type='DiscreteState', values=['good', 'low', 'normal', 'verylow']), StateDefinition(qualified_name='core:ManufacturerDiagnosticsState', type='DataState', values=None), StateDefinition(qualified_name='core:ManufacturerSettingsState', type='DataState', values=None), StateDefinition(qualified_name='core:Memorized1PositionState', type='ContinuousState', values=None), StateDefinition(qualified_name='core:NameState', type='DataState', values=None), StateDefinition(qualified_name='core:PriorityLockTimerState', type='ContinuousState', values=None), StateDefinition(qualified_name='core:RSSILevelState', type='ContinuousState', values=None), StateDefinition(qualified_name='core:SecuredPositionState', type='ContinuousState', values=None), StateDefinition(qualified_name='core:StatusState', type='DiscreteState', values=['available', 'unavailable']), StateDefinition(qualified_name='core:TargetClosureState', type='ContinuousState', values=None), StateDefinition(qualified_name='io:PriorityLockLevelState', type='DiscreteState', values=['comfortLevel1', 'comfortLevel2', 'comfortLevel3', 'comfortLevel4', 'environmentProtection', 'humanProtection', 'userLevel1', 'userLevel2']), StateDefinition(qualified_name='io:PriorityLockOriginatorState', type='DiscreteState', values=['LSC', 'SAAC', 'SFC', 'UPS', 'externalGateway', 'localUser', 'myself', 'rain', 'security', 'temperature', 'timer', 'user', 'wind'])],

widget_name='PergolaHorizontalAwningUno', ui_class='Pergola', qualified_name='io:PergolaHorizontalUnoIOComponent'), data_properties=None, widget=<UIWidget.PERGOLA_HORIZONTAL_AWNING_UNO: 'PergolaHorizontalAwningUno'>, ui_class=<UIClass.PERGOLA: 'Pergola'>, states=States(_states=[ State(name='core:NameState', type=<DataType.STRING: 3>, value='Markise Rechts'), State(name='core:PriorityLockTimerState', type=<DataType.INTEGER: 1>, value=0), State(name='core:CommandLockLevelsState', type=<DataType.STRING: 3>, value='[]'), State(name='core:StatusState', type=<DataType.STRING: 3>, value='available'), State(name='core:DiscreteRSSILevelState', type=<DataType.STRING: 3>, value='normal'), State(name='core:RSSILevelState', type=<DataType.FLOAT: 2>, value=68.0), State(name='core:Memorized1PositionState', type=<DataType.INTEGER: 1>, value=105), State(name='core:TargetClosureState', type=<DataType.INTEGER: 1>, value=0)]),

type=<ProductType.ACTUATOR: 1>, place_oid='3943a2cf-6b5e-4176-b38b-f8bd6a1a0910')

home-assistant[bot] commented 4 months ago

Hey there @imicknl, @vlebourl, @tetienne, @nyrodev, @tronix117, mind taking a look at this issue as it has been labeled with an integration (overkiz) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `overkiz` 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 overkiz` 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)


overkiz documentation overkiz source (message by IssueLinks)

iMicknl commented 3 months ago

This is a known issue (or feature?) from the Uno device types. If I am not mistaken, the Uno device range is used to add io capabilities to rts (stateless) covers. We haven't been able to figure out yet how to interpret values outside of the 0-100 range..

QinX commented 2 months ago

I'm trying to get a log going, but I've got the exact same issues with all 11 of my Somfy RS100 IO Solar rolling shutters. I've got the running with the local API and i've got Somfy Smoove Origin wall control for each.

I can completly open or close them, but the "forget" their current position constantly, either reporting 105% or -6%. So I can't use the My position button, or use the sliders to set a percentage. I can only move the the fully open or closed and have to manually stop them to get anything in between.

iMicknl commented 2 months ago

When the value in Home Assistant is wrong, what is the value in the official Somfy app? We need to understand which logic they apply in their application, because the results we receive from the API are not matching as you see.

QinX commented 2 months ago

In HA it shows as -6 in a card and 105 on the device information page. In the Somfy TaHoma app it shows as being at 50%. Note that the last "update to the 105 position was yesterday around 10:30 in the morning, when the Douche has been closed in the evening of that same day and has also been opened today around 09:00. All screenshots were taken 5 minutes ago.

20240907_074138000_iOS 20240907_074155000_iOS 20240907_074230000_iOS

Hypo-Chonder commented 2 months ago

Hello, I have the same issue. The current position an all cover is wrong. "current postion: -24". Also open oder close to a specific position is wrong. Sometimes full open a cover will open to 70-75%, a second open opens to 50%. The Third open command opens the cover full. Very strange.

iMicknl commented 2 months ago

@Hypo-Chonder please add your diagnostics. Most likely your devices are also of the "Uno" type.

Hypo-Chonder commented 2 months ago

config_entry-overkiz-01J76APRHRNNR7ZCEMT4MG995V.json

Hello, you are right. I am using the Smoove UNO A/M io. In Home Assistant I found a hidden entity from this devices named "target closure" which shows the correct status in %. Maybe this could be a help.

iMicknl commented 2 months ago

Thanks @Hypo-Chonder. Maybe in the cover entity refactor, for the position of the Uno, we should leverage the target closure position indeed.