Dokumentation – RevPiPyLoad

Diese Komponente wird auf dem Revolution Pi Core installiert.

  • Startet und überwacht das, mit RevPiModIO geschriebene, Python Programm welches die IOs steuert
  • Stellt das Prozessabbild für RevPiNetIO zur Verfügung
  • Stellt die Schnittstelle für die grafische Konfiguration zur Verfügung, mit der der Dienst konfiguriert und das Steuerungsprogramm hochgeladen / kontrolliert wird

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 in DEFAULT Sektion:

  • autoreload=1
    Startet das Python Programm automatisch neu, wenn es beendet 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!
  • autoreloaddelay=5
    Zeitverzögerung, bevor PLC Programm neu gestartet wird
  • autostart=1
    Startet das Python Programm automatisch, wenn das RevPi-Core System startet
  • 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
  • plcarguments=
    Argumente, die dem PLC Programm beim Starten übergeben werden
  • 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.
  • pythonversion=3
    Python Version, mit der das PLC Programm gestartet wird (mögliche Werte 2 / 3)
  • 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
Parameter in PLCSLAVE Sektion:

  • 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 RevPiModIO2 möglich (Datei aclplcslave.conf beachten!)
  • aclfile=/etc/revpipyload/aclplcslave.conf
    Gibt den Dateinamen an, aus der die Berechtigungen für IP-Adressen gelesen werden sollen.
    Über diese Berechtigungen wird der Zugriff auf das Prozessabbild gesteuert.
    In der Datei wird EINE Berechtigung PRO ZEILE definiert: IPADRESSE,RECHT

    • 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
    # PLC-SLAVE Access Control List (acl)
    # One entry per Line IPADRESS,LEVEL
    #
    
    # Alle Rechner aus dem 192.168.178.0/24 Netz können IOs nur lesen
    192.168.178.*,0
    
    # Der Rechner 192.168.178.10 darf IOs lesen und schreiben
    192.168.1.20,1

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

  • bindip=*
    Gibt die IP an, an die der Prozessabbildserver gebunden werden soll. Dies kann nützlich sein, wenn der RevPi mehrere IPs besitzt und das Prozessabbild nur aus einem Netzwerk erreicht werden soll.
    Möchten Sie den Prozessabbildserver an alle IPs binden, geben sie ein * an.
  • port=55234
    Gibt den Port an, über den der Prozessabbildserver erreicht werden kann


Parameter in XMLRPC Sektion:

  • xmlrpc=0
    Aktiviert 1 oder deaktiviert 0 den XML-RPC Server. Dieser wird benötigt, wenn RevPiPyLoad über das grafische Tool RevPiPiControl gesteuert werden soll.
    Zum Aktivieren setzt man ihn auf 1 (Datei aclxmlrpc.conf beachten)
  • aclfile=/etc/revpipyload/aclxmlrpc.conf
    Gibt den Dateinamen an, aus der die Berechtigungen für IP-Adressen gelesen werden sollen.
    Über diese Berechtigungen wird der Zugriff auf RevPiPyLoad gesteuert.
    In der Datei wird EINE Berechtigung PRO ZEILE definiert: IPADRESSE,RECHT

    • 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: PLC Programm starten/stoppen und Logs lesen
      1: alles von 0 + IOs in ‚Watch modus‘ lesen
      2: alles von 1 + Einstellungen lesen und PLC Programm herunterladen
      3: alles von 2 + PLC Programm hochladen und IOs in ‚Watch modus‘ schreiben
      4: alles von 3 + Einstellungen von RevPiPyLoad ändern
    # XML-RPC Access Control List (acl)
    # One entry per Line IPADRESS,LEVEL
    #
    
    # Alle Rechner aus dem 192.168.1.0/24 Netz können nur Logs lesen und das Programm starten/stoppen
    192.168.1.*,0
    
    # Der Rechner 192.168.1.20 darf alle Einstellungen und Funktionen verwenden
    192.168.1.20,4

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

  • bindip=*
    Gibt die IP an, an die der XMLRPC-Server gebunden werden soll. Dies kann nützlich sein, wenn der RevPi mehrere IPs besitzt und RevPiPyLoad nur aus einem Netzwerk erreicht werden soll.
    Möchten Sie den XMLRPC-Server an alle IPs binden, geben sie ein * an.

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, außer Zugriffsrechte per IP zu steuern.

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