What to adjust with latest release for older heatpumps

Asked by alphaomega

Hello,

what do I have to adjust in which file if I use the latest release/ beta (I do not know how exactly you call these "development" or "final" versions - branch, trunk?) version of heatpump monitor for an older (2008) heatpump? (Tecalor THZ 303 SOL without "ipod" control)

Thanks and best regards, ao

PS:
If someone has a working .ini file for the above heatpump with software/ firmware version 2.16, please let me know. I still have problems with the heatpump monitor suddenly stopping, because the parameters do not match, and I did not manage to find out the correct parameters with a serial interface sniffer, unfortunately (I am not experienced enough for such things).

Question information

Language:
English Edit question
Status:
Solved
For:
heatpumpMonitor Edit question
Assignee:
No assignee Edit question
Solved by:
alphaomega
Solved:
Last query:
Last reply:
Revision history for this message
Robert Penz (robert-penz-name) said :
#1

The current development version is called trunk, and if I've a stable version (mostly tested by others, as on my system all uploaded versions run stable ;-) ) with some new features I make release.

about the upgrade.

diff old/heatpumpMonitor.ini new/heatpumpMonitor.ini

should show you the changes. the protocolversions ini should be the same. If you gave me your version file it is also part of the release. if not - sent it to me and I include also your version ini into the next release

ps: http://www.heise.de/software/download/free_serial_port_monitor/26030 is a good monitor

Revision history for this message
alphaomega (alpha-omega) said :
#2

Hi Robert,

I installed the above mentioned serial port monitor, but it shows me only COM1 and COM2, but not COM3 to which my heatpump is connected via HW Virtual Serial Port (v3.1.2), also a Windows tool. That tool in turn lets me connect my heatpump to various COM ports, i.e. from COM3 to COM200, but neither to COM1, nor to COM2. This is really stupid. Any ideas how to solve this? I know that it has nothing to do with your project but hope that you or someone else has some hints for me. Thanks a lot!

How do I find out the length of the results I get? The .ini for the 2.06 version says the length is 41.
But what exactly does this mean? When I look into this .ini file and count the size (2 or 1) of the variables there...

value01 = flow_temp 4 fixedPoint 2 1
value02 = return_temp 6 fixedPoint 2 1
value03 = hot_gas_temp 8 fixedPoint 2 1
value04 = dhw_temp 10 fixedPoint 2 1
value05 = flow_temp_hc2 12 fixedPoint 2 1
value07 = evaporator_temp 16 fixedPoint 2 1
value08 = condenser_temp 18 fixedPoint 2 1
value12 = extr_speed_actual 26 fixedPoint 1 0
value13 = vent_speed_actual 27 fixedPoint 1 0
value14 = expel_speed_actual 28 fixedPoint 1 0
value15 = outside_temp 2 fixedPoint 2 1
value16 = outside_temp_filtered 30 fixedPoint 2 1
value17 = compressor_temp 14 fixedPoint 2 1

... then I count 25 bytes (see above), not 41.

Further below in the .ini file for version 2.06 comes this:

[HeatingValues]
comment = the heating values
request = \xf4
responseLength = 39
# name pos type size fixedDecimals
# -------------------------------------------------------------
value01 = inside_temp 32 fixedPoint 2 1

Here, a length of 39 is mentioned, but there is only one variable (i.e. value01 = inside_temp) with a size of 2 bytes (not 39).
So I wonder what this exactly means, how I can read more values from my heatpump, e.g. how do I read vent_speed_set?

Again, thanks!

Kind regards, ao

Revision history for this message
Robert Penz (robert-penz-name) said :
#3

The whole result is 39 bytes long and e.g.

value04 = dhw_temp 10 fixedPoint 2 1

that at position 10 there is the fixPoint float value with a length of 2 bytes (so the byte at position 10 and 11 actually), so if for example the bytes would be 01 b6 in hex you calculate
dec(0xb6+0x01*256)) which gets you to 438, with one value after the comma (the 1 at the end of the line) you get 43,8 as your value. Take a look at: http://robert.penz.name/heat-pump-lwz/ the last "image" on the page, that maybe helps too.

I can't help you with your windows problem. Maybe you just need a notebook/pc with windows which you can connect directly to get the values if the virtual stuff does not work with the sniffer. It is only for testing anyway, if you got your values you can use the virtual stuff again.

Revision history for this message
alphaomega (alpha-omega) said :
#4

Ok, I will try without the sniffer, because first I need to understand the syntax of the .ini file:

The above and also the picture are clear to me (also that it starts with byte number 0 and not 1). But what about the response length, being much longer than the actual value lengths?

E.g. the first section (why is there no section header in [brackets] for the first group of values?) has:
 value16 = outside_temp_filtered 30 fixedPoint 2 1

This means that value16 starts on position 30 and ends on position 31 (it has two bytes).
But why is the response length for that section 41?

 responseLength = 41

How do I know how to call the sections? For 2.06 a section is called [OperatingCondition], but for 4.38 it is called [OperationalState].
Can I choose these section names freely?

Kind regards, ao

Revision history for this message
alphaomega (alpha-omega) said :
#5

PS:
Even when I choose fixedDecimals=0 for certain values, they are displayed like e.g. 'return_temp': 25.899999999999999.
Is there a way to round up these values to e.g. the 2nd digit after the comma/ point?

Revision history for this message
alphaomega (alpha-omega) said :
#6

PPS:
Do you have any resommendations regarding the flags or syntax for tcpdump, so the output contains only what is really needed to identify the correct data?
I have done "tcpdump port 2020 -x" as mentioned in the Wiki and could identify a new temperature (collector temp. at bytes 00 and 01, i.e. the first two) for my THZ 303 SOL with firmware version 2.16, via the Tecalor Windows service software by activating menu "Anlagenzustand => Istwerte => Starten" ("Operating Condition => Actual Values => Start"), but the output is formatted in a way that makes it hard to understand, i.e. the layout is not nice and the data seem to contain repeating "garbage" (headers, footers?) also between the data, incl. also data from the PC ("xp") to the heatpump ("nslu"), which I currently do not want to see:

22:39:45.916319 IP nslu.fritz.box.2020 > xp.fritz.box.1289: P 59:67(8) ack 17 win 2920
 0x0000: 4500 0030 1088 4000 4006 44e4 c0a8 b203
 0x0010: c0a8 b207 07e4 0509 2295 430b e118 69db
 0x0020: 5018 0b68 fab7 0000 03fd 00c4 010c 00fa <= 03fd 00c4 010c 00fa are bytes 00 to 07
22:39:45.926323 IP nslu.fritz.box.2020 > xp.fritz.box.1289: P 67:75(8) ack 17 win 2920
 0x0000: 4500 0030 1089 4000 4006 44e3 c0a8 b203
 0x0010: c0a8 b207 07e4 0509 2295 4313 e118 69db
 0x0020: 5018 0b68 fec9 0000 0103 01aa 0000 0000
22:39:45.936487 IP nslu.fritz.box.2020 > xp.fritz.box.1289: P 75:82(7) ack 17 win 2920
 0x0000: 4500 002f 108a 4000 4006 44e3 c0a8 b203
 0x0010: c0a8 b207 07e4 0509 2295 431b e118 69db
 0x0020: 5018 0b68 ab75 0000 00f0 0106 0004 54
22:39:45.946326 IP nslu.fritz.box.2020 > xp.fritz.box.1289: P 82:90(8) ack 17 win 2920
 0x0000: 4500 0030 108b 4000 4006 44e1 c0a8 b203
 0x0010: c0a8 b207 07e4 0509 2295 4322 e118 69db
 0x0020: 5018 0b68 b13a 0000 5400 cb2c 3100 0000 <= 2c 3100 0000 are bytes 26, 27 and 28 (speed_actual), 29 (unknown data) and 30 (belongs to 31, see below)
22:39:45.956503 IP nslu.fritz.box.2020 > xp.fritz.box.1289: P 90:97(7) ack 17 win 2920
 0x0000: 4500 002f 108c 4000 4006 44e1 c0a8 b203
 0x0010: c0a8 b207 07e4 0509 2295 432a e118 69db
 0x0020: 5018 0b68 3560 0000 cc00 0000 0000 00 <= CC is byte 31 (belongs to 30, see above, and is outside_temp_filtered)

The question is, how can I avoid all the lines between that all start with "4500" and "C0A8" and also the values like "5018 0b68 fab7 0000" that come before the real data?

Unfortunately, Launchpad does not allow formatting or attaching screenshots, but I hope the above is understandable.
Kind regards, ao

Revision history for this message
Robert Penz (robert-penz-name) said :
#7

@4: You can call the sections as you like. You just need to add them to the [Gobal] - queries entry. As the software will look through all sections which are named there.

@5: You'll see the internal representation of the values. If the value would be used in e.g. a print statment you could easily format it like this print "%.2f" % 25.899999999999999. But I believe that you've set the fixedDecimals to 1 and not 0 in that example.

@6: No I don't have any recommendations for tcpdump sniffing. I would really recommend to connect the windows pc for testing directly to the heat pump.

Revision history for this message
alphaomega (alpha-omega) said :
#8

@4+6: Thanks, that's fine now.

@5: When I check with "python protocol.py", I do not see a difference between...

  value03 = hot_gas_temp 8 fixedPoint 2 0 # Heissgastemp.

and...
  value03 = hot_gas_temp 8 fixedPoint 2 1 # Heissgastemp.

I.e. hot_gas_temp is always displayed with many digits:
  24.300000000000001

Can you please further explain a little bit about your formatting? In which file could I adjust that and what is the correct syntax? Above you wrote: ... format it like this print "%.2f" % 25.899999999999999

I am not sure what exactly to write in which file, what the "%.2f", the % sign after that and the number means, sorry.
Thanks and kinds regards, ao

Revision history for this message
Robert Penz (robert-penz-name) said :
#9

Read following article about floating numbers and there representation on a computer: http://docs.python.org/tutorial/floatingpoint.html

5. Thats not possible as the code returns for 0 an integer and for 1 and 2 an float. Take a look at the following:

python
>>> import protocol
>>> protocol.convert2Number("aa", fixedDecimals=1)
2492.9000000000001
>>> protocol.convert2Number("aa", fixedDecimals=0)
24929

Revision history for this message
alphaomega (alpha-omega) said :
#10

Thanks, Robert!