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
Kommentar