Problem selbst gelöst, war ein dummer Anfängerfehler (Anführungszeichen falsch gesetzt und aktivieren des Wärmemengenzählers vergessen (muss jede Stunde mindestens einmal abgefragt werden und anfangs einmal durch einen Tastendruck aktiviert werden)
Falls es mal jemand brauchen würde, hier der funktionierende Code:
Python
#!/usr/bin/python
# -*- coding: utf-8 -*-
import serial, time
import meterbus
import requests
address = 0
port = '/dev/lesekopf-1'
# start communication with 8N1, DTR enabled
ser = serial.Serial(port, 2400, 8, 'N', 1, 0.5)
ser.dsrdtr=True
# send wake up sequence
ser.write(b"\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55")
time.sleep(0.130)
ser.read()
response = ser.readline()
# switch to 8E1
ser.parity = serial.PARITY_EVEN
# SND_NKE to reset the communication
meterbus.send_ping_frame(ser, address)
frame = meterbus.load(meterbus.recv_frame(ser, 1))
assert isinstance(frame, meterbus.TelegramACK)
# request data from meter
meterbus.send_request_frame(ser, address)
frame = meterbus.load(meterbus.recv_frame(ser, meterbus.FRAME_DATA_LENGTH))
assert isinstance(frame, meterbus.TelegramLong)
# print data, todo: save it to file
print(frame.to_JSON())
res = requests.get("http://192.168.2.20:8087/set/0_userdata.0.WMZ.lesekopf0-JSON?value=" + frame.to_JSON())
print(res)
Alles anzeigen