New binding addon for siemens Hvac controller OZW672.01


I write a new binding for Siemens HVac controller OZW672.01.

With this binding, I’m able to connect Openhab to my atlantic heat pump, and control the heat pump fuctionnality like heat pump temperature, function mode, and others…

OZW672.01 is a sort of webserver that connect to the heat pump and to the local area network.
OZW have a builtin web api based on rest that servers parameters as datapoint get and set api, using JSON format.
Addon is able to pull parameters from OZW on a regular basics, and push update as well.

I would be interest to share this work with the communauty.


1 Like

Very interesting!
This controller should also work with my gas condensing heating system from manufacturer called Brötje.

Merci Laurent! Would you be willing to contribute your new binding to openHAB via a pull request from your github repository to openhab/openhab? Please let us know if you need any more information or guidance regarding How to Contribute. The wiki documentation is being updated soon to address the changes from openHAB 1.x to 2.x, so please let us know if you need any clarifications.

Thanks very much for sharing your efforts!


I do a first pull request : Siemens hvac binding #3817


1 Like

Thanks for this Laurent! I have a domestic central heating system with three heat sources that is connected to a Siemens Alabtros controller. If I understand correctly, the Albatros controller is suitable for connection to the OZW672. I would be interested in connecting the OZW672 to OpenHAB just as you have done (but you have done it for a different heating controller) - can I ask if you managed to find any documentation from Siemens on the functionality of the Web API? Thanks! Tim

Bonjour Laurent, I have now set up my OZW672 with an Albatros controller as I mentioned in a post back in April. It looks like I should be able to use your binding to control my domestic hot water and heating system, which would be fantastic (for instance, we have solar panels for water heating and the ability to control the hot water system based on the weather forecast would be great)! I have looked at your contribution on GibHub and have a very newbie question: where can I download the binding jar (org.openhab.siemenshvacbinding*.jar) - since it is not listed on the main site (at Thanks! Tim

UPDATE: I have been looking at the source code for the binding on GitHub and have been able to verify that the binding should work for me by testing the API calls - I have been able to read and set parameters by manually setting these up. But without the .jar file I am still stuck (I am not a developer and at present have no ambition to become one!)

Laurent, I would be very interested as well to use this binding.

Hello Everybody,

Sorry for my delayed response.
The pull request was deleted by me because I was not very happy with
first version of the binding.
I’m working on a new version that will be able to autodiscover
parameters for the OZW672.
This version would also be easier to config as you won’t have to
indicate datapoint type, and that you can refer to datapoint using the
datapoint index as in the first version, but also using the menu index,
or the symbolic datapoint name.

I also work on a full openhab 2.0 compliant version, but this one is not
ready for no.

Attach you will find the jar for this new version. It was compiled on
openhab-2.0, but I test it with openhab 1.8.3 and it works as well.
Fill free to test it if you want, and to give your feedback.

I hope I will be able to create another pull request in a few days for this.



Technical background

1. Put the jar file inside your addons directory.

*2. As in first version, you will need to give global configuration
directives in your openhab.cfg *


refresh is how often binding will pool the Ozw672 to refresh datapoint
value (given in ms). In this exemple, it will be every 10s.

3. Items can be defind using one of the three syntax below.

dptMenuId is the Id you will find in Web Interface at the start of the line.

dptName is the name of the entry.

dptId is the index of the entry use internally by Ozw672. I wouldn’t
recommands using it as dptId is changing each time you update the
firmware of the Ozw672.

  1. Write your sitemap as usual

For multiple selection items, you will need to give a mappings value.
You can look into cache file below to know good value.

             Setpoint item=Temperature_Consigne_C label="Consigne 

confort [%.1f °C]" step=0.5 minValue=0 maxValue=30

             Selection item=Chauffage_Mode 

mappings=[“1:Automatique”=“Automatique”, “3:Confort”=“Confort”,
“2:Réduit”=“Réduit”, “0:Mode Protection”=“Mode Protection”]*

5. First Start and Cache File

On first start, binding will scan all datapoint of Ozw672 to construct a
cache file of datapoint meta data.
So first start will be a litlle slower, and it could take more then one
minutes to have first data.

The cache file will be write under your configurations directory in the
file configurations/siemens.json.
This file will be update on regular basics as openhab is running.
You can delete this file if something goes wrong, and it will be rewrite
at the next start of openhab

*6. Full sample configs *


String Chauffage_Mode “Mode [%s]”
(gChauffage, Temperature) {
siemenshvac = “dptMenuId:700;” }
Number Temperature_Consigne_C “Consigne
confort [%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:710;” }
Number Temperature_Consigne_R “Consigne
réduit [%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:712;” }
Number Temperature_Consigne_H “Consigne
hg [%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:714;” }
Number Temperature_Confort_Max “Confort
maximum [%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:716;” }
Number Chaudiere_Pente “Pente de la
courbe [%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:720;” }

Number Temperature_ECS_Confort “Consigne
ECS Confort [%.1f °C]” (gChauffage, Temperature)
{ siemenshvac = “dptMenuId:1610;” }
Number Temperature_ECS_Reduit “Consigne ECS
Réduit [%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:1612;” }

Number Temperature_Consigne_Pompe
“Consigne Pompe [%.1f °C]” (gChauffage,
Temperature) { siemenshvac = “dptMenuId:8411;” }
Number Temperature_Depart_Pompe “Départ
Pompe [%.1f °C]” (gChauffage,
Temperature) { siemenshvac = “dptMenuId:8412;” }
Number Modulation_Pompe “Modulation Pompe
[%d %]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:8413;” }
Number Duree_blocage_Pompe “Durrée de
blocage pompe [%.1f heures]” (gChauffage,
Temperature) { siemenshvac = “dptMenuId:8454;” }

Number Temperature_Exterieure_Ch “Exterieure
(Ch) [%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:8700;” }
Number Temperature_Exterieure_Min
“Exterieure (Min) [%.1f °C]” (gChauffage,
Temperature) { siemenshvac = “dptMenuId:8701;” }
Number Temperature_Exterieure_Max
“Exterieure (Max) [%.1f °C]” (gChauffage,
Temperature) { siemenshvac = “dptMenuId:8702;” }
Number Temperature_Thermostat “Température
termostat [%.1f °C]” (gChauffage, Temperature)
{ siemenshvac = “dptMenuId:8740;” }
String Chaudiere_Etat_Pompe_ECS “Etat Pompe
ECS [%s]” (gChauffage, Temperature)
{ siemenshvac = “dptMenuId:8820;” }
String Chaudiere_Etat_ECS “Etat ECS [%s]”
(gChauffage, Temperature) { siemenshvac =
“dptMenuId:1600;” }

Number Temperature_Depart_Reel “Départ réel
[%.1f °C]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:8743;” }
Number Temperature_Depart_Consigne “Départ consigne [%.1f °C]”
(gChauffage, Temperature) {
siemenshvac = “dptMenuId:8744;” }

Number Heure_fct_ECS “Heure Fonctionnement
ECS [%.1f heures]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:8840;” }
Number Nb_Demarrage_ECS “Nbr démarrage ECS
[%.1f]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:8841;” }

String Chaudiere_Etat_Pompe “Etat Pompe
[%s]” (gChauffage, Temperature)
{ siemenshvac = “dptMenuId:8730;” }

String Chaudiere_Etat_Circuit_Ch “Etat
Circuit Chauffe [%s]” (gChauffage, Temperature)
{ siemenshvac = “dptMenuId:8000;” }
String Chaudiere_Etat_Chaudiere “Etat
Chaudiere [%s]” (gChauffage,
Temperature) { siemenshvac = “dptMenuId:8022;” }
String Chaudiere_Etat_Pompe_Ch “Etat
Pompe à chaleur [%s]” (gChauffage, Temperature)
{ siemenshvac = “dptMenuId:8006;” }
String Chaudiere_Etat_Pompe_Chauff “Etat Pompe circuit chauffage
[%s]” (gChauffage, Temperature) {
siemenshvac = “dptMenuId:8730;” }
String Chaudiere_Etat_Dem_Chaleur “Etat
demande chaleur [%s]” (gChauffage, Temperature)
{ siemenshvac = “dptId:2192;” }


sitemap default label=“Main Menu” {

 Frame label="Test" {

             Setpoint item=Temperature_Consigne_C label="Consigne 

confort [%.1f °C]" step=0.5 minValue=0 maxValue=30
Setpoint item=Temperature_Consigne_R label=“Consigne
réduit [%.1f °C]” step=0.5 minValue=0 maxValue=30
Setpoint item=Temperature_Consigne_H label=“Consigne HG
[%.1f °C]” step=0.5 minValue=0 maxValue=30

             Selection item=Chauffage_Mode 

mappings=[“1:Automatique”=“Automatique”, “3:Confort”=“Confort”,
“2:Réduit”=“Réduit”, “0:Mode Protection”=“Mode Protection”]


 Frame label="ECS" {
     Text item=Chaudiere_Etat_Pompe_ECS label="Etat Pompe ECS [%s]"
     Text item=Heure_fct_ECS label="Heure Fonctionnement ECS [%.1f 

Text item=Nb_Demarrage_ECS label=“Nbr démarrage ECS [%.1f]”
Text item=Temperature_ECS_Confort label=“Consigne ECS Confort
[%.1f °C]”
Text item=Temperature_ECS_Reduit label=“Consigne ECS Réduit
[%.1f °C]”
Text item=Chaudiere_Etat_ECS label=“Etat ECS [%s]”

 Frame label="Pompe" {
     Text item=Chaudiere_Etat_Pompe label="Etat Pompe [%s]"
     Text item=Temperature_Consigne_Pompe label="Consigne pompe 

[%.1f °C]"
Text item=Temperature_Depart_Pompe label=“Départ pompe [%.1f °C]”
Text item=Modulation_Pompe label=“Modulation pompe [%d]”

     Text item=Chaudiere_Etat_Pompe_Ch label="Etat Pompe à chaleur [%s]"
     Text item=Duree_blocage_Pompe label="Durrée de blocage pompe 

[%.1f heures]"

     Text item=Chaudiere_Pente label="Pente de la courbe [%.1f]"

 Frame label="Circuit" {
     Text item=Temperature_Depart_Consigne label="Départ consigne 

[%.1f °C]"
Text item=Temperature_Depart_Reel label=“Départ réel [%.1f °C]”
Text item=Chaudiere_Etat_Pompe_Chauff label=“Etat Pompe circuit
chauffage [%s]”
Text item=Chaudiere_Etat_Circuit_Ch label=“Etat circuit
chauffage [%s]”
Text item=Chaudiere_Etat_Dem_Chaleur label=“Etat demande
chaleur [%s]”

 Frame label="Chaudiere" {
     Text item=Chaudiere_Etat_Chaudiere label="Etat Chaudiere [%s]"


··· Le 12/10/2016 à 09:16, Jiří Engelthaler a écrit : > > Hello. Why is this pull request deleted? Is there any other binding in > openhab for siemens HVAC? > > — > You are receiving this because you modified the open/close state. > Reply to this email directly, view it on GitHub > , > or mute the thread > . >

1 Like

Laurent, this is great news for all us owners of OZW672 devices! I am very keen to try out the current .jar file and you say it is attached - but I can’t for the life of me find where. Is it possible that you forgot to attach it? If not please guide me to where I will find it. Thank you!


Hi Tim,

it Seems that mail system from openhab remove the attachment.
I can send it to you to your private email if you want.


Many thanks Laurent, I have sent you my email address by PM.


Congratulations, Laurent, I have received the .jar file and it works just as it should (so far I have only tested reading and writing one value). Thank you very much! It will be good to get it to the point where it can fully join the OpenHAB family of bindings because for anyone with an OZW672.01 it opens up great possibilities!

Thanks again



Great initiative lo92fr. I’m considering buying Siemens HVAC Web Server module OZW672.01, but what’s not clear for me now is what are the actions I’ll be able to do with your binding and this Web server module?

Could you please create a wiki page somewhere to describe more in detail what your plugin will allow?


Read one of the first posts

it should be all in there.

Hi, is this plugin available or it has never been finished?


I tried installing your binding on a recent OH 2.0 installation. However I have the following issue.
There seems to be a bug in the recent 2.0 that causes a conflict between the addons.cfg file in the userdata folder and the main folder, meaning that in order to use the paper UI one has to delete the conf/services/addons.cfg file.

This is fine as long as all bindings are in the list of of the Paper UI. When I try to install your binding manually though the problem is the following, I can copy the jar file but when adding siemenshvac to the addons.cfg file in the userdata folder it gets deleted every time, when adding it in the conf/services/addons.cfg file all my other bindings get removed on startup.

Is it possible to add the siemenshvac binding in the paperUI list? this way it can be installed through the paperUI?

Kind regards,


Laurent, any news on this binding? Do you think it feasible adding the binding to the distribution so it appears in the binding list in the paper UI.

I ran into this that might help

Hi Laurent,

I would also be very keen to try out the current .jar file for openhab binding since I have a OZW672 now.

Thanks Alex.

Just another message of encouragement and enthusiasm for Laurent. For anyone with a Siemens system that can talk to the OZW672 this is a dream binding. It downloads all the available parameters and then you can read and control everything really easily. It would be really great to get it working with OH2.

1 Like

Hi Laurent,

I’m very interesting in using your binding, but I can’t find it neither as source code nor as a binary anywhere. Could you please make it available somewhere or put a link in this discussion, explaining how to access it?

Kind regards,