# Kermi Heat pump
Integrates the X-Center Device (X-Center Pro) of Kermi Heat pump. Kermi X-Center & other attached devices (in progress) are integrated into the Modbus Binding.
This binding was tested and developed with Kermi x-change dynamic pro heat pump (build 2023).
Hint: This binding may also work with devices from "Bösch" in Austria, which is a sub-brand of Kermi, they are nearly identically.
# Prerequisite
Requirement is contacting Kermi Support to activate Modbus-TCP which can be connected directly by network. Older devices (non-Pro ?) were connected by Modbus-RCP - maybe you can try to connect them here using a Modbus-TCP modulator (e.x. from waveshare or similar).
# Supported Things
First you need a "Modbus TCP-Bridge" which establishes the basic connection towards your X-Center device.
Name | Thing Type ID | Description |
---|---|---|
Kermi Heat Pump X-Center | kermi-xcenter | Provides (electric) Power values, Flow-information, PV-States, Temperatures and general Information of your Kermi Heat Pump |
# Discovery
This binding does not support autodiscovery.
# Device IDs
Device | Device ID | Comment |
---|---|---|
X-Center | 40 | on cascade-circuits: slave1: 41, slave2: 42, ... |
# Thing Configuration
The needed Bridge can be found in the Modbus Binding and have to be added manually without Discovery.
- Create Modbus TCP Slave (Bridge) with matching Settings of your Kermi Device:
- IP Address - IP Address or hostname of your heatpump
- Port - Port of modbus on your heatpump (normally 502)
- Device ID - ID on modbus, 40 is default for Kermi (see Device IDs)
- Create Kermi Heat Pump X-Center and attach it to the previous installed Modbus TCP Slave (Bridge). Configuration requires an appropriate Data Refresh Interval with more than 2000 Milliseconds, default is 5000. If it's too fast, you may experience errors in openHAB or your X-Center! Reboot if X-Center stops responding on network access. You can enable "PV Modulation" if you want to read the values (default: disabled)
Details on Configurations explained below.
# Modbus TCP Slave
Parameter | Type | Description |
---|---|---|
host | text | IP Address or reachable hostname of your device |
port | integer | TCP Port of your Kermi device Modbus Settings. Default is 502 |
deviceId | integer | Modbus ID of your Kermi device Modbus Settings. Default is 40 |
# Kermi Heat Pump X-Center
Select as Bridge your previously created Modbus TCP Slave.
Parameter | Type | Description |
---|---|---|
refresh | integer | Refresh Rate of X-Center values in Milliseconds (default:5000) |
pvEnabled | boolean | Read PV-Modulation (default:false) |
# Kermi StorageSystemModule (support planned in future releases)
Select as Bridge a separate (second) Modbus TCP Slave.
Parameter | Type | Description |
---|---|---|
host | text | IP Address or reachable hostname of your device (same as X-Center) |
port | integer | TCP Port of your Kermi device Modbus Settings. Default is 502 |
deviceId | integer | Modbus ID of your Kermi device Modbus Settings. Default is 50 |
# Channel-Groups
The X-Center / StorageSystemModule device offers quite an amount of channels. They are grouped into 7 channel-groups:
- State
- EnergySource
- Charging Circuit
- Power & Efficiency
- Workhours
- Alarm
- PV Modulation
# Channels
# Status
Channel Id | Channel | Type | Description |
---|---|---|---|
global-state-id | Global State ID | Number | State of heat pump as Number, displayed as readable State-Text in UI |
Possible states:
- Standby
- Alarm
- DrinkingWater
- Heating
- Defrost
- Preparing
- Blocked
- EVU Blocktime
- Unavailable
# Energy-Source
Channel Id | Channel Label | Channnel Id | Type | Description |
---|---|---|---|---|
exit-temperature | Exit temperature | Number | in °C - Air temperature exiting heat pump | |
incoming-temperature | Incoming temperature | Number | in °C - Air temperature incoming into heat pump | |
temperature-sensor-outside | Temperature Outside | Number | in °C - Outside Air Temperature (if connected) |
# Charging Circuit
Channel Id | Channel Label | Type | Description |
---|---|---|---|
flow-temperature | Flow temperature | Number | in °C - Water temperature from heat pump to drinking water or heating circuit |
return-temperature | Return temperature | Number | in °C - Water temperature returning back to heat pump |
flow-speed | Flow speed | Number | in l/min - Flow speed of the water |
# Power and efficiency
Channel Id | Channel Label | Type | Description |
---|---|---|---|
cop | Current COP | Number | current cop overall (Coefficient Of Performance) |
cop-heating | Current COP heating | Number | cop for heating |
cop-drinkingwater | Current COP drinking water | Number | cop for drinking water |
cop-cooling | Current COP cooling | Number | cop for cooling |
power | Current power | Number | in W (Watt) - Power overall |
power-heating | Current power heating | Number | in W (Watt) - Power for heating |
power-drinkingwater | Current power drinking water | Number | in W (Watt) - Power for drinking water |
power-cooling | Current power cooling | Number | in W (Watt) - Power for cooling |
electrical-power | Current electric power | Number | in W (Watt) - electric Power overall |
electrical-power-heating | Current electric power heating | Number | in W (Watt) - electric Power for heating |
electrical-power-drinkingwater | Current electric power drinking water | Number | in W (Watt) - electric Power for drinking water |
electrical-power-cooling | Current electric power cooling | Number | in W (Watt) - electric Power for cooling |
# Workhours
Channel Id | Channel Label | Type | Description |
---|---|---|---|
workhours-fan | Fan workhours | Number | in h (hour) - worked hours of the fan |
workhours-storage-loading-pump | Storage Loading Pump workhours | Number | in h (hour) - worked hours of the storage loading pump |
workhours-compressor | Compressor workhours | Number | in h (hour) - worked hours of the compressor |
# Alarm
Channel Id | Channel Label | Type | Description |
---|---|---|---|
alarm-state | Alarm state | Switch | On / true if an alarm is raised |
# PV Modulation
Channel Id | Channel Label | Type | Description |
---|---|---|---|
pv-state | PV Modulation Active | Switch | On / true if PV Modulation is currently active |
pv-power | PV Power | Numbery | in W (Watt) - Power of PV Modulation |
pv-target-temperature-heating | Target temperature heating | Number | in °C - target Temperature in PV Mode of heating (storage) |
pv-target-temperature-drinkingwater | Target temperature drinking water | Number | in °C - target Temperature in PV Mode of drinking water (storage) |
# Full Example
Attention: Configuration by file is not recommended. You can configure everything in the main UI.
# kermi.things
Example
Bridge modbus:tcp:device "Kermi X-Center Modbus TCP" [ host="xcenter", port=502, id=40 ] {
Bridge kermi-xcenter heatpump "Kermi X-Center Heat Pump" [ refresh=5000, pvEnabled=false ]
}
# Items
Number XCenter_Global_State_Id "X-Center Global State ID" (kermi) { channel="modbus:tcp:device:heatpump:state#global-state-id" }
Number:Temperature Heatpump_FlowTemperature "Flow Temperature" (kermi,persist) { channel="modbus:tcp:device:heatpump:charging-circuit#flow-temperature" }
Number:Temperature Heatpump_ReturnTemperature "Return Temperature" (kermi,persist) { channel="modbus:tcp:device:heatpump:charging-circuit#return-temperature" }
Number:VolumetricFlowRate Heatpump_FlowSpeed "Flow Speed" (kermi,persist) { channel="modbus:tcp:device:heatpump:charging-circuit#flow-speed" }
Number:Temperature Heatpump_ExitTemperature "Exit Temperature" (kermi,persist) { channel="modbus:tcp:device:heatpump:energy-source#exit-temperature" }
Number:Temperature Heatpump_Incomingtemperature "Incoming temperature" (kermi,persist) { channel="modbus:tcp:device:heatpump:energy-source#incoming-temperature" }
Number:Temperature Heatpump_TemperatureOutside "Temperature Outside" (kermi,persist) { channel="modbus:tcp:device:heatpump:energy-source#temperature-sensor-outside" }
Number Heatpump_CurrentCOP "Current COP" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#cop" }
Number Heatpump_CurrentCOPHeating "Current COP Heating" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#cop-heating" }
Number Heatpump_CurrentCOPdrinkingwater "Current COP drinking water" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#cop-drinkingwater" }
Number Heatpump_CurrentCOPCooling "Current COP Cooling" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#cop-cooling" }
Number:Power Heatpump_CurrentPower "Current Power" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#power" }
Number:Power Heatpump_Currentpowerheating "Current power heating" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#power-heating" }
Number:Power Heatpump_CurrentPowerDrinkingWater "Current Power Drinking Water" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#power-drinkingwater" }
Number:Power Heatpump_Currentpowercooling "Current power cooling" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#power-cooling" }
Number:Power Heatpump_CurrentElectricPower "Current Electric Power" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#electric-power" }
Number:Power Heatpump_CurrentElectricPowerHeating "Current Electric Power Heating" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#electric-power-heating" }
Number:Power Heatpump_Currentelectricpowerdrinkingwater "Current electric power drinking water" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#electric-power-drinkingwater" }
Number:Power Heatpump_CurrentElectricPowerCooling "Current Electric Power Cooling" (kermi) { channel="modbus:tcp:device:heatpump:power-channel#electric-power-cooling" }
Switch Heatpump_PVModulationActive "PV Modulation Active" (kermi) { channel="modbus:tcp:device:heatpump:pv-modulation#pv-state" }
Number:Power Heatpump_PVPower "PV Power" (kermi) { channel="modbus:tcp:device:heatpump:pv-modulation#pv-power" }
Number:Temperature Heatpump_PVTempHeating "PV Temp Heating" (kermi) { channel="modbus:tcp:device:heatpump:pv-modulation#pv-target-temperature-heating" }
Number:Temperature Heatpump_PVTempDrinkingwater "PV Temp Drinkingwater" (kermi) { channel="modbus:tcp:device:heatpump:pv-modulation#pv-target-temperature-drinkingwater" }
Number:Time Heatpump_FanWorkhours "Fan Workhours" (kermi) { channel="modbus:tcp:device:heatpump:workhours#workhours-fan" }
Number:Time Heatpump_StorageLoadingPumpWorkhours "StorageLoadingPump Workhours" (kermi) { channel="modbus:tcp:device:heatpump:workhours#workhours-storage-loading-pump" }
Number:Time Heatpump_CompressorWorkhours "Compressor Workhours" (kermi) { channel="modbus:tcp:device:heatpump:workhours#workhours-compressor" }
# Persistence
You can / should persist some items you want to track, maybe you track your power consumption with another device (PV-System or 'smart' electricity meter), so you can compare these values.
Suggestion / Optional:
As these (power & temperature) values are long-running ones, maybe you should invest a little amount of time using influxDB as persistence (additionally to your existing default persistence in openHAB).
InfluxDB is a good storage-solution for long terms and uses very small space for its data. Please read the documentation for better understanding how it works.
# Visualization
As many other users I like and use the Grafana approach (in combination with influxdb). See here for more information InfluxDB & Grafana Tutorial (opens new window)
# Credits
Credits goes to Bernd Weymann (Author of E3DC-Modbus-Binding). I used its basic structure / code and handling of Modbus Messages for this binding. Thanks.