Seite 1 von 1

SmartMeter und UltraHeat T550

Verfasst: 19. Mai 2024 19:47
von klaso
Hallo zusammen,

ich bin vor kurzem auf OpenHab 4.1.2 umgestiegen und bin begeistert. Komplette Heizung, alle Schalter, Fühler etc. haben problemlos auf Anhieb funktioniert.
Allerdings komme ich mit dem Auslesen des Verbracuwertes meine Wärmemengenzählers nicht weiter.
Ich habe das smartMeter binding wie beschrieben verwendet.

Code: Alles auswählen

UID: smartmeter:meter:176a7de37f
label: Smart Meter
thingTypeUID: smartmeter:meter
configuration:
  mode: ABC
  baudrate: "300"
  port: /dev/ttyUSB0
  serialPort: /dev/ttyUSB0
  conformity: NONE
  refresh: 10
  initMessage: 00000000000000000000000000000000000000002F3F210D0A
  baudrateChangeDelay: 250
Ich bekomme diesen nicht zum laufen. Habe bereits auf verschiedenen Seiten nachgelsen, z. B.
https://github.com/aiolos/ultraheat
https://wiki.volkszaehler.org/hardware/ ... _uh50_t550
http://www.sedelmaier.at/content/siemen ... it-openhab
https://github.com/openhab/openhab1-addons/pull/4044
https://forum.iobroker.net/topic/4685/a ... lang=en-US


das Interessante, mit diesem Script

Code: Alles auswählen

#!/usr/bin/python
from __future__ import print_function
import serial, time

ser = serial.Serial("/dev/ttyUSB0", baudrate=300, bytesize=7, parity="E", stopbits=1, timeout=2, xonxoff=0, rtscts=0)

#send init message
ser.write(str.encode("\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\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2F\x3F\x21\x0D\x0A"))

#send request message
#ser.write("/?!\x0D\x0A")
ser.flush();
time.sleep(.5)

#send read identification message
print(ser.readline())

#change baudrate
ser.baudrate=2400

try:
    #read data message
    while True:
       response = ser.readline().decode('utf-8')
       print(response, end="")
       if "!" in response:
          break

finally:
    ser.close()

bekomme ich den Zähler zum leben erweckt und die Datenübertragung startet und erhalte umgehend folgenden output:

Code: Alles auswählen

b'/LUGCUH50\r\n'
^B6.8(0024.957*MWh)6.26(00527.73*m3)9.21(70417927)
6.26*01(00433.16*m3)6.8*01(0020.096*MWh)
F(0)9.20(70417927)6.35(60*m)
6.6(0012.0*kW)6.6*01(0012.0*kW)6.33(000.228*m3ph)9.4(094.3*C&067.9*C)
6.31(0027822*h)6.32(0000000*h)9.22(R)9.6(000&70417927&0&000&70417927&0)
9.7(20000)6.32*01(0000000*h)6.36(01-01&00:00)6.33*01(000.228*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(091.3*C&067.9*C)
6.36.1(2021-04-16)6.36.1*01(2021-04-16)
6.36.2(2021-04-16)6.36.2*01(2021-04-16)
6.36.3(2024-01-10)6.36.3*01(2023-12-08)
6.36.4(2023-10-30)6.36.4*01(2023-10-30)
6.36.5()6.36*02(01&00:00)9.36(2024-05-17&21:14:40)9.24(0.6*m3ph)
9.17(0)9.18()9.19()9.25()
9.1(0&1&0&1700&CECV&CECV&1&5.24&5.24&F&081008&041>04&08&0&00&:5&00&20)
9.2(&&)9.29()9.31(0002179*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(70417927)
!
Unter Openhab gelingt mir dies nicht, habe Bautrate oder auch InitMessage geändert, alles ohne Erfolg.

Habe mal ein neues Thing erstellt und es mit dem Stromzähler versucht => klappt ohne Probleme.
Obwohl es mit dem Script funktioniert, habe ich dennoch den Lesekopf und das USB-Kabel ausgetauscht, ohne Erfolg.

im debug log sehe ich folgenden Eintrag:

Code: Alles auswählen

2024-05-19 19:59:13.661 [DEBUG] [martmeter.internal.SmartMeterHandler] - Initializing Smartmeter handler.
2024-05-19 19:59:13.669 [DEBUG] [martmeter.internal.SmartMeterHandler] - config port = /dev/ttyUSB0
2024-05-19 19:59:14.250 [DEBUG] [ding.smartmeter.internal.MeterDevice] - Opening connection to smartmeter:meter:176a7de37f
2024-05-19 19:59:29.536 [WARN ] [.iec62056.Iec62056_21SerialConnector] - 1. reading attempt failed: null. Retrying /dev/ttyUSB0...
2024-05-19 19:59:29.538 [WARN ] [.iec62056.Iec62056_21SerialConnector] - Delaying retry by PT10S
2024-05-19 19:59:54.349 [DEBUG] [ding.smartmeter.internal.MeterDevice] - Timeout occured for smartmeter:meter:176a7de37f; The source did not signal an event for 40000 milliseconds and has been terminated.
2024-05-19 19:59:56.421 [DEBUG] [ding.smartmeter.internal.MeterDevice] - Opening connection to smartmeter:meter:176a7de37f
2024-05-19 20:00:11.617 [WARN ] [.iec62056.Iec62056_21SerialConnector] - 1. reading attempt failed: null. Retrying /dev/ttyUSB0...
2024-05-19 20:00:11.618 [WARN ] [.iec62056.Iec62056_21SerialConnector] - Delaying retry by PT10S
2024-05-19 20:00:36.446 [DEBUG] [ding.smartmeter.internal.MeterDevice] - Timeout occured for smartmeter:meter:176a7de37f; The source did not signal an event for 40000 milliseconds and has been terminated.
2024-05-19 20:00:38.506 [DEBUG] [ding.smartmeter.internal.MeterDevice] - Opening connection to smartmeter:meter:176a7de37f
Wäre um jeden Tip dankbar, wie ich den Zähler unter OpenHab mit dem SmartMeter binding ausgelesen bekomme.
VG
klaso

Re: SmartMeter und UltraHeat T550

Verfasst: 19. Mai 2024 22:28
von udo1toni
Was ist das denn für ein Zähler?

Auffällig ist ja schon mal, dass Dein funktionierendes Script unterwegs die Baudrate auf 2400 setzt.
Mein erster Tipp wäre also,die Baudrate auf AUTO zu stellen.

Re: SmartMeter und UltraHeat T550

Verfasst: 20. Mai 2024 00:30
von klaso
es handelt sich um einen Landis + Gyr Ultraheat T550 https://www.landisgyr.de/product/ultraheat-t550-uh50/
ich habe es bereits mit "AUTO" als Baudrate versucht, gleiches Ergebnis.
das script sendet erstmals mit 300, und die Antwort erfolgt mit 2400......sofern ich es richtig versteh ;-)

Re: SmartMeter und UltraHeat T550

Verfasst: 20. Mai 2024 12:39
von udo1toni
Ich habe noch dies hier gefunden: https://forum.iobroker.net/topic/8387/s ... 56-21-2002

Und auf github ist ja explizit die Unterstützung für den B-Modus (Baudrate Change) beschrieben. Wenn ich nach dem Link hier gehe, müsste die Umschaltzeit baudrateChangeDelay allerdings 500 (Millisekunden) betragen.

Eventuell mal im englischen Forum nachfragen, ob dort jemand den Zähler im Einsatz hat. Nach "Aktenlage" sollte das Teil ja problemlos funktionieren.