Plugin Typen
Durch Plugins kann die Funktionalität von SmartHomeNG erweitert werden und SmartHomeNG kann mit zu steuernden Komponenten bzw. Systemen verbunden werden.
Es gibt bereits eine große Zahl von Plugins, die im Abschnitt Plugins dokumentiert sind. Die Dokumentation wird aus dem Metadaten des jeweiligen Plugins generiert und kann durch eine Datei im restructured-Text Format (user_doc.rst) ergänzt werden.
Classic Plugin
Das klassische Plugin aus smarthome.py wird zwar noch unterstützt, neue Plugins sollten jedoch aufgrund der geringeren
Funktionalität des des Classic Plugins nicht auf seiner Basis erstellt werden. Plugins, die nicht von der Klasse
SmartPlugin
abgeleitet sind, werden nicht mehr in das Plugin Repo von SmartHomeNG aufgenommen.
SmartPlugin
Ein Plugin implementiert im Code eine Klasse, welche von der class SmartPlugin
abgeleitet ist. SmartPlugin
stellt alle grundsätzlichen Funktionalitäten bereit, die benötigt werden, um ein Plugin zu implementieren.
Die Methoden von SmartPlugin
sind hier dokumentiert:
MqttPlugin
Plugins welche MQTT nutzen, sollten stattdessen von class MqttPlugin
abgeleitet werden. MqttPlugin
ist
eine Unterklasse von SmartPlugin
, die um Methoden zur MQTT-Nutzung erweitert ist.
Dabei handelt es sich um die Methoden
add_subscription(topic, payload_type, bool_values=None, item=None, callback=None)
start_subscriptions()
stop_subscription()
publish_topic(topic, payload, item=None, qos=None, retain=False, bool_values=None)
get_broker_info()
broker_uptime()
Die Methoden von MqttPlugin
sind hier dokumentiert:
SmartDevicePlugin
Wenn ein Plugin Geräte anbinden soll, ist für jedes neue Plugin der gesamte Rahmencode - Item-Handling, Zuordnung von Items zu Befehlen (commands) und Kommunikation mit Netzwerk- oder seriellen Treibern und Libraries - immer wieder neu zu erfinden.
Die class SmartDevicePlugin
bietet dafür als Plugintyp einen fertigen Rahmen,
der im Idealfall mit einer „intelligenten“ Beschreibung der möglichen Kommandos
auskommt. Ggf. müssen spezielle (binäre) Datentypen und -konversionen oder sogar
Protokollebenen geschrieben werden.
Die Methoden von SmartDevicePlugin
sind hier dokumentiert: