Plugin-Daten | |
---|---|
Autor | Michael Schlenstedt |
Logo | |
Status | STABLE |
Version | 1.0.2 |
Min. LB Version | 2.2.2 |
Release Download | https://github.com/mschlenstedt/LoxBerry-Plugin-MultiIO/archive/refs/tags/LoxBerry-Plugin-MultiIO-1.0.2.zip |
Pre-Release Download | https://github.com/mschlenstedt/LoxBerry-Plugin-MultiIO/archive/refs/tags/LoxBerry-Plugin-MultiIO-1.1.0.zip |
Beschreibung | Das Plugin kann verschiedene Hardware-Module als Ein- und Ausgänge am LoxBerry konfigurieren sowie einige Sensoren einbinden. |
Sprachen | EN |
Diskussion | https://www.loxforum.com/forum/projektforen/loxberry/plugins/395534-plugin-multi-io-plugin-mehr-als-512-ein-ausg%C3%A4nge-sensoren-am-loxberry |
Direkter Download-Link: Siehe Tabelle oben
Letzter Entwicklungsstand im Repo: https://github.com/mschlenstedt/LoxBerry-Plugin-MultiIO
Das Plugin kann mit Hilfe der Software MQTT-IO (https://github.com/flyte/mqtt-io) verschiedene Hardware-Module am LoxBerry als Ein- und Ausgänge oder als Sensoren nutzen. Natürlich werden dabei die nativen GPIO-Ports des Raspberry unterstützt, aber auch IO-Expander Module wie das PCF8574 bzw. PCF8575 oder das MCP23017. Mit deren Hilfe können am Raspberry mehr als 512(!) Ein oder Ausgänge bereitgestellt werden. Des weiteren können verschiedene bekannte Sensoren für den Raspberry, z. B. ADS1x15 analog to digital converters, DHT11/DHT22/AM2302 oder der MCP3008 analog to digital converter integriert werden. Eine vollständige Liste der unterstützten Hardware findet sich auf der Projekt-Homepage: https://github.com/flyte/mqtt-io
Das Plugin setzt ein installiertes MQTT Gateway Plugin voraus (bis LoxBerry 2.2.x), im LoxBerry 3.0.x ist dieses bereits integriert und wird benutzt.
Über einen Watchdog wird die Funktion des Plugins permanent überwacht. Bei Problemen wird versucht das Plugin neu zu starten.
Für einige Hardware haben wir spezielle Informationen auf einer eigenen Unterseite zusammengefasst. Die Links findet ihr in den Unterkapiteln weiter unten.
Nutzt ihr GPIO Module und/oder Sensoren über den I2C-Bus und verwendet ihr parallel noch andere Plugins, die Hardware am I2C Bus nutzen, empfehle ich Euch dieses Plugin auf einem separaten Bus laufen zu lassen. Auch wenn ihr Module mit identischer Adresse mehrfach verwenden wollt, müsst ihr diese auf separaten Bussen betreiben. Wie man mehrere I2C Busse auf dem Raspberry aktiviert, könnt ihr hier nachlesen: Mehrere I2C Busse an einem Raspberry
Spannungen von 230V sind tödlich! Installationen dürfen ausschließlich von Elektrofachkräften durchgeführt werden!
Um Ausgänge zu schalten benötigt man ein Relais Board. Üblicherweise kommen Relaisboards mit mechanischen Relais zum Einsatz. Diese gibt es üblicherweise mit 2, 3, 4, 8 oder 16 Relais. Die Relais werden dabei mit sogenannten Optokopplern an den Raspberry oder sonstigen Mikrocontrollern angeschlossen. Die Boards sind sehr flexibel - üblicherweise können sie rein von sich aus sowohl Netzspannung bis 230V mit 10A schalten (Spezifikation beachten!) als auch Niederspannung bis 30V DC schalten. Allerdings verursachen sie teilweise erhebliche Störungen am Raspberry/Mikrocontroller beim Schalten von 230V. Wenn man induktive Lasten schaltet (z. B. eine Spule in einem Magnetventil) entstehen auch deutliche Störungen beim Schalten von 24V DC.
Beispiel eines Relais Boards, (c) berrybase.de
Beim Schalten hoher (induktiver) Lasten entstehen am Schaltkontakt des Relais sehr hohe Spannungen, die einen sogenannten Lichtbogen erzeugen. Diese Störungen schlagen bis auf die Spannungsversorgung und Mikrochips des Raspberry/Mikrocontrollers durch und führen hier zu erheblichen Störungen (bis hin zum Absturz des Raspberry). Schaltet man induktive Gleichstromlasten (Spule eines Magnetventils zum Beispiel) ab, bricht deren Magnetfeld zusammen. Die im Magnetfeld gespeicherte Energie kann nicht einfach verschwinden. Damit wird die Induktivität zur Energiequelle, welche sehr hohe Spannungen erzeugen kann (Prinzip der Zündspule). Ich empfehle daher dringend (aus eigener Erfahrung) diese Relais Boards nicht zum Schalten von 230V zu verwenden (es gibt Alternativen - siehe unten) oder zu entstören (nächster Abschnitt). Beim Schalten von Gleichstrom muss häufig nicht entstört werden (wenn keine induktiven Lasten geschaltet werden). Ansonsten empfehle ich eine Schottky-Diode (Freilaufdiode) zu verbauen (siehe weiter unten). Hintergrund dazu hier: https://www.mikrocontroller.net/articles/Relais_mit_Logik_ansteuern#Entst%C3%B6rung
Hier benötigt man eine Schottky-Diode (Freilaufdiode), die parallel zur induktiven Last verbaut wird - und zwar für die Betriebsspannung in Sperrrichtung. Auf dem folgenden Beispiel-Bild ist die Freilaufdiode mit "D1" bezeichnet (Hinweis: Auf der Diode ist ein Strich aufgedruckt, dieser entspricht dem "Strich" auf dem Symbol im Schaltplan):
Schottky-/Freilaufdiode, (c) mikrocontroller.net und Wikipedia
Freilaufdioden sind ein Cent-Artikel, man muss nur darauf achten, dass sie die Betriebsspannung sicher sperren können. Bei 24V DC zum Beispiel eine Diode für 40V. Ich klemme sie immer direkt am Relaisausgang parallel zur eigentlich geschalteten Last.
Möchte man also ein solches Standard Relais Board zum Schalten seiner 230V Verbraucher verwenden, kann (muss) man unbedingt ein RC-Glied (eine Kombination aus Widerstand und Kondensator) parallel zum Verbraucher schalten. Dieses RC-Glied nimmt die Störungen und Überspannungen während des Schaltvorgangs auf. So ein RC-Glied findet man auch unter dem Namen "Snubber". Wenn man Glück hat und die zu schaltenden Lasten sind nicht all zu groß, kann der Snubber die Störungen komplett beseitigen.
Snubber/RC-Glied, (c) Shelly
Wer auf Nummer Sicher gehen möchte, der nutzt zum Schalten von 230V ausschließlich Solid State Relais (SSR). SSRs funktionieren genauso wie mechanische Relais, bestehen aber ausschließlich aus elektronischen Bauteilen und haben keinerlei Mechanik verbaut. Daher können beim Schalten auch keine Störungen durch Lichtbögen entstehen. Das Gute daran: Sie sind nicht sehr viel teurer als mechanische Relais. Üblicherweise gibt es die SSR genauso verbaut auf Boards wie die "normalen" Relaisboards auch. Aber Achtung! Diese Boards können nur 2A schalten und sie können ausschließlich Wechselspannung schalten! Schaut Euch die Spezifikation unbedingt an.
Beispiel eines Solid State Relais Boards, (c) az-delivery.de
Wer höhere Lasten als 2A schalten will, kann auf die folgende Bauart zurückgreifen. Diese SSR gibt es aber nur als Einzelvariante - sie kosten ca. 5 EUR/Stück. Ein bekannter von mir schaltet damit in seiner Brauanlage eine Kochplatte mit 3500W ohne Probleme! Diese SSR gibt es üblicherweise in Varianten mit 25A oder 40A.
Beispiel eines Solid State Relais mit 40A, (c) botland.de
Das Plugin bietet zwei Hauptfunktionen: Inputs / Outputs und Sensoren.
Wie der Name schon sagt können über "Inputs / Outputs" beliebig viele Ein- und Ausgänge konfiguriert werden. Diese müssen natürlich über entsprechende Hardwaremodule auch physikalisch vorhanden sein. Der Raspberry bringt schon einige Ein- und Ausgänge mit (GPIOs), weitere können über sogenannte GPIO Expander hinzugefügt werden.
Im Tab "Sensoren" können verschiedene gängige Sensoren wie z. B. Analog-Digital-Wandler, Ultraschallsensoren oder auch Luftgütesensoren an den Raspberry angebunden werden.
Zunächst muss ein entsprechendes GPIO Modul eingerichtet werden. Es definiert die Hardware, über die die Ein- und Ausgänge zur Verfügung gestellt werden. Ein Beispiel wäre die Raspberry GPIO Leiste und deren PINs. Das Plugin unterstützt aber noch zahlreiche weitere Möglichkeiten zusätzliche Ein- und Ausgänge zur Verfügung zu stellen. Dazu werden sogenannte GPIO Expander Module an den I2C Bus des Raspberry angeschlossen. Diese bieten meist 8 oder 16 weitere GPIOs. Durch Kombination mehrerer dieser Module und Verwendung von mehreren I2C-Bussen am Raspberry können quasi unendlich viele Ein- und Ausgänge am Raspberry angeschlossen werden.
Anschließend können die am GPIO Modul zur Verfügung stehenden einzelnen Ein-/Ausgänge (PINs) konfiguriert werden.
Ein neues GPIO Modul wird über den Add
Button hinzugefügt. Es öffnet sich die Konfigurationsseite für das Modul, wo meist weitere Einstellungen getroffen werden müssen. Folgende GPIO-Module stehen im Plugin zur Verfügung - die Konfiguration findet ihr auf der jeweiligen Unterseite:
Nachdem ein GPIO Modul eingerichtet wurde, können für dieses Modul Ein- und Ausgänge konfiguriert werden. Jeder GPIO kann dabei entweder als Eingang oder als Ausgang eingerichtet werden. Die Einrichtung unterscheidet sich je nach GPIO Modul - weitere Details findet ihr auf den Unterseiten der jeweiligen GPIO Module:
Bei den Sensoren folgt dass Plugin der Logik wie bei den Ein-/Ausgängen: Zunächst wird ein Sensor-Modul angelegt, welches die angeschlossene Hardware beschreibt und konfiguriert. Anschließend werden pro Sensormodul entsprechende Eingänge angelegt, die die Sensordaten beschreiben. Je nach Modul bzw. Sensor können das mehrere Eingänge (z. B. Luftfeuchtigkeit und Temperatur) sein oder auch nur ein Eingang.
Ein neues Sensor Modul wird über den Add
Button hinzugefügt. Es öffnet sich die Konfigurationsseite für das Modul, wo meist weitere Einstellungen getroffen werden müssen. Folgende Sensor-Module stehen im Plugin zur Verfügung - die Konfiguration findet ihr auf der jeweiligen Unterseite:
Nachdem ein Sensor-Modul eingerichtet wurde, können für dieses Modul Eingänge konfiguriert werden. Je nach Sensor kann es mehrere Eingänge geben (z. B. Temperatur und Luftfeuchtigkeit). Die Einrichtung unterscheidet sich je nach Sensor Modul - weitere Details findet ihr auf den Unterseiten der jeweiligen Sensor Module:
Das Plugin sendet alle ausgelesenen Messwerte und die Stati der Eingänge per MQTT an den MQTT Broker bzw. das MQTT Gateway. Im Gateway muss das Topic des Plugins abonniert werden (standardmäßig lautet das Topic "multiio/#") - das wird aber automatisch vom Plugin gemacht. Bitte lest in der Dokumentation des MQTT Widget nach, wie genau die Werte in der Loxone Config verwendet werden: MQTT - Schritt für Schritt: MQTT -> Loxone
Topic für Eingänge: multiio/input/<name>
Topic für Sensoren: multiio/sensor/<name>
Ich behandele das Thema "Anlegen eines Virtuellen Eingangs" hier nur in Kürze:
Befehle (Werte setzen) können an die Ausgänge über das Topic multiio/output/<name>/set
gesendet werden. Dazu muss für das MQTT Gateway ein Virtueller Ausgang angelegt werden. Bitte lest in der Dokumentation des MQTT Gateway nach, wie genau die Werte in der Loxone Config verwendet werden: MQTT - Schritt für Schritt: Loxone -> MQTT
Um den Ausgang zu schalten, muss der im Ausgang konfigurierte "Payload for ON" bzw. "Payload for Off" (Case sensitive!) an das Topic gesendet werden.
Standardmässig sind die Payloads ON
und OFF
, damit ergibt sich für den Virtuellen Ausgangsbefehl z. B. folgende Syntax:
publish multiio/output/<name>/set
ON
publish multiio/output/<name>/set
OFF
Ich behandele das Thema "Anlegen eines Virtuellen Ausgangs" hier nur in Kürze:
publish multiio/output/<name>/set <PAYLOAD ON/OFF>