-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
[remehaheating] Initial contribution #19494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 10 commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
75ced4d
[remehaheating] Initial contribution
ff59db6
[remehaheating] Fixing pom.xml format issues with mvn spotless:apply
fd7e987
Refactor channel identifiers and types in README and XML files for co…
331d40c
Codechanges related to first review findings by Copilot and lsiepel@
bc497ef
Adding missing tags in thing-types.xml
a5a0f25
Applying suggested changes from code review by @lsiepel
076fb1c
Applying suggested changes from code review by @lsiepel
a62d326
Adding Missing Timeout and detailled exception handling in Client
1bbadc0
Fixing build warnings and SAT findings
d9322f4
Regenerating i18n properties file
770f8a7
Update bundles/org.openhab.binding.remehaheating/pom.xml
lsiepel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| This content is produced and maintained by the openHAB project. | ||
|
|
||
| * Project home: https://www.openhab.org | ||
|
|
||
| == Declared Project Licenses | ||
|
|
||
| This program and the accompanying materials are made available under the terms | ||
| of the Eclipse Public License 2.0 which is available at | ||
| https://www.eclipse.org/legal/epl-2.0/. | ||
|
|
||
| == Source Code | ||
|
|
||
| https://github.com/openhab/openhab-addons |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,145 @@ | ||
| # RemehaHeating Binding | ||
|
|
||
| This binding integrates Remeha Home heating systems with openHAB. | ||
| It connects to the Remeha cloud service using the same API as the official Remeha Home mobile app. | ||
|
|
||
| The binding supports monitoring and control of Remeha boilers that are connected to the Remeha Home cloud service. | ||
| This includes most modern Remeha boilers with internet connectivity. | ||
|
|
||
| Key features include: | ||
|
|
||
| - Real-time monitoring of room and outdoor temperatures | ||
| - Target temperature control | ||
| - Hot water (DHW) temperature monitoring and mode control | ||
| - Water pressure monitoring and status | ||
| - System error status monitoring | ||
|
|
||
| ## Supported Things | ||
|
|
||
| This binding supports Remeha boilers that are connected to the Remeha Home cloud service. | ||
|
|
||
| - `boiler`: Represents a Remeha boiler with ThingTypeUID `remehaheating:boiler` | ||
|
|
||
| The binding has been tested with Remeha Calenta Ace boilers but should work with any Remeha boiler that supports the Remeha Home cloud service. | ||
|
|
||
| ## Discovery | ||
|
|
||
| This binding does not support automatic discovery. | ||
| Boilers must be manually configured using your Remeha Home account credentials. | ||
|
|
||
| Each Remeha Home account typically manages one heating system, so you will need one Thing configuration per account. | ||
|
|
||
| ## Binding Configuration | ||
|
|
||
| This binding does not require any global configuration. | ||
| All configuration is done at the Thing level using your Remeha Home account credentials. | ||
|
|
||
| ## Thing Configuration | ||
|
|
||
| To configure a Remeha boiler, you need your Remeha Home account credentials. | ||
| These are the same credentials you use for the Remeha Home mobile app. | ||
|
|
||
| ### `boiler` Thing Configuration | ||
|
|
||
| | Name | Type | Description | Default | Required | Advanced | | ||
| |-----------------|---------|-----------------------------------------------|---------|----------|----------| | ||
| | email | text | Remeha Home account email address | N/A | yes | no | | ||
| | password | text | Remeha Home account password | N/A | yes | no | | ||
| | refreshInterval | integer | Interval the device is polled in seconds | 60 | no | yes | | ||
|
|
||
| The refresh interval should be set between 30 and 3600 seconds. | ||
| A shorter interval provides more up-to-date data but may increase API usage. | ||
|
|
||
| ## Channels | ||
|
|
||
| The binding provides the following channels for monitoring and controlling your Remeha heating system: | ||
|
|
||
| | Channel | Type | Read/Write | Description | | ||
| |---------------------|-------------------|------------|------------------------------------------------| | ||
| | room-temperature | Number:Temperature| Read | Current room temperature | | ||
| | target-temperature | Number:Temperature| Read/Write | Target room temperature (5-30°C) | | ||
| | dhw-temperature | Number:Temperature| Read | Current hot water temperature | | ||
| | dhw-target | Number:Temperature| Read | Target hot water temperature | | ||
| | dhw-mode | String | Read/Write | DHW mode (anti-frost/schedule/continuous-comfort) | | ||
| | dhw-status | String | Read | Hot water status | | ||
| | water-pressure | Number:Pressure | Read | System water pressure | | ||
| | water-pressure-ok | Switch | Read | Water pressure status (ON=OK, OFF=Low) | | ||
| | outdoor-temperature | Number:Temperature| Read | Outdoor temperature | | ||
| | status | String | Read | Boiler error status | | ||
|
|
||
| ## Full Example | ||
|
|
||
| ### Thing Configuration | ||
|
|
||
| ```java | ||
| Thing remehaheating:boiler:myboiler "Remeha Boiler" [ | ||
| email="<your-email@example.com>", | ||
| password="<your-password>", | ||
| refreshInterval=60 | ||
| ] | ||
| ``` | ||
|
|
||
| ### Item Configuration | ||
|
|
||
| ```java | ||
| // Temperature monitoring | ||
| Number:Temperature RoomTemp "Room Temperature [%.1f °C]" { channel="remehaheating:boiler:myboiler:room-temperature" } | ||
| Number:Temperature TargetTemp "Target Temperature [%.1f °C]" { channel="remehaheating:boiler:myboiler:target-temperature" } | ||
| Number:Temperature OutdoorTemp "Outdoor Temperature [%.1f °C]" { channel="remehaheating:boiler:myboiler:outdoor-temperature" } | ||
|
|
||
| // Hot water | ||
| Number:Temperature DHWTemp "Hot Water Temperature [%.1f °C]" { channel="remehaheating:boiler:myboiler:dhw-temperature" } | ||
| Number:Temperature DHWTarget "Hot Water Target [%.1f °C]" { channel="remehaheating:boiler:myboiler:dhw-target" } | ||
| String DHWMode "Hot Water Mode [%s]" { channel="remehaheating:boiler:myboiler:dhw-mode" } | ||
| String DHWStatus "Hot Water Status [%s]" { channel="remehaheating:boiler:myboiler:dhw-status" } | ||
|
|
||
| // System status | ||
| Number:Pressure WaterPressure "Water Pressure [%.1f bar]" { channel="remehaheating:boiler:myboiler:water-pressure" } | ||
| Switch WaterPressureOK "Water Pressure OK" { channel="remehaheating:boiler:myboiler:water-pressure-ok" } | ||
| String BoilerStatus "Boiler Status [%s]" { channel="remehaheating:boiler:myboiler:status" } | ||
| ``` | ||
|
|
||
| ### Sitemap Configuration | ||
|
|
||
| ```perl | ||
| sitemap remeha label="Remeha Heating" { | ||
| Frame label="Temperature Control" { | ||
| Text item=RoomTemp | ||
| Setpoint item=TargetTemp minValue=5 maxValue=30 step=0.5 | ||
| Text item=OutdoorTemp | ||
| } | ||
| Frame label="Hot Water" { | ||
| Text item=DHWTemp | ||
| Text item=DHWTarget | ||
| Selection item=DHWMode mappings=["anti-frost"="Anti-frost", "schedule"="Schedule", "continuous-comfort"="Continuous Comfort"] | ||
| Text item=DHWStatus | ||
| } | ||
| Frame label="System Status" { | ||
| Text item=WaterPressure | ||
| Text item=WaterPressureOK | ||
| Text item=BoilerStatus | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| ## Authentication | ||
|
|
||
| This binding uses the same OAuth2 PKCE authentication flow as the official Remeha Home mobile app. | ||
| Your credentials are used only to obtain an access token and are not stored permanently. | ||
|
|
||
| The binding automatically handles token refresh and re-authentication as needed. | ||
|
|
||
| ## Limitations | ||
|
|
||
| - Only the first appliance from your Remeha Home account is supported | ||
| - Only the first climate zone and hot water zone are monitored | ||
| - The binding requires an active internet connection to the Remeha cloud service | ||
| - API rate limiting may apply - avoid setting very short refresh intervals | ||
|
|
||
| ## Troubleshooting | ||
|
|
||
| - Ensure your Remeha Home account credentials are correct | ||
| - Check that your boiler is online in the Remeha Home mobile app | ||
| - Verify your openHAB system has internet connectivity | ||
| - Check the openHAB logs for authentication or API errors | ||
| - Try increasing the refresh interval if you experience connection issues |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
|
|
||
| <modelVersion>4.0.0</modelVersion> | ||
|
|
||
| <parent> | ||
| <groupId>org.openhab.addons.bundles</groupId> | ||
| <artifactId>org.openhab.addons.reactor.bundles</artifactId> | ||
| <version>5.1.0-SNAPSHOT</version> | ||
| </parent> | ||
|
|
||
| <artifactId>org.openhab.binding.remehaheating</artifactId> | ||
|
|
||
| <name>openHAB Add-ons :: Bundles :: RemehaHeating Binding</name> | ||
|
|
||
| </project> | ||
9 changes: 9 additions & 0 deletions
9
bundles/org.openhab.binding.remehaheating/src/main/feature/feature.xml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <features name="org.openhab.binding.remehaheating-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0"> | ||
| <repository>mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features</repository> | ||
|
|
||
| <feature name="openhab-binding-remehaheating" description="RemehaHeating Binding" version="${project.version}"> | ||
| <feature>openhab-runtime-base</feature> | ||
| <bundle start-level="80">mvn:org.openhab.addons.bundles/org.openhab.binding.remehaheating/${project.version}</bundle> | ||
| </feature> | ||
| </features> |
75 changes: 75 additions & 0 deletions
75
...c/main/java/org/openhab/binding/remehaheating/internal/RemehaHeatingBindingConstants.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| /* | ||
| * Copyright (c) 2010-2025 Contributors to the openHAB project | ||
| * | ||
| * See the NOTICE file(s) distributed with this work for additional | ||
| * information. | ||
| * | ||
| * This program and the accompanying materials are made available under the | ||
| * terms of the Eclipse Public License 2.0 which is available at | ||
| * http://www.eclipse.org/legal/epl-2.0 | ||
| * | ||
| * SPDX-License-Identifier: EPL-2.0 | ||
| */ | ||
| package org.openhab.binding.remehaheating.internal; | ||
|
|
||
| import org.eclipse.jdt.annotation.NonNullByDefault; | ||
| import org.openhab.core.thing.ThingTypeUID; | ||
|
|
||
| /** | ||
| * The {@link RemehaHeatingBindingConstants} class defines common constants used across the binding. | ||
| * | ||
| * This class contains: | ||
| * - Thing type UIDs for supported devices | ||
| * - Channel identifiers for all supported channels | ||
| * - Configuration parameter names | ||
| * - DHW mode constants | ||
| * | ||
| * @author Michael Fraedrich - Initial contribution | ||
| */ | ||
| @NonNullByDefault | ||
| public class RemehaHeatingBindingConstants { | ||
|
|
||
| private static final String BINDING_ID = "remehaheating"; | ||
|
|
||
| // Thing Type UIDs | ||
| /** Thing type UID for Remeha boiler */ | ||
| public static final ThingTypeUID THING_TYPE_BOILER = new ThingTypeUID(BINDING_ID, "boiler"); | ||
|
|
||
| // Channel identifiers | ||
| /** Current room temperature channel */ | ||
| public static final String CHANNEL_ROOM_TEMPERATURE = "room-temperature"; | ||
| /** Target room temperature channel (read/write) */ | ||
| public static final String CHANNEL_TARGET_TEMPERATURE = "target-temperature"; | ||
| /** Current DHW temperature channel */ | ||
| public static final String CHANNEL_DHW_TEMPERATURE = "dhw-temperature"; | ||
| /** Target DHW temperature channel */ | ||
| public static final String CHANNEL_DHW_TARGET = "dhw-target"; | ||
| /** System water pressure channel */ | ||
| public static final String CHANNEL_WATER_PRESSURE = "water-pressure"; | ||
| /** Outdoor temperature channel */ | ||
| public static final String CHANNEL_OUTDOOR_TEMPERATURE = "outdoor-temperature"; | ||
| /** Boiler error status channel */ | ||
| public static final String CHANNEL_STATUS = "status"; | ||
| /** DHW operating mode channel (read/write) */ | ||
| public static final String CHANNEL_DHW_MODE = "dhw-mode"; | ||
| /** Water pressure OK status channel */ | ||
| public static final String CHANNEL_WATER_PRESSURE_OK = "water-pressure-ok"; | ||
| /** DHW status channel */ | ||
| public static final String CHANNEL_DHW_STATUS = "dhw-status"; | ||
|
|
||
| // Configuration parameter names | ||
| /** Email configuration parameter */ | ||
| public static final String CONFIG_EMAIL = "email"; | ||
| /** Password configuration parameter */ | ||
| public static final String CONFIG_PASSWORD = "password"; | ||
| /** Refresh interval configuration parameter */ | ||
| public static final String CONFIG_REFRESH_INTERVAL = "refreshInterval"; | ||
|
|
||
| // DHW operating modes | ||
| /** Anti-frost DHW mode - minimal heating to prevent freezing */ | ||
| public static final String DHW_MODE_ANTI_FROST = "anti-frost"; | ||
| /** Schedule DHW mode - follows programmed schedule */ | ||
| public static final String DHW_MODE_SCHEDULE = "schedule"; | ||
| /** Continuous comfort DHW mode - maintains target temperature */ | ||
| public static final String DHW_MODE_CONTINUOUS_COMFORT = "continuous-comfort"; | ||
| } |
46 changes: 46 additions & 0 deletions
46
.../src/main/java/org/openhab/binding/remehaheating/internal/RemehaHeatingConfiguration.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| /* | ||
| * Copyright (c) 2010-2025 Contributors to the openHAB project | ||
| * | ||
| * See the NOTICE file(s) distributed with this work for additional | ||
| * information. | ||
| * | ||
| * This program and the accompanying materials are made available under the | ||
| * terms of the Eclipse Public License 2.0 which is available at | ||
| * http://www.eclipse.org/legal/epl-2.0 | ||
| * | ||
| * SPDX-License-Identifier: EPL-2.0 | ||
| */ | ||
| package org.openhab.binding.remehaheating.internal; | ||
|
|
||
| import org.eclipse.jdt.annotation.NonNullByDefault; | ||
|
|
||
| /** | ||
| * The {@link RemehaHeatingConfiguration} class contains fields mapping thing configuration parameters. | ||
| * | ||
| * This configuration class holds the parameters required to connect to a Remeha Home account: | ||
| * - Email and password for authentication | ||
| * - Refresh interval for periodic data updates | ||
| * | ||
| * @author Michael Fraedrich - Initial contribution | ||
| */ | ||
| @NonNullByDefault | ||
| public class RemehaHeatingConfiguration { | ||
|
|
||
| /** | ||
| * Remeha Home account email address. | ||
| * This is the same email used for the Remeha Home mobile app. | ||
| */ | ||
| public String email = ""; | ||
|
|
||
| /** | ||
| * Remeha Home account password. | ||
| * This is the same password used for the Remeha Home mobile app. | ||
| */ | ||
| public String password = ""; | ||
|
|
||
| /** | ||
| * Refresh interval in seconds for polling the Remeha API. | ||
| * Default is 60 seconds. Valid range is 30-3600 seconds. | ||
| */ | ||
| public int refreshInterval = 60; | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.