OpenHab 2 and Stiebel Eltron

Also here :wink:
Parsed value insideTemperatur -> -60.0 with pos: 18 , len: 2

Edit
But as far as I know I donā€™t have the value in my heater either. I mean you only get it if you have connected the external control unit. But I will check it again later.

Ah yes that makes senseā€¦ so can we assume that -60Ā° means ā€œsensor available bot not in useā€ ?

Yes i think so.
Data flowHC2Temperatur has value -60.0 --> Not in use
Data collectorTemperatur has value -60.0 --> Not in use

great that connection is working now.

the issue with the version in paperui I also face.
The channeltype is to my understanding correctly defined.
very strange.
will try to find out if this is related to the update method

<channel-type id="version">
	<item-type>String</item-type>
	<label>Version</label>
	<description>Firmware version of heat pump.</description>
	<state readOnly="true" />
</channel-type>

Looks like you are living i a refrigerator :laughing: :cold_face:
The reason could be that the position of the byte in the heatpump is not correct.
For our heatpump the file is here 5.09
the relevant entry is here.

<record channelid="insideTemperatur" requestByte="FB" dataType="Sensor" position="18" length="2" scale="0.1"
	bitPosition="0" min="0" max="0" step="0.0"></record>

i guess the answer is somewhere in here.
https://svn.fhem.de/fhem/trunk/fhem/FHEM/00_THZ.pm
is there somebody who is familiar with the datamodel here and can help to translate this?

Unfortunately the Stiebel guy do not open their protocol, this is why FHEM and robert and me do reverse engineering

Yesā€¦ somehow i think itā€™s not that cold :wink:

I will have a look at the pm-File from FHEM. There is also a method implemented to update values in the heatpump.

Just one thingā€¦ i hate hashmapsā€¦. :wink:

yes this code is not easy to understand.

this binding should also work for change settings , but it is not so deeply tested.

Iā€™ve been able to test some readings now. Everything I could not try yet because the heating ā€œunfortunatelyā€ does not have to heat up at the moment :wink:

Here I have uploaded a small Excel sheet in which you can see my results (I will update as soon as possible) https://files.cinspiration.de/index.php/s/djdg5HKtGEybfip

If someone would prefer a PDF or something like that please let me know.


What else I would like :slight_smile:

  • Channel ā€œLast Updateā€ so I know if the values are still updated.
  • Channel for the three fan levels for day and night operation
    Using the FHEM module I can display and even control them (that would be great).
    But I have not found out where exactly the values come from.

Thanks again for the good work :slight_smile:

hi,

i see that finally some of you are able to connect and get first data.
For some of the heatpumps i have not tested the configuration.
There are some file important for the testing and also for fixing issues of the configuration.
In the thing-types you can find your thing-type.
Here are the channel-groups defined which are then in detailed defined in channelgroup-types

Feel free to do test and adjust the file to your needs and the capabilities of the heatpump.

To parse the data from the heatpump there is a HeatpumpConfig of the thing-type.
Each line represents a data from the heatpump.

<record channelid="version" requestByte="FD" dataType="Status" position="4" length="2" scale="0.01"
	bitPosition="0" min="0" max="0" step="0.0"></record>
  • channelid must match to the channelid in channelgroup-types
  • requesbyte represents the byte to be send to the heatpump to get the full register of data.
  • for dataType ā€œStatus, Sensor, Settingsā€ is allowed
  • position defines the byte position in the responds coming back from the heatpump sending the requestbyte
  • length is the length of bytes of the data
  • scale define the scale of the raw number coming from the heatpump to scale with
  • bitPoisition applies to data which are single bit information decoded in a byte (1/0->on/off) , typically for setting switches
  • min,max and step are ranges verified when doing setting changes. They are corresponding to the channel state

I have been starting to do german translation.
if somebody could support here and help to fill the channel-types, that would be great.
File to put the trnslation.
stiebelheatpump_de_DE.properties
Here are the paramter descriptions
parameter in german

I have not started yet with defining the UI for monitoring the heatpump and change settings.
I am currently pushing data to grafana to look into my temperatures.
If you have experiences in what are the best ways to use the UIs in openhab , please share!

TODO:

  • code cleanup and bug resolution
  • finish translations
  • support configuration to provide pick list for serial port available
  • testing of setting changes, best with good UI examples , e.g. program settings. like absence for 2 day
  • develop some scripts for doing setting group changes

ideas:

  • investigate discovery of thingtype
  • look into use case for automation modules, do you have ideas?

let me know your ideas

hi Pierre,

great you look into the 504
The Flow temperature HC2 is a value for a 2nd heat circuit, e.g for the Solar version of the heatpump.
if you do not have this the value has no meaning for you

Inside temperature is a separate sensor that can be connected to the heatpump.If not connected you get the artic temperature measurement. Look into the manual of the heatpump. you can find some info on how to connect a sensor to measure the inside temperature.

The channel for last update is a good point and i will put that on the todo.

Currently your LWZ504 7.59 channelgoups only contain the following groups.

  <channel-groups>
  	<!-- at least 1 channel-group with id = version must be included -->
  	<channel-group id="version" typeId="channelGroupTypeVersion" />
  	<channel-group id="time" typeId="channelGroupTypeTime" />
  	<channel-group id="currentValues" typeId="channelGroupTypeCurrentValues" />
  	<channel-group id="operationCounters" typeId="channelGroupTypeOperationCounters" />
  	<channel-group id="nominalValues" typeId="channelGroupTypeNominalValues" />
  </channel-groups>

In mine (LWZ303i) i have been adding more

	<channel-groups>
		<!-- at least 1 channel-group with id = version must be included -->
		<channel-group id="version" typeId="channelGroupTypeVersion" />
		<channel-group id="time" typeId="channelGroupTypeTime" />
		<channel-group id="currentValues" typeId="channelGroupTypeCurrentValues" />
		<channel-group id="operationCounters" typeId="channelGroupTypeOperationCounters" />
		<channel-group id="nominalValues" typeId="channelGroupTypeNominalValues" />
		<channel-group id="ventilation" typeId="channelGroupTypeVentilation" />
		<channel-group id="heating" typeId="channelGroupTypeHeating" />
		<channel-group id="evaporator" typeId="channelGroupTypeEvaporator" />
		<channel-group id="circulationPump" typeId="channelGroupTypeCirculationPump" />
		<channel-group id="heatingProgram" typeId="channelGroupTypeHeatingProgram" />
		<channel-group id="domesticHotWaterProgram" typeId="channelGroupTypeDomesticHotWaterProgram" />
		<channel-group id="ventilationProgram" typeId="channelGroupTypeVentilationProgram" />
		<channel-group id="absenceProgram" typeId="channelGroupTypeAbsenceProgram" />
		<channel-group id="restartAndMixerTime" typeId="channelGroupTypeRestartAndMixerTime" />
		<channel-group id="domesticHotWater" typeId="channelGroupTypeDomesticHotWater" />
		<channel-group id="lastErrors" typeId="channelGroupTypeLastErrors" />
		<!-- <channel-group id="operationMode" typeId="channelGroupTypeOperationMode"/> -->
	</channel-groups>

i added these channelgroup 2-3 years ago by going through the FHEM code extract the channel configurations. That should also be possible for your heat pump as well.
I can add my channelgroup to your thing-type and then you can see what you get, but it will require investigation the data match by using the local display. Does this make sense to you?

You can also run the debug respond from the paperui. Go to thing configuration, show more and you should see the channel. this will cyle throught all request i know and logs the bytes in the karaf consol , if debug is enabled.

br
peter

I have been testing the code in the last days.
Main focus was on getting writing settings to the heat pump .
I testes the switches , temperature setting and time settings in the different programs.
I also added a last update channel so you can see when the last update has being done

version 7

Many thanks!

I post you my log with v7 of the binding.

log.txt (12.7 KB)

Are theses connection errors normal?

I must admitā€¦ i am cinfused what which value means :wink:

hi ,
sometimes the pump does not respond on a request.

heat pump communication could not be established ! no data availabel!

Not sure if i can improve is , had similar issues with the perl/python code.
looks like values are coming , great.

Iā€™m afraid I havenā€™t been able to get around to it for the last few days. But I could test something again this evening.

I didnā€™t find the new last update channel in the new version. Should the one for the LWZ504 already be there?

ā€“
I also tried to read ā€œp07FanStageStandardModeā€ from the ā€œSetpoint Settingsā€. Unfortunately I only get an error message in the log when it tries to send request byte 17.

21:03:49.588 [DEBUG] [eatpump.internal.CommunicationService] - Request : Name -> , Description ->  , RequestByte -> 17
21:03:49.589 [DEBUG] [eatpump.internal.CommunicationService] - Sending start communication
21:03:49.594 [DEBUG] [ebelheatpump.protocol.SerialConnector] - Send request message : (00)01 00 18 17 (04)10 03
21:03:49.613 [DEBUG] [eatpump.internal.CommunicationService] - reached end of response message.
21:03:49.613 [DEBUG] [g.stiebelheatpump.protocol.DataParser] - verification of response failed : org.openhab.binding.stiebelheatpump.internal.StiebelHeatPumpException: invalid response on request of data, response is neither get nor set: 
21:03:49.614 [DEBUG] [eatpump.internal.CommunicationService] - Sending start communication
21:03:50.628 [ERROR] [eatpump.internal.CommunicationService] - heat pump communication could not be established ! no data availabel!
21:03:50.629 [ERROR] [eatpump.internal.CommunicationService] - Error reading data : org.openhab.binding.stiebelheatpump.internal.StiebelHeatPumpException

Since Iā€™m not very familiar with Perl and FHEM I havenā€™t been able to find out where the correct values he gives me come from when I read out my heating via FHEM. But I am still testing here. If somebody should have a tip I will gladly accept it :slight_smile:


The channel-group from your other post I will build in my local version in the next days and test where I get useful values. Then I would give a feedback which could be usefully included in the official version.

To get the new channel in you most probably need to create the thing newly. Somehow the existing thing does not update new channels from the new version.
BTW, i started to play around with habpanel , here the first impression.

Hi kreutzer_peter,

the gui looks good already. Iā€™m a fan of grafana anyway :wink: Could it be that the operating hours are not yet labelled correctly or do the models of the heater differ? I have ā€œVerdichter Heizenā€, ā€œVerdichter WWā€ and ā€œVerdichter KĆ¼hlenā€. But I do not have ā€œVerdichterā€ alone.


Can you please update the git repository when you have time? I just compiled a customized version based on your code and saw that the last update is gone again :slight_smile: Thanks

Maybe the pump give a " too many requests in too short time" error.
Did anyone try it with a increased poll-to-poll time?

hi ,
yes i guess that the operation counter depends on the type of the heat pump. if you have SOL variant or colling included.

For the github you need to use my branch ā€œStiebelBindingā€ in which i added

in the trunk you will not find it
I will have to commit my change of last 2 days though

THe polling tim i have been setting done to 10 sec and it still worked.
Issue is that today code also read out the setting data all the time.
I you may have recognized i categorize data in Status, Sensor and setting data.
Status and Sensor data are monitoring data and do contentiously change. There are only a few register in the heat pump to read these data.
For the settings there are more register available. Including these register in the continues pool will slow it done.
Settings are only changing via the local HMI or with the new binding. If changed with the binding the you always get the current setting after setting change.

I propose to remove the setting poll from the refresh cycle and have only at start up and once per day and update.
what do you think?

Yes, itā€™s possible. I ask because it might be relevant for the translation to know if the models differ in the labeling.


Thatā€™s exactly the branch ā€œStiebelBindingā€ I use. In the channel-types.xml which I read out of the jar there is an entry ā€œrefreshDateTimeā€. I can not find it in the branch yet :slight_smile:

will check in today

thx :slight_smile: