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
71.13k stars 29.8k forks source link

(Hunter Douglas) blinds type missing and control is greyed out. #115257

Open coaxialdaisy opened 5 months ago

coaxialdaisy commented 5 months ago

The problem

1) 1 error msg in the system log shows the type of shade can not be identified, and fall back to basic bottom up capabilities.

2) the 2nd error shows: Error adding entity cover.kitchen_north for domain cover with platform hunterdouglas_powerview. Therefore, the blinds control is greyed out. image

What version of Home Assistant Core has the issue?

core-2024.4.2

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant Container

Integration causing the issue

Hunter Douglas PowerView

Link to integration documentation on our website

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

Diagnostics information

1st:

Logger: aiopvapi.resources.shade Source: components/hunterdouglas_powerview/init.py:84 First occurred: 5:56:12 PM (8 occurrences) Last logged: 8:11:24 PM

Shade type not found. Falling back to basic bottom up capabilities: <class 'aiopvapi.resources.shade.BaseShade'> - {'id': 7003, 'name': 'QmF0aCBFYXN0', 'roomId': 4896, 'groupId': 35661, 'order': 2, 'type': 40, 'batteryStrength': 94, 'batteryStatus': 1, 'positions': {'position1': 32768, 'posKind1': 3}, 'name_unicode': 'Bath East'} Shade type not found. Falling back to basic bottom up capabilities: <class 'aiopvapi.resources.shade.BaseShade'> - {'id': 53627, 'name': 'QmF0aCBTb3V0aA==', 'roomId': 4896, 'groupId': 35661, 'order': 3, 'type': 40, 'batteryStrength': 127, 'batteryStatus': 3, 'positions': {'position1': 32768, 'posKind1': 3}, 'name_unicode': 'Bath South'} Shade type not found. Falling back to basic bottom up capabilities: <class 'aiopvapi.resources.shade.BaseShade'> - {'id': 36492, 'name': 'S2l0Y2hlbiBOb3J0aA==', 'roomId': 4896, 'groupId': 35661, 'order': 0, 'type': 40, 'batteryStrength': 116, 'batteryStatus': 3, 'positions': {'position1': 65535, 'posKind1': 1}, 'name_unicode': 'Kitchen North'} Shade type not found. Falling back to basic bottom up capabilities: <class 'aiopvapi.resources.shade.BaseShade'> - {'id': 7003, 'name': 'QmF0aCBFYXN0', 'roomId': 4896, 'groupId': 35661, 'order': 2, 'type': 40, 'batteryStrength': 94, 'batteryStatus': 1, 'positions': {'position1': 65535, 'posKind1': 1}, 'name_unicode': 'Bath East'} Shade type not found. Falling back to basic bottom up capabilities: <class 'aiopvapi.resources.shade.BaseShade'> - {'id': 53627, 'name': 'QmF0aCBTb3V0aA==', 'roomId': 4896, 'groupId': 35661, 'order': 3, 'type': 40, 'batteryStrength': 127, 'batteryStatus': 3, 'positions': {'position1': 65535, 'posKind1': 1}, 'name_unicode': 'Bath South'}

————————————————————————— 2nd :

Logger: homeassistant.components.cover Source: helpers/entity_platform.py:580 integration: Cover (documentation, issues) First occurred: 8:17:08 PM (2 occurrences) Last logged: 8:19:56 PM

Error adding entity cover.kitchen_north for domain cover with platform hunterdouglas_powerview Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 580, in _async_add_entities await coro File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 890, in _async_add_entity await entity.add_to_platform_finish() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1334, in add_to_platform_finish self.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 998, in async_write_ha_state self._async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1119, in _async_write_ha_state state, attr, capabilities, shadowed_attr = self.async_calculate_state() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1056, in async_calculate_state state = self._stringify_state(available) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1004, in _stringify_state if (state := self.state) is None: ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/cover/init.py", line 321, in state if (closed := self.is_closed) is None: ^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/components/hunterdouglas_powerview/cover.py", line 146, in is_closed return self.positions.primary <= CLOSED_POSITION ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: '<=' not supported between instances of 'NoneType' and 'int'

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

Even though the blinds control in the Hunter Douglas integration is unavailable, HASS automation can still trigger scenes defined in the PowerView app.

home-assistant[bot] commented 5 months ago

Hey there @home-assistant/core, mind taking a look at this issue as it has been labeled with an integration (cover) you are listed as a code owner for? Thanks!

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


cover documentation cover source (message by IssueLinks)

home-assistant[bot] commented 5 months ago

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

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


hunterdouglas_powerview documentation hunterdouglas_powerview source (message by IssueLinks)

kingy444 commented 5 months ago

Both of these appear to be upstream errors. Can you please share the json output of your hub from http://<ipaddress>/api/shades

Do you also know what Gen hub you are running. The fallback was added to account for cases where we don't have the capability supported, but the json above is straight up missing the capability

We also don't believe we have type 40 defined (part of the issue here too) - what would the "friendly name" for these be ?

coaxialdaisy commented 5 months ago

Thanks @kingy444 , pls see my answers below:

1a) here is the output from my hub:
http://<ipaddress>/api/shades image


1b) here is for one of my blinds:
http://<ipaddress>/api/shades/65111

image


2) My hub is G1, (see below screenshots) image

3) the "type 40" is an initial setting inputted from the PowerView APP configuration image

4) Not sure what is the "friendly name" you point to? I attached few screenshots for both blinds and hub page in HA and PowerView hub, hopefully they can answer some of your questions.

a) hub and blinds pages in HA

image

image

b) hub and blinds pages in PowerView APP

image

image

coaxialdaisy commented 5 months ago

Hey @kingy444 , here is my diagnose file, for your reference:

home-assistant_hunterdouglas_powerview_2024-04-09T18-40-18.375Z.log

config_entry-hunterdouglas_powerview-87c0b443898977d39cce8edcbe18d906.json

kingy444 commented 5 months ago

Thanks - that's really helpful

The 'friendly name' was just the shade type so in this case "Everwood Alternative Wood Blinds"

From the JSON you provided it looks like these could actually have a tilt capability (which I assume HA has never offered you)

Could you take a look at the table published here and let me know which "capability" they fall into

I expect they are bottom up with a 90 degree tilt ability, but only able to tilt when closed (capability 1) but please take a look at all the columns and let me know if there are any discrepancies with that. (Such as you could tilt it when open)

To understand 90 vs 180 tilt that refers to whether the tilt can go all the way up and back down vertically (180) or whether it can only go horizontally (90) then back to the closed position

coaxialdaisy commented 5 months ago

Thanks @kingy444

I think my blinds are closer to the type of “Venetian, Tilt Anywhere” (51 or 62) blinds that can be tilted 180°, but don't have the bottom-up feature (bottom-up is manual).

kingy444 commented 5 months ago

Apologies looks like I never posted the link to the repo

https://github.com/sander76/aio-powerview-api

Looks like you found your way though, have these actually ever worked in HA? (More curious as I cannot understand how previous versions would have given you tilt capability)

To be clear on the initial ask I needed to know how they work in the PowerView App not how they work in HA

From your description they only provide tilt via the app (so I would put them in capability 5 / Tilt Only) but the conflict to that is your provided json says both poskind=1 and poskind1=3 which indicates which motor moves to which position.

The json would indicate you can control both up down and tilt via the PowerView app?

coaxialdaisy commented 5 months ago

Looks like you found your way though, have these actually ever worked in HA? (More curious as I cannot understand how previous versions would have given you tilt capability)

To be clear on the initial ask I needed to know how they work in the PowerView App not how they work in HA

It never worked in my HA, and every time I clicked on any control in HA, it just made the blinds instance unavailable for a while. I can now only control the blinds by activating different scenes (different positions of the blades) which were pre-set in the PowerView APP and imported into to the integration during HA setup.

But in PoweView APP, the tilt control is working great!, The tilt of the blades can be stopped at any position, very responsive!

From your description they only provide tilt via the app (so I would put them in capability 5 / Tilt Only) but the conflict to that is your provided json says both poskind=1 and poskind1=3 which indicates which motor moves to which position.

The json would indicate you can control both up down and tilt via the PowerView app?

I do not quite understand the definitions in the json. However, the physical machine can only control the tilt of the blinds.

Thanks @kingy444

kingy444 commented 5 months ago

I'm mainlyconfused with the poskind1 = 1. poskind defines the cover type (primary/1.secondary/2,tilt/3)

could you move shade http://10.0.0.152/api/shades/65111 (Kitchen West) to the below positions using the powerview ap and provide the same output you did previously in the screenshots.

Not sure how responsive the position updates are with Gen 1 so make sure the postion1 value has updated

  1. Tilt fully down
  2. Tilt 90 degrees (horizontal
  3. Tilt Fully Up

Also out of curiousity of the poskind=1 ....

Could we try manually opening a shade (I assume they have a cord ? ) then doing the same to get the positioning.

Happy for you to do whatever positioning testing you can think of based on how you usually use these, this info will all help me make sure their capability is correctly defined and you get full functionaility.

This Kitchen West cover was the one that reported poskind1=1 , and the same cover you provided in the screenshot (and was back to reporting poskind=3 by then. Some tilt covers do act this way where the poskind is interchangable between a 1 and a 3, but ive never seen a shade that is both manual and powered. I was hoping you could both open AND tilt the cover via the powerview app

coaxialdaisy commented 5 months ago

could you move shade http://10.0.0.152/api/shades/65111 (Kitchen West) to the below positions using the powerview ap and provide the same output you did previously in the screenshots.

Sorry, what output you are mentioning? If using PowerView, I don’t know if there is a way to generate an error logs or json files from App. May I have your direction? Thanks, @kingy444

kingy444 commented 5 months ago

Just move the shade using the app and then visit the url of the shade as you did in the earlier screenshot

I only say using the app so the positions have the most likely hood of being correct - so make sure the numbers have updated in position1 field before grabbing the output from the /shades url

I also mentioned opening one of the shades by hand to try and work out where the poskind1=1 comes into things

coaxialdaisy commented 5 months ago

Thanks for your clarification, @kingy444. Below is the output:

  1. Tilt fully down

{"shade":{"id":65111,"name":"S2l0Y2hlbiBXZXN0","roomId":4896,"groupId":35661,"order":1,"type":40,"batteryStrength":124,"batteryStatus":3, "positions":{"position1":0,"posKind1":3}},"shadeData":[{"id":7003,"name":"QmF0aCBFYXN0","roomId":4896,"groupId":35661,"order":2,"type":40,"batteryStrength":94,"batteryStatus":1, "positions":{"position1":32768,"posKind1":3}},{"id":53627,"name":"QmF0aCBTb3V0aA==","roomId":4896,"groupId":35661,"order":3,"type":40,"batteryStrength":127,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}}]}* Connection #0 to host 10.0.0.252 left intact

2. Tilt 90 degrees (horizontal

{"shade":{"id":65111,"name":"S2l0Y2hlbiBXZXN0","roomId":4896,"groupId":35661,"order":1,"type":40,"batteryStrength":124,"batteryStatus":3, "positions":{"position1":65535,"posKind1":1}},"shadeData":[{"id":7003,"name":"QmF0aCBFYXN0","roomId":4896,"groupId":35661,"order":2,"type":40,"batteryStrength":94,"batteryStatus":1, "positions":{"position1":32768,"posKind1":3}},{"id":53627,"name":"QmF0aCBTb3V0aA==","roomId":4896,"groupId":35661,"order":3,"type":40,"batteryStrength":127,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}}]}* Connection #0 to host 10.0.0.252 left intact

3. Tilt Fully Up

{"shade":{"id":65111,"name":"S2l0Y2hlbiBXZXN0","roomId":4896,"groupId":35661,"order":1,"type":40,"batteryStrength":124,"batteryStatus":3, "positions":{"position1":65535,"posKind1":3}},"shadeData":[{"id":7003,"name":"QmF0aCBFYXN0","roomId":4896,"groupId":35661,"order":2,"type":40,"batteryStrength":94,"batteryStatus":1, "positions":{"position1":32768,"posKind1":3}},{"id":53627,"name":"QmF0aCBTb3V0aA==","roomId":4896,"groupId":35661,"order":3,"type":40,"batteryStrength":127,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}}]}* Connection #0 to host 10.0.0.252 left intact

Could we try manually opening a shade (I assume they have a cord ? ) then doing the same to get the positioning.

I may not have explained this clearly before. The blinds cannot be tilted manually. It does come with a cord, but it can only be used to pull up the entire blind (all the blades are stacked together at the top)

kingy444 commented 5 months ago

Yep that made sense.

What I was asking is for you to do that, then wait then see if the value of "posKind1":3 changed to "posKind":1

This won't be an immediate change though so here are some basic instructions.

  1. Open the Kitchen West shade using the cord
  2. Wait 5 minutes (completely making this one up but assuming the position update is not immediate)
  3. Add refresh=true to the position request like the below
    http://10.0.0.152/api/shades/65111?refresh=true
  4. Check the returned result does not say timeout:true, if it does the refresh failed so you will want your try again. I believe a successful refresh says timeout:false
coaxialdaisy commented 4 months ago

@kingy444 sorry for reply late, just got some time to test. Below is the results. Feel free to review, thanks!

  1. Tilt fully down

{"shade":{"id":65111,"name":"S2l0Y2hlbiBXZXN0","roomId":4896,"groupId":35661,"order":1,"type":40,"batteryStrength":124,"batteryStatus":3, "positions":{"position1":0,"posKind1":3}},"shadeData":[{"id":7003,"name":"QmF0aCBFYXN0","roomId":4896,"groupId":35661,"order":2,"type":40,"batteryStrength":94,"batteryStatus":1, "positions":{"position1":32768,"posKind1":3}},{"id":53627,"name":"QmF0aCBTb3V0aA==","roomId":4896,"groupId":35661,"order":3,"type":40,"batteryStrength":126,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}}]}

2. Tilt 90 degrees (horizontal

{"shade":{"id":65111,"name":"S2l0Y2hlbiBXZXN0","roomId":4896,"groupId":35661,"order":1,"type":40,"batteryStrength":124,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}},"shadeData":[{"id":7003,"name":"QmF0aCBFYXN0","roomId":4896,"groupId":35661,"order":2,"type":40,"batteryStrength":94,"batteryStatus":1, "positions":{"position1":32768,"posKind1":3}},{"id":53627,"name":"QmF0aCBTb3V0aA==","roomId":4896,"groupId":35661,"order":3,"type":40,"batteryStrength":126,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}}]}

3. Tilt Fully Up

{"shade":{"id":65111,"name":"S2l0Y2hlbiBXZXN0","roomId":4896,"groupId":35661,"order":1,"type":40,"batteryStrength":124,"batteryStatus":3, "positions":{"position1":65535,"posKind1":3}},"shadeData":[{"id":7003,"name":"QmF0aCBFYXN0","roomId":4896,"groupId":35661,"order":2,"type":40,"batteryStrength":94,"batteryStatus":1, "positions":{"position1":32768,"posKind1":3}},{"id":53627,"name":"QmF0aCBTb3V0aA==","roomId":4896,"groupId":35661,"order":3,"type":40,"batteryStrength":126,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}}]}

Lastly, I added one test that tilt up 135 degrees (between "Tilt 90 degrees (horizontal)" and "Tilt Fully Up" ) {"shade":{"id":65111,"name":"S2l0Y2hlbiBXZXN0","roomId":4896,"groupId":35661,"order":1,"type":40,"batteryStrength":124,"batteryStatus":3, "positions":{"position1":49467,"posKind1":3}},"shadeData":[{"id":7003,"name":"QmF0aCBFYXN0","roomId":4896,"groupId":35661,"order":2,"type":40,"batteryStrength":94,"batteryStatus":1, "positions":{"position1":32768,"posKind1":3}},{"id":53627,"name":"QmF0aCBTb3V0aA==","roomId":4896,"groupId":35661,"order":3,"type":40,"batteryStrength":126,"batteryStatus":3, "positions":{"position1":32768,"posKind1":3}}]}

issue-triage-workflows[bot] commented 1 month ago

There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest Home Assistant version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.

kingy444 commented 1 month ago

Bumping to keep this one on my radar