- Webinterface ist aktualisiert mit dritter Seite: alle (für Protokoll und Anlage) bekannten Adressen mit Definition und der Möglichkeit, jeweils einzeln manuell auszulesen. Das Ergebnis wird im WebIf angezeigt, aber nicht in die Items übernommen (nicht alle Adressen sind ja Items zugewiesen). Da das zum Testen gedacht ist, schreibt er gar nicht in die Items.
- Die Plugin-Funktion 'read_addr(addr)' stößt das Lesen der (definierten) Adresse manuell an und gibt das Ergebnis als Rückgabewert zurück, None bei Fehler. Das wird intern vom WebIf für die o.g. Funktion genutzt, kann aber auch manuell verwendet werden.
- Die Plugin-Funktion 'read_temp_addr(addr, len, unit)' stößt das Lesen beliebiger und v.a. nicht definierter Adressen an. addr ist die vierstellige Hex-Adresse, len ist die erwartete Länge der Antwort in Bytes (1-8) und unit ist das Unitkürzel für die Einheitenumwandlung. unit muss im unitset für das aktuelle Protokoll definiert sein, im Zweifelsfall erstmal 'IUNON' oder 'IUINT'.
Wenn die Adresse bekannt ist, wird wie gehabt verfahren, wenn die Adresse nicht bekannt ist, wird ein temporärer Eintrag im commandset erzeugt und versucht, die Adresse zu lesen. Das Ergebnis wird zurückgegeben.
Code:
#!/usr/bin/env python3
# viess_test.py
plug = sh.plugins.return_plugin('viessmann')
if plug is not None:
value = plug.read_temp_addr('0802', 2, 'IUINT')
print(f'Wert: {value}')
Aktuelle Version ist in github


(wobei ich nicht weiß, ob bei der Übergabe des dicts an das Template ggf. andere Regeln geben, dicts in JS oder so?)
Einen Kommentar schreiben: