4.4.7.1 Wiregate Plugin-Container

Beschreibung: Container mit Laufzeitumgebung für Wiregate Plugins

Kategorie: Docker

Link zu diesem Beitrag: Alles auswählen

[url=https://forum.timberwolf.io/app.php/kb/viewarticle?a=102&sid=50a1fc89e850f7b7863cac388060cab7]Knowledge Base - 4.4.7.1 Wiregate Plugin-Container[/url]

Der WireGate Plugin Containers soll es ermöglichen Plugins für den Wiregate Server auch auf dem Timberwolf Server auszuführen. Dies soll den Umstieg vom Wiregate Server auf den Timberwolf Server erleichtern.

Dieser Container wird einfach als APP mit einem Klick installiert. Das Passwort für den Zugang mit SSH / SFTP wird dabei automatisch erzeugt und wird auf der APP Seite per Mouseover eingeblendet.

Wichtige Hinweise:
  • Es ist NICHT möglich, aus diesem Container direkt auf 1-Wire Sensoren zugreifen, da die 1-Wire Sensoren vom Timberwolf Server (separat) verwaltet werden. Der WireGate Plugin Container besteht aus dem eibd für die KNX-Kommunikation, einem PERL Ausführungsmodul und alles was der Benutzer selbst noch in den Container dazu installiert.
  • Falls Daten von 1-Wire Sensoren benötigt werden, dann müssen deren Werte auf den KNX-Bus gesendet werden und das betreffende Plugin muss dann auf diese Telegramme reagieren. Alternativ kann auch vom KNX-Bus gelesen werden, hierzu ist beim betreffenden Objekt am Timberwolf Server das "Lesen" Flag mit der ETS zu setzen, programmieren nicht vergessen!.
  • Die Anbindung an den KNX Bus aus dem WireGate Plugin Container erfolgt über den eibd. Dieser verbindet sich mit KNXnet/IP Tunneling über den Timberwolf Server. Dies ist nur dann möglich, wenn der Timberwolf Server noch einen freien Tunnel zur Verfügung stellen kann. Der eibd im Container verbindet sich dann mit einem der verfügbaren Tunnel (der Busmonitor der ETS und die Cometvisu belegen ggf. ebenfalls einen Tunnel). Für jeden dieser Tunnel muss in der ETS eine physikalische Adresse vergeben worden sein (das geschieht normalerweise bereits bei der ersten Programmierung der physikalischen Adresse. Je nach Ausbaustand verfügen die Timberwolf Server (alle Modelle außer 2100 / 2400) vom Werk aus über die Möglichkeit für eine Unterstützung von 25 Tunnel gleichzeitige Tunnel. Die ETS verwendet pro Tunnel jeweils eine physikalische Adresse.
  • Wird in den Plugins "$msg{'value'}" verwendet, so muss auch die Datei "eibga.conf" wie am Wiregate gepflegt sein!

Hochladen von Plugins
  • Verbinden mit timberwolfXX.local auf Port 2222 zum Beispiel mit WinSCP mit Benutzer "wiregate" (Das vergebene Passwort bei der Installation als APP wird als MouseOver auf der APP-Seite angezeigt).
  • Plugins in das Verzeichnis /etc/wiregate/plugin/generic kopieren.
  • Konfigurationsdateien, falls vorhanden, nach /etc/wiregate/plugin/generic/conf.d kopieren.
Die Informationen zu den Gruppenadressen werden nach /etc/wiregate/eibga.conf kopiert. Diese ist notwendig zum Kodieren bzw. Dekodieren der KNX Bustelegramme, wenn das Plugin nicht selbst die Datenpunkttypen mitliefert und die gelesenen Werte dekodiert.


Zustand der Plugins abfragen

Zunächst mit portainer eine Konsole auf dem plugin container öffnen (oder eine putty session in WinSCP):
./app/plugin_status.pl zeigt in einer Zeile pro plugin einige Informationen zu jedem plugin
./app/show_plugindb.pl zeigt die pro plugins abgespeicherten Variablen und Werte.

Bild

Das Kommando:

Code: Alles auswählen

watch -n 1 ./app/plugin_status.pl
ruft plugin_status jede Sekunde auf und kann mit CTRL-C beendet werden.


Logging
Das Loggen erfolgt momentan auf STDOUT.
Um das Log anzusehen, auf der Portainer-Seite (=> Docker Management Seite) beim plugin container unter Quick actions das Log Symbol (2. von links) anklicken.

Timestamps in den Logs werden nicht mehr automatisch vom Perlscript gesetzt, da sie auch vom Docker protokolliert werden.
Um den Zeitstempel im Log zu erhalten, das "display timestamps" aktivieren (in portainer -> Containers -> Quick Actions: logs).

Bild

Einstellungen zu Logging:
In der Datei /etc/wiregate/plugins.conf kann durch den Eintrag trace = 1 gesteuert werden, ob das Loggen durch die Funktion "plugin_log" eingeschaltet oder ausgeschaltet ist (per default ist es momentan eingeschaltet).
Gegebenenfalls muss auch knxdebug = 1 sein, wenn "plugin_log(...) if ($knxdebug)" verwendet wurde.

Wenn in /etc/wiregate/plugins.conf "log_with_timestamp = 1" gesetzt ist, fügt das Perlscript eine Zeitangabe (in der eingestellten Zeitzone) wie bisher hinzu.

Um zusätzlich zu den Plugin Logs ("trace = 1") das Verbinden bzw. das Verlieren der Verbindung zum eibd zu loggen in /etc/wiregate/plugins.conf "trace = 9" setzen.


Installation von Perl/Linux Paketen

Dazu über Portainer eine Shell zum perl plugin Container öffnen und folgendes eingeben:
apt-get update
apt-get install "Paketname"

Code: Alles auswählen

Beispiel:
apt-get install "libdate-calc-perl"
Wichtig:
Damit diese Änderungen wiederhergestellt werden, wenn ein neuer Container erzeugt wird, müssen diese Pakte im Startskript unter /etc/wiregate/init.sh eingetragen werden, das einmalig bei Erzeugung des Containers aufgerufen wird!
Es erzeugt ein logfile in /app/init.log. Sobald dieses logfile existiert, wird das Skript nicht mehr aufgerufen.


Beispiel für ein init.sh Skript, welches zusätzlich das Perl Modul libdate-calc-perl installiert:

Code: Alles auswählen

#!/bin/bash

# !! do not delete /tmp/eib /tmp/plugins.db

apt-get update && apt-get install -y --force-yes \
  libdate-calc-perl \
  && apt-get clean && rm -rf /var/lib/apt/lists/*

Weitere Anmerkungen
  • Das Feature "switch" kann verwendet werden ("use feature switch;")
  • Wie im WireGate Server werden "uninitialized" und "numerical warnings" ignoriert.
  • Plugins, die mit # oder ~ enden, werden wie auch beim WireGate Server nicht ausgeführt.
  • Plugins, die gelöscht werden, werden bei der nächsten Suche nach neuen Plugins automatisch aus der plugindb entfernt.

Eine abschließende Empfehlung: Wenn möglich, bitte die Plugins in die Timberwolf Logik integrieren (oder später in separate Docker-Container). Die Plugin-Technologie ist eine gute, aber veraltete Technologie, die weder performant ist, noch auf Dauer supportet werden kann.


Installation als APP / Einstellungen dann im Portainer
  • Der Container steht als APP für ALLE Modelle des Timberwolf Servers zur Verfügung (Hutschiene und Desktop-Versionen)
  • Plugins können über sftp hochgeladen werden, deshalb bitte den Port 22 auf den Host als 2222 freigeben.
  • Der Benutzer für den Upload lautet “wiregate”. Das Passwort wurde bei der Installation als APP vergeben. Es wird per Mouseover auf der Seite APP angezeigt, wenn die Maus über die installierte APP geführt wird. (Alternativ kann dieses über die Environment variable (ENV) SSHPASSWORD im Portainer für diesen Container geändert werden).
Bild

Edited 2019-11-08 by SW