Dokumentation – RevPiPyLoad

Diese Komponente wird auf dem Revolution Pi Core installiert.

Durch die Installation durch dpkg oder apt-get wird der Daemon automatisch in das init / systemd System von Linux eingebunden und startet mit dem Systemstart automatisch mit.

In der Standardkonfiguration wird versucht ein Python3 Programm mit dem Namen „program.py“ im Verzeichnis /var/lib/revpipyload zu starten.
Der XML-RPC-Server ist deaktiviert (HINWEIS AM ENDE DER SEITE BEACHTEN!!!).

Daemon neu starten / Stoppen / Einstellungen laden

Wenn Änderungen (wie unten beschrieben) vorgenommen werden, müssen diese vom RevPiPyLoad übernommen werden. Dies kann ganz einfach über die Shell gemacht werden:

# Daemon starten
pi@RevPi ~ $ sudo service revpipyload start

# Daemon stoppen
pi@RevPi ~ $ sudo service revpipyload stop

# Einstellungen neu laden
pi@RevPi ~ $ sudo service revpipyload reload

# Daemon neu starten
pi@RevPi ~ $ sudo service revpipyload restart
 Einstellungen ändern

Alle Einstellungen werden in der Datei /etc/revpipyload/revpipyload.conf vorgenommen. Zum bearbeiten kann man diese einfach in einem Editor öffnen, z.B.:

pi@RevPi ~ $ sudo nano /etc/revpipyload/revpipyload.conf

Parameter:

  • autoreload=1
    Startet das Python Programm automatisch neu, wenn es beended wird, ob durch einen Absturz oder weil es durchgelaufen ist.
    HINWEIS: Python Programme sollten durchgehend laufen und nicht eine Aufgabe erledigen, sich beenden und dann durch RevPiPyLoad neu gestartet werden!
  • autostart=1
    Startet das Python Programm automatisch, wenn das RevPi-Core System startet
  • plcuid=1000
    Benutzer ID für Berechtigung des Python Programms. Der Benutzer pi hat die UID 1000 und normalerweise genug Berechtigungen um das Programm auszuführen. Sollten root Berechtigungen erforderlich sein, kann hier der Wert 0 angegeben werden.
  • plcgid=1000
    Gruppen ID für Berechtigung des Python Programms. Der Benutzer pi hat die GID 1000. Sollten root Berechtigungen erforderlich sein, kann hier der Wert 0 angegeben werden.
  • plcworkdir=/var/lib/revpipyload
    Basisverzeichnis für das Python Programm. Hier muss das Programm und alle dazugehörigen Dateien und Unterordner abgelegt werden
  • plcprogram=program.py
    Dieses Python Programm wird durch RevPiPyLoad gestartet
  • plcslave=0
    Dieser Parameter bestimmt, ob der Prozessabbildserver für RevPiModIO (RevPiNetIO(...), RevPiNetIOSelected(...), RevPiNetIODriver(...)) aktiviert wird. Durch setzen auf 1 ist eine Verbindung von anderen Rechnern per RevPiModIO möglich (Parameter plcslaveacl beachten!)
  • plcslaveacl=Über diesen Parameter wird der Zugriff auf das Prozessabbild gesteuert.
    Der Wert hat folgende Syntax: IPADRESSE,RECHT
    (mehrere dieser Berechtigungen werden durch eine Leerstelle getrennt)

    • IPADRESSE
      Einzelne IP-Adresse oder mit Platzhalter definierte Gruppen:
      192.168.178.10 -> Nur der eine Rechner
      192.168.178.* -> Alle Rechner, bei denen die IP mit 192.168.178. beginnt
    • RECHT
      0 = Nur lesen
      1 = Lesen und schreiben

    Beispiel: plcslaveacl = 192.168.178.*,0 192.168.178.10,1
    Alle Rechner im Netz 192.168.178.xxx haben lesenden Zugriff, der Rechner mit IP 192.168.178.10 hat lesenden und schreibenden Zugriff.

HINWIES: Versucht eine IP-Adresse ohne Berechtigung (egal ob nur lesen oder lesen/schreiben) zuzugreifen, wird die Verbindung sofort abgelehnt!

  • pythonversion=3
    Python Version mit der das Python Programm ausgeführt werden soll
  • xmlrpc=0
    Modus für den XML-RPC-Server:
    0 = Deaktiviert
    1 = Python Programm starten/stoppen und Logdateien ansehen
    2 = 1 + Download Programmarchiv und piCtory Konfiguration
    3 = 2 + Upload Programmarchiv und piCtory Konfiguration
  • xmlrpcport=55123
    Port über den der XML-RPC-Server erreichbar ist (niemals kleiner 1024 einstellen)
  • zeroonerror=0
    Wenn 1 wird das Prozessabbild bei Python Programmabsturz mit \x00 Bytes überschrieben um alle Ausgänge auf NULL zu setzen.
    HINWEIS: Wir empfehlen diesen Parameter auf 1 zu setzen!
  • zeroonexit=0
    Wenn 1 wird das Prozessabbild beim sauberen Beenden des Python Programms (exitcode = 0) mit \x00 Bytes überschrieben um alle Ausgänge auf NULL zu setzen

Für die Benutzung von RevPiPyControl ist ein xmlrpc Wert von min. 1 erforderlich. Diese Einstellungen können auch alle über die grafische Oberfläche geändert werden, wenn der xmlrpc Wert 3 ist.

Protokollierung

Neben der Logdatei für das Python Programm, erzeugt RevPiPyLoad eine Eigene. In ihr können Ausgaben vom Daemon überwacht werden. Der Grad der Protokollierung kann über die Datei /etc/default/revpipyload geändert werden.

pi@RevPi ~ $ sudo nano /etc/default/revpipyload

Durch hinzufügen von -v kann die Logausgabe erhöht werden:

DAEMON_ARGS="-d"
# ändern in
DAEMON_ARGS="-d -v"

 

HINWEIS: Die XML-RPC-Schnittstelle ist nur für das lokale Netzwerk gedacht! Sie darf NIEMALS über das Internet verwendet werden, da jegliche Übertragungen UNVERSCHLÜSSELT stattfinden. Außerdem gibt es noch keine Authentifizierungsmöglichkeiten!
Theoretisch kann bei xmlrpc Wert 3 JEDER im Netzwerk Software auf das Gerät laden!
Beim produktiven Einsatz MUSS der xmlrpc Wert kleiner 3 sein!

FRAGE: Warum gibt es keine Verschlüsselung und Authentifizierung?
Das RevPiPyPlc-System ist für die Entwicklungsphase von Steuerungen mit der Programmiersprache Python entwickelt worden – Auch in Verbindung mit unserem RevPiModIO-Modul. Programme sollen schnell auf das System übertragen und vor allem das Laufzeitverhalten überwacht werden können.

Der primäre Fokus liegt bei dem System in der Überwachung des eigentlichen Python Programms. Dessen Ausgaben zu loggen, Fehler zu protokollieren und sicher stellen, dass das Python Programm läuft! Aber (noch) nicht um alles von überall über das Netzwerk zu erledigen.

Je nach Feedback der Community, werden wir solche Funktionen aber gerne noch einbauen 😀