Hallo,
ich beschäftige mich gerade mit einer Neuentwicklung des Viessmann Plugins, mit Lese- und Schreibfunktion und direktem Zugriff über die serielle Schnittstelle.
Viele Funktionen sind bereits implementiert und getestet. Aktuell stehe die Timer (Schaltzeiten) an und dabei bräuchte ich Hilfe bei der Umsetzung in Python.
Konkret:
Die Abfrage der Schaltzeiten liefert ein Bytearray in dem die möglichen 4 An- und 4 Abschaltzeiten enthalten sind. diese möchte ich in ein dict übertragen.
Das Dict soll so aussehen: {1{'AN':'Zeit1'; 'AUS':'Zeit2'};2{'AN':'Zeit3'; 'AUS':'Zeit4'};3{'AN':'Zeit5'; 'AUS':'Zeit6'};4{'AN':'Zeit7'; 'AUS':'Zeit8'}}
Mein PythonCode zur Ermittelung der Zeit sieht so aus:
Wie bekomme ich die Zeiten nur am besten in das Dict, wie ich es oben skizziert habe?
Danke für Eure Hilfe
ich beschäftige mich gerade mit einer Neuentwicklung des Viessmann Plugins, mit Lese- und Schreibfunktion und direktem Zugriff über die serielle Schnittstelle.
Viele Funktionen sind bereits implementiert und getestet. Aktuell stehe die Timer (Schaltzeiten) an und dabei bräuchte ich Hilfe bei der Umsetzung in Python.
Konkret:
Die Abfrage der Schaltzeiten liefert ein Bytearray in dem die möglichen 4 An- und 4 Abschaltzeiten enthalten sind. diese möchte ich in ein dict übertragen.
Das Dict soll so aussehen: {1{'AN':'Zeit1'; 'AUS':'Zeit2'};2{'AN':'Zeit3'; 'AUS':'Zeit4'};3{'AN':'Zeit5'; 'AUS':'Zeit6'};4{'AN':'Zeit7'; 'AUS':'Zeit8'}}
Mein PythonCode zur Ermittelung der Zeit sieht so aus:
Code:
def decode_timer(self, rawdatabytes, valuebytecount, commandsignage):[INDENT]timer = {}
while (len(rawdatabytes) > 0):[/INDENT][INDENT=2]# Ersten 2Byte zwischenspeichern
leftbytes = rawdatabytes[:2]
# Wert der Bytes ermitteln
value = int(leftbytes, 16)
# Ermitteln der Zeit
if value != 255:[/INDENT][INDENT=3]hour = int(value>>3)
minute = int((value-(hour<<3))*10)[/INDENT][INDENT=2]else:[/INDENT][INDENT=3]hour = 0
minute = 0[/INDENT][INDENT=2]zeit = time(hour, minute)
# Bytestring um das erste Byte verkürzen
rawdatabytes = rawdatabytes[2:][/INDENT][INDENT]
return timer[/INDENT]
Wie bekomme ich die Zeiten nur am besten in das Dict, wie ich es oben skizziert habe?
Danke für Eure Hilfe


Alles, was ich ändere und für meine Heizung ergänze, bekommst du in den nächsten Tagen als PR auf dein Repo; ob du das dann annimmst oder nicht, kannst du ja immer noch selbst entscheiden 

Kommentar