Moin,
nachdem das aktuelle Release veröffentlicht ist, scheint mir der richtige Zeitpunkt, mal "public" zu gehen.
Ich habe in den letzten Wochen (Monaten...) mit Unterstützung von OnkelAndy ein Plugin geschrieben, dass die Anbindung von Geräten vereinfachen soll.
Mir ist in der Vergangenheit aufgefallen, dass wir mit jedem neuen Plugin den gesamten Handlingcode - Initialisierung, Item-Parsing, Datentransport, Typenabfrage, Kommunikation, Ablaufsteuerung - immer wieder neu schreiben mussten (oder zumindest geschrieben haben). Da bei den meisten Geräten entweder eine Frage-Antwort-Syntax oder eine "Listen and command"-Methodik verwendet wird, kann man das Problem der Anbindung eines neuen Gerätes auf die Spezifikation von Kommandos, Antworten und Kommunikation beschränken.
An dieser Stelle versuche ich, mit dem Plugin anzusetzen.Der gesamte "sonstige" Code ist fest und wird auch nicht wiederverwendet oder kopiert - das Plugin kann eine beliebige Zahl von (unterschiedlichen) Geräten bedienen.
Für jedes Gerät gibt es eine Spezifikation/Konfiguration, die mögliche Kommandos, deren Syntax, Werte und Antworten spezifiziert, sowie ggf. noch Codeanteile, wenn (insbesondere) die Verarbeitung der Antworten zusätzlichen Aufwand erfordert.
Ich plane, in den nächsten Tagen noch einen ausführlicheren Blog-Artikel dazu zu schreiben, wie man ein neues Device zum Plugin hinzufügen kann; bis dahin empfehle ich Interessierten die mitgelieferte Dokumentation in user_doc.rst, in der __init__.py und im Unterverzeichnis doc.
Es gibt ein Beispiel-Device, in dem auch die Syntax der Kommandokonfiguration ausführlich dokumentiert ist, weiterhin haben wir bisher die folgenden Geräte(klassen) implementiert:
die Implementation eines neues Gerätes ist - es benötigt für den normalen Betrieb hier keinen zusätzlichen Code. (Der vorhandene zusätzliche Code dient nur dem Standalone-Modul zur Geräteerkennung).
Ein Webinterface ist rudimentär eingerichtet, das Plugin unterstützt den Standalone-Modus (wenn das jeweilige Gerät dies unterstützt( und es kann aus den Kommandodefinitionen eine struct-Vorlage für einfachen Import der passenden Items erstellen.
Ich würde mich freuen, wenn Interesse daran besteht, dieses Plugin weiterzunutzen, mit neuen Geräten zu erweitern und das Plugin selbst zu verbessern.
Bei Fragen sind OnkelAndy und ich sicher (fast) jederzeit bereit zu unterstützen
Das Plugin "multidevice" ist in develop eingepflegt.
nachdem das aktuelle Release veröffentlicht ist, scheint mir der richtige Zeitpunkt, mal "public" zu gehen.
Ich habe in den letzten Wochen (Monaten...) mit Unterstützung von OnkelAndy ein Plugin geschrieben, dass die Anbindung von Geräten vereinfachen soll.
Mir ist in der Vergangenheit aufgefallen, dass wir mit jedem neuen Plugin den gesamten Handlingcode - Initialisierung, Item-Parsing, Datentransport, Typenabfrage, Kommunikation, Ablaufsteuerung - immer wieder neu schreiben mussten (oder zumindest geschrieben haben). Da bei den meisten Geräten entweder eine Frage-Antwort-Syntax oder eine "Listen and command"-Methodik verwendet wird, kann man das Problem der Anbindung eines neuen Gerätes auf die Spezifikation von Kommandos, Antworten und Kommunikation beschränken.
An dieser Stelle versuche ich, mit dem Plugin anzusetzen.Der gesamte "sonstige" Code ist fest und wird auch nicht wiederverwendet oder kopiert - das Plugin kann eine beliebige Zahl von (unterschiedlichen) Geräten bedienen.
Für jedes Gerät gibt es eine Spezifikation/Konfiguration, die mögliche Kommandos, deren Syntax, Werte und Antworten spezifiziert, sowie ggf. noch Codeanteile, wenn (insbesondere) die Verarbeitung der Antworten zusätzlichen Aufwand erfordert.
Ich plane, in den nächsten Tagen noch einen ausführlicheren Blog-Artikel dazu zu schreiben, wie man ein neues Device zum Plugin hinzufügen kann; bis dahin empfehle ich Interessierten die mitgelieferte Dokumentation in user_doc.rst, in der __init__.py und im Unterverzeichnis doc.
Es gibt ein Beispiel-Device, in dem auch die Syntax der Kommandokonfiguration ausführlich dokumentiert ist, weiterhin haben wir bisher die folgenden Geräte(klassen) implementiert:
- Denon AVR-Geräte (Netzwerk/seriell)
- Pioneer AVR-Geräte (Netzwerk/seriell)
- Kodi Medienserver (Netzwerk)
- Squeezebox-Medienserver (Netzwerk)
- Logitechmediaserver (alternative Implementation zu Squeezebox) (Netzwerk)
- Yamaha MusicCast AV-Geräte (Netzwerk)
- Viessmann-Heizungen (KW/P300-Protokoll, seriell)

Ein Webinterface ist rudimentär eingerichtet, das Plugin unterstützt den Standalone-Modus (wenn das jeweilige Gerät dies unterstützt( und es kann aus den Kommandodefinitionen eine struct-Vorlage für einfachen Import der passenden Items erstellen.
Ich würde mich freuen, wenn Interesse daran besteht, dieses Plugin weiterzunutzen, mit neuen Geräten zu erweitern und das Plugin selbst zu verbessern.
Bei Fragen sind OnkelAndy und ich sicher (fast) jederzeit bereit zu unterstützen

Das Plugin "multidevice" ist in develop eingepflegt.
Kommentar