Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 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 CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@
/bundles/org.openhab.binding.radiobrowser/ @skinah
/bundles/org.openhab.binding.radiothermostat/ @mlobstein
/bundles/org.openhab.binding.regoheatpump/ @crnjan
/bundles/org.openhab.binding.remehaheating/ @FreddyFFM
/bundles/org.openhab.binding.remoteopenhab/ @lolodomo
/bundles/org.openhab.binding.renault/ @dougculnane
/bundles/org.openhab.binding.resol/ @ramack
Expand Down
5 changes: 5 additions & 0 deletions bom/openhab-addons/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1616,6 +1616,11 @@
<artifactId>org.openhab.binding.regoheatpump</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.binding.remehaheating</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.openhab.addons.bundles</groupId>
<artifactId>org.openhab.binding.remoteopenhab</artifactId>
Expand Down
13 changes: 13 additions & 0 deletions bundles/org.openhab.binding.remehaheating/NOTICE
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
145 changes: 145 additions & 0 deletions bundles/org.openhab.binding.remehaheating/README.md
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
17 changes: 17 additions & 0 deletions bundles/org.openhab.binding.remehaheating/pom.xml
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>
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>
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";
}
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;
}
Loading