vpathuis / ultraheat

MIT License
5 stars 3 forks source link

Support for Landis+Gyr UltraHeat T550 #7

Closed blomqvist closed 1 year ago

blomqvist commented 1 year ago

Hi,

I've just looked at the code, and comparing the output of the UH50 against the UltraHeat T550 (which should be the same?) I noted the following.

The output differs on two things:

It seems dirty, but maybe the model number check can assume "Landis+Gyr UltraHeat T550" if two blank lines is returned?

And, if model=Landis+Gyr UltraHeat T550 is returned, response.py can convert MWh to GJ.

Also, I see no point in reading beyond the "!".

Does it make any sense? 😄

Output from my Landis+Gyr UltraHeat T550:


6.8(0326.062*MWh)6.26(07939.56*m3)9.21(00073600)
6.26*01(07843.48*m3)6.8*01(0323.272*MWh)
F(0)9.20(66935074)6.35(60*m)
6.6(0028.0*kW)6.6*01(0028.0*kW)6.33(000.840*m3ph)9.4(108.5*C&088.1*C)
6.31(0088324*h)6.32(0000001*h)9.22(R)9.6(000&00073600&0&000&00073600&0)
9.7(20000)6.32*01(0000001*h)6.36(01-01&00:00)6.33*01(000.840*m3ph)
6.8.1()6.8.2()6.8.3()6.8.4()6.8.5()
6.8.1*01()6.8.2*01()6.8.3*01()
6.8.4*01()6.8.5*01()
9.4*01(108.5*C&088.1*C)
6.36.1(2018-09-07)6.36.1*01(2018-09-07)
6.36.2(2013-06-14)6.36.2*01(2013-06-14)
6.36.3(2012-10-03)6.36.3*01(2012-10-03)
6.36.4(2017-11-09)6.36.4*01(2017-11-09)
6.36.5()6.36*02(01&00:00)9.36(2022-06-08&10:06:51)9.24(1.5*m3ph)
9.17(0)9.18()9.19()9.25()
9.1(0&1&0&0017&CECV&CECV&1&5.19&5.19&F&081008&040404&08&0&00&?:)
9.2(&&)9.29()9.31(0059615*h)
9.0.1(00000000)9.0.2(00000000)9.34.1(000.00000*m3)9.34.2(000.00000*m3)
8.26.1(00000000*m3)8.26.2(00000000*m3)
8.26.1*01(00000000*m3)8.26.2*01(00000000*m3)
6.26.1()6.26.4()6.26.5()
6.26.1*01()6.26.4*01()6.26.5*01()0.0(00073600)
!

Data was read using this script (similar to ultraheat_reader.py)

import serial

conn = serial.Serial('/dev/cu.usbserial-0001',
                     baudrate = 300,
                     bytesize = serial.SEVENBITS,
                     parity = serial.PARITY_EVEN,
                     stopbits = serial.STOPBITS_TWO,
                     timeout = 1,
                     xonxoff = 0,
                     rtscts = 0
                     )

conn.write(
    b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
    b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2F\x3F\x21\x0D\x0A"
)
# Read at 300 baud
print(conn.readline().decode("utf-8"))
print(conn.readline().decode("utf-8"))

# Read at 2400 baud
conn.baudrate = 2400

line = ''
try:
    while '!' not in line:
        line = conn.readline().decode('utf-8')
        print(line, end='')
finally:
    conn.close()

I will start to tinker on this issue right away.