Skip to content

Add Solyx Energy integration#176572

Draft
MartinaeyNL wants to merge 11 commits into
home-assistant:devfrom
openremote:feature/solyx-integration
Draft

Add Solyx Energy integration#176572
MartinaeyNL wants to merge 11 commits into
home-assistant:devfrom
openremote:feature/solyx-integration

Conversation

@MartinaeyNL

@MartinaeyNL MartinaeyNL commented Jul 15, 2026

Copy link
Copy Markdown

Proposed change

This PR adds a new integration for the Solyx Energy water boiler named Nymo.
Their product is marketed as an alternative for home batteries, instead storing energy in the form of hot water.
It consists of a P1 dongle for measuring grid power, in combination with a standard electric boiler that is remotely controllable.

They offer an hosted HTTP API to control and read data from their Nymo devices.
In the future I might implement a protocol to communicate with their ESP32 firmware locally.

Through the Solyx Energy mobile app, users can obtain a client_id, client_secret and device ID.
This is used for obtaining an access token and communicating with the cloud HTTP API.
The integration has been configured to use cloud_polling with an interval of 1 minute.

This initial PR targets a bronze quality scale, although most of the code is of silver quality.

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • I understand the code I am submitting and can explain how it works.
  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.
  • Any generated code has been carefully reviewed for correctness and compliance with project standards.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies a diff between library versions and ideally a link to the changelog/release notes is added to the PR description.

To help with the load of incoming pull requests:

@home-assistant home-assistant Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @MartinaeyNL

It seems you haven't yet signed a CLA. Please do so here.

Once you do that we will be able to review and accept this pull request.

Thanks!

@home-assistant home-assistant Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

When adding new integrations, limit included platforms to a single platform. While we appreciate the effort, reviewing larger than necessary PRs slows down the review process. Please reduce this PR to a single platform. See the review process for more details.

@MartinaeyNL

Copy link
Copy Markdown
Author

The PR is currently a draft, as the documentation and brands PR is still pending.
I'll also take a look at the CLA tomorrow.

@home-assistant home-assistant Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @MartinaeyNL

It seems you haven't yet signed a CLA. Please do so here.

Once you do that we will be able to review and accept this pull request.

Thanks!

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds cloud polling support for Solyx Energy Nymo water boilers.

Changes:

  • Adds credential setup, reauthentication, polling, and cloud control.
  • Exposes sensor, number, and select entities.
  • Adds metadata, translations, typing configuration, and tests.

Reviewed changes

Copilot reviewed 27 out of 29 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
.strict-typing Enables strict typing.
CODEOWNERS Adds integration owners.
mypy.ini Adds strict mypy settings.
homeassistant/generated/config_flows.py Registers the config flow.
homeassistant/generated/integrations.json Registers integration metadata.
homeassistant/components/solyx_energy/__init__.py Implements setup and unloading.
homeassistant/components/solyx_energy/api.py Implements cloud API access.
homeassistant/components/solyx_energy/config_flow.py Adds setup and reauthentication flows.
homeassistant/components/solyx_energy/const.py Defines integration constants.
homeassistant/components/solyx_energy/coordinator.py Coordinates polling and writes.
homeassistant/components/solyx_energy/entity.py Defines the entity base class.
homeassistant/components/solyx_energy/entity_descriptions.py Describes exposed entities.
homeassistant/components/solyx_energy/manifest.json Declares integration metadata.
homeassistant/components/solyx_energy/number.py Adds boiler control entity.
homeassistant/components/solyx_energy/quality_scale.yaml Declares quality-scale status.
homeassistant/components/solyx_energy/select.py Adds operating-mode control.
homeassistant/components/solyx_energy/sensor.py Adds energy and power sensors.
homeassistant/components/solyx_energy/strings.json Adds user-facing translations.
homeassistant/components/solyx_energy/util.py Adds API value parsing helpers.
tests/components/solyx_energy/__init__.py Initializes the test package.
tests/components/solyx_energy/conftest.py Provides shared fixtures.
tests/components/solyx_energy/const.py Defines test constants.
tests/components/solyx_energy/fixtures/asset_data.json Provides sample API data.
tests/components/solyx_energy/test_api.py Tests cloud API behavior.
tests/components/solyx_energy/test_config_flow.py Tests setup and reauthentication.
tests/components/solyx_energy/test_init.py Tests lifecycle and device registration.
tests/components/solyx_energy/test_number.py Tests number controls.
tests/components/solyx_energy/test_select.py Tests operating-mode controls.
tests/components/solyx_energy/test_sensor.py Tests sensor states.

Comment thread homeassistant/components/solyx_energy/api.py
Comment thread homeassistant/components/solyx_energy/coordinator.py
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml Outdated
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml Outdated
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml Outdated
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml
Comment thread homeassistant/components/solyx_energy/manifest.json
Comment thread homeassistant/components/solyx_energy/config_flow.py
Comment thread homeassistant/components/solyx_energy/config_flow.py
Copilot AI review requested due to automatic review settings July 15, 2026 19:49

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 27 out of 29 changed files in this pull request and generated 15 comments.

Comment thread homeassistant/components/solyx_energy/api.py
Comment thread homeassistant/components/solyx_energy/api.py Outdated
Comment thread homeassistant/components/solyx_energy/coordinator.py
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml Outdated
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml Outdated
Comment thread homeassistant/components/solyx_energy/manifest.json
Comment thread tests/components/solyx_energy/test_number.py
Comment thread homeassistant/components/solyx_energy/util.py
Comment thread homeassistant/components/solyx_energy/config_flow.py
Comment thread homeassistant/components/solyx_energy/config_flow.py
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 16, 2026 07:16

@home-assistant home-assistant Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @MartinaeyNL

It seems you haven't yet signed a CLA. Please do so here.

Once you do that we will be able to review and accept this pull request.

Thanks!

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 27 out of 29 changed files in this pull request and generated 8 comments.

Comment thread homeassistant/components/solyx_energy/config_flow.py Outdated
Comment thread homeassistant/components/solyx_energy/config_flow.py Outdated
Comment thread homeassistant/components/solyx_energy/entity_descriptions.py
Comment thread homeassistant/components/solyx_energy/entity_descriptions.py Outdated
Comment thread homeassistant/components/solyx_energy/entity_descriptions.py Outdated
Comment thread homeassistant/components/solyx_energy/entity_descriptions.py Outdated
Comment thread homeassistant/components/solyx_energy/entity_descriptions.py Outdated
Comment thread homeassistant/components/solyx_energy/strings.json
Copilot AI review requested due to automatic review settings July 16, 2026 08:23

@home-assistant home-assistant Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @MartinaeyNL

It seems you haven't yet signed a CLA. Please do so here.

Once you do that we will be able to review and accept this pull request.

Thanks!

@home-assistant home-assistant Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @MartinaeyNL

It seems you haven't yet signed a CLA. Please do so here.

Once you do that we will be able to review and accept this pull request.

Thanks!

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 27 out of 29 changed files in this pull request and generated 9 comments.

Comment thread homeassistant/components/solyx_energy/api.py Outdated
Comment thread homeassistant/components/solyx_energy/util.py
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml
Comment thread homeassistant/components/solyx_energy/manifest.json
Comment thread tests/components/solyx_energy/test_api.py Outdated
Comment thread tests/components/solyx_energy/test_api.py Outdated
Comment thread tests/components/solyx_energy/test_api.py Outdated
Comment thread tests/components/solyx_energy/test_api.py Outdated
Copilot AI review requested due to automatic review settings July 16, 2026 09:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 27 out of 29 changed files in this pull request and generated 3 comments.

Comment thread homeassistant/components/solyx_energy/util.py
Comment thread tests/components/solyx_energy/test_select.py
Comment thread tests/components/solyx_energy/test_number.py
Copilot AI review requested due to automatic review settings July 16, 2026 09:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 27 out of 29 changed files in this pull request and generated 3 comments.

Comment thread homeassistant/components/solyx_energy/util.py
Comment thread homeassistant/components/solyx_energy/util.py
Comment thread homeassistant/components/solyx_energy/util.py Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 16, 2026 10:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 27 out of 29 changed files in this pull request and generated 7 comments.

Comment thread homeassistant/components/solyx_energy/quality_scale.yaml
Comment thread homeassistant/components/solyx_energy/quality_scale.yaml
Comment thread homeassistant/components/solyx_energy/api.py
Comment thread homeassistant/components/solyx_energy/api.py
Comment thread homeassistant/components/solyx_energy/api.py
Comment thread tests/components/solyx_energy/test_init.py
Comment thread tests/components/solyx_energy/test_api.py
Copilot AI review requested due to automatic review settings July 16, 2026 15:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 27 out of 29 changed files in this pull request and generated 3 comments.

Comment on lines +37 to +41
@property
@override
def native_value(self) -> StateType | None:
"""Retrieve the parsed (native) value of the sensor."""
return getattr(self.coordinator.data, self.entity_description.key, None)
Comment on lines +36 to +40
@property
@override
def native_value(self) -> float | None:
"""Return the current value of the number from the coordinator data."""
return getattr(self.coordinator.data, self.entity_description.key, None)
Comment on lines +10 to +20
def parse_attr_value(raw: dict[str, Any], attr_name: str) -> Any:
"""Extract value from an Solyx device attribute."""
attributes = raw.get("attributes") or {}
val = attributes.get(attr_name, {}).get("value")
_LOGGER.debug("Extracting %s. New value: %s", attr_name, val)
return val


def parse_float(raw: dict[str, Any], attr_name: str) -> float | None:
"""Parse a float value from an Solyx device attribute."""
val = parse_attr_value(raw, attr_name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants