Skip to content
Merged
Show file tree
Hide file tree
Changes from 16 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions homeassistant/components/nobo_hub/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,6 @@
"documentation": "https://www.home-assistant.io/integrations/nobo_hub",
"integration_type": "hub",
"iot_class": "local_push",
"quality_scale": "bronze",
"requirements": ["pynobo==1.8.1"]
}
91 changes: 91 additions & 0 deletions homeassistant/components/nobo_hub/quality_scale.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
rules:

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_attr_target_temperature_step = 1 could use STEP_WHOLE, just a nit

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean PRECISION_WHOLE or as a local constant?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, precision

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in this PR

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be cool if we can look into more typing

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the works - waiting for final review on the upstream library: echoromeo/pynobo#43

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the HVAC mode linked hard to the preset mode?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's explained in the documentation: https://www.home-assistant.io/integrations/nobo_hub/

The zones (normally rooms) operate either on a weekly schedule (auto) or in override mode. 3 different overrides are supported: normal heating, eco heating, away (non-freeze). The overrides are implemented as presets.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we occasionaly update _read_state, as in, it doesn't poll so how does the data flow in?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hub does not push preset changes due to weekly schedule, so the climate entity has to be polled once per minute to pick up when the preset changes due to time passing.

All other data are pushed from the hub on a TCP socket.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes but what does that do? The docstring mentions """Read the current state from the hub. These are only local calls.""" so apparently the data gets pushed, but we don't push it all the way to the climate entity

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarified docstring. Hope it's OK to fix in this PR :)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's the overwrite part for?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you have some context for whats overwritten?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Global override, I am not sure what that does from the docs

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It overrides current mode for all zones. We could add a link to the mobile app manual if it helps:
https://gldi-azure.unco.no/en/user-manual/menus-and-functions/overrides/simple-global-overrides/

Comment thread
joostlek marked this conversation as resolved.
Comment thread
joostlek marked this conversation as resolved.
# Bronze
action-setup:
status: exempt
comment: Integration does not register custom actions.
appropriate-polling: done
brands: done
common-modules: done
config-flow-test-coverage:
status: done
comment: >
Tests driven to terminal CREATE_ENTRY or ABORT in PR #170141.
config-flow: done
dependency-transparency: done
docs-actions:
status: exempt
comment: Integration does not register custom actions.
docs-high-level-description: done
docs-installation-instructions: done
docs-removal-instructions: done
entity-event-setup: done
entity-unique-id: done
has-entity-name: done
runtime-data: done
test-before-configure: done
test-before-setup: done
unique-config-entry: done

# Silver
action-exceptions:
status: todo
comment: >
Entity actions (climate set_hvac_mode/set_preset_mode/set_temperature,
select select_option) currently raise unwrapped exceptions; will wrap
in HomeAssistantError with translation keys.
config-entry-unloading: done
docs-configuration-parameters: done
docs-installation-parameters: done
entity-unavailable: todo
integration-owner: done
log-when-unavailable: todo
parallel-updates: done
reauthentication-flow:
status: exempt
comment: The hub does not require authentication.
test-coverage:
status: done
comment: >
Investigate whether the `_spec_hub` helper in `test_init.py` can be
replaced by the conftest base mock.

# Gold
devices:
status: done
comment: >
Model name "Nobø Ecohub" under review for rename to "Nobø Hub".
diagnostics: todo
discovery: done
discovery-update-info: todo
docs-data-update: todo
docs-examples: todo
docs-known-limitations: todo
docs-supported-devices: todo
docs-supported-functions: todo
docs-troubleshooting: todo
docs-use-cases: todo
dynamic-devices: todo
entity-category: todo
entity-device-class:
status: todo
comment: >
Custom device class on global override select being dropped in
PR #170135.
entity-disabled-by-default: todo
entity-translations: todo
exception-translations: todo
icon-translations: todo
reconfiguration-flow: todo
repair-issues:
status: exempt
comment: Integration has no repair scenarios.
stale-devices: todo

# Platinum
async-dependency: done
inject-websession:
status: exempt
comment: Integration uses a local TCP socket (via pynobo); no HTTP client is used.
strict-typing:
status: todo
comment: Requires release of pynobo 1.9.0
2 changes: 0 additions & 2 deletions script/hassfest/quality_scale.py
Original file line number Diff line number Diff line change
Expand Up @@ -670,7 +670,6 @@ class Rule:
"nmbs",
"no_ip",
"noaa_tides",
"nobo_hub",
"norway_air",
"notify_events",
"notion",
Expand Down Expand Up @@ -1657,7 +1656,6 @@ class Rule:
"nmbs",
"no_ip",
"noaa_tides",
"nobo_hub",
"norway_air",
"notify_events",
"notion",
Expand Down
Loading