Python exemplarisch - RPi Tutorial
deutsch     english

ENTWICKLUNGSTOOLS

 

 

Einführung

 

Die üblicherweise verwendete Programmiersprache auf dem Raspberry Pi ist Python. Für Anwendungen mit der GPIO-Schnittstelle stehen unzählige Beispielprogramme und Bibliotheken zur Verfügung. Es gibt aber leider immer noch sehr wenige gute Programm-Entwicklungsumgebungen. Da es sich bei Python um eine interpretierte Sprache handelt, ist der Entwicklungszyklus grundsätzlich einfach: Für das Schreiben der Quellprogramme (auch Python-Skripts genannt) kann jeder beliebige Texteditor verwendet werden. Nach dem Speichern des Skripts wird in einem Terminal-Fenster unter Verwendung von Kommandozeilen-Befehlen das Skript mit dem Python-Interpreter ausgeführt. Diese Art der Programmentwicklung ist aber In der heutigen Zeit, wo man sich an ausgefeilte grafische Benutzeroberflächen gewöhnt hat, als archaisch zu bezeichnen und gerade für Anfänger nicht empfehlenswert.

Es gibt mehrere Möglichkeiten für ein anderes Vorgehen, aber moderne Python IDEs, die einfach zu bedienen sind, sind noch rar. Wir empfehlen die folgenden Produkte: PyCharm (von JetBrains) für die professionellen Programmierer und TigerJython (von Tobias Kohn) und Geany für gelegentliche Nutzer, Kinder und Studenten.

Für Einsteiger ist die Bedeutung einer einfachen und stabilen Entwicklungsumgebung nicht zu unterschätzen. Frustrationen mit der IDE und der Mangel an klaren Fehlermeldungen trüben Freude, Interesse und Motivation für die Programmierung.

In diesem Kapitel zeigen wir zuerst allgemein bekannte Vorgehensweisen bei der Programmierung mit Python auf dem Raspberry Pi, werden aber später der "Remote-Entwicklung" mit einer IDE, die lokal auf dem Notebook oder Desktopcomputer läuft, besonderes betonen. Hier verläuft der Entwicklungsprozess ähnlich wie bei klassischen Mikroprozessorsystemen, wie z.B. dem Arduino. Die Programme werden auf einem "Host" geschrieben, auf das Zielsystem (Target) hinuntergeladen und dort ausgeführt. Aber im Gegensatz zum Arduino, wird hier nicht das Maschinenprogramm, sondern das Python Skript auf das Target hinuntergeladen, wo es mit dem Python-Interpreter ausgeführt wird. Um das Debuggen zu erleichtern, werden alle Print- und Fehlermeldungen automatisch wieder an das Entwicklungssystem zurückgemeldet und in einem Fenster angezeigt.

 

 

Zusatztools zur NOOBS Distribution

 

Wir stellen auf GitHub einige nützliche zusätzliche Tools (genannt RaspiBrick-Firmware) zur Noobs-Installation zur Verfügung. Zudem können Sie ein bootbares SD-Kartenimage von hier herunterladen auf dem diese Installation bereits vorgenommen sind und sofort loslegen. Mehr Informationen zur Installation finden Sie hier.

Wichtige Merkmale unserer RaspiBrick- Firmware:

  • Automatische Anzeige der IP-Adresse auf einem Standard-Display
  • Ausgabe der IP-Adresse als Morsecode auf GPIO Pin 22 (für LED oder Buzzer)
  • Automatisches Starten des autonomen Programms /home/pi/scripts/autostart.py
  • Setup Tool RaspiBrickConfig (Java Programm) in der FAT-Partition zur Auswahl des WLAN-Hotspots SSID/password beim nächsten Booten
  • Vorinstallierter VNC-Server (IP port: 5901, password: 123456)
  • Vorinstallierte Java IDE BlueJ und RaspiTransfer Tool, falls Programme mit Java entwickelt werden
  • Vorinstallierter Bluetooth RFComm Server geschrieben in Python für den Filetransfer ohne TCP
  • Zusätzliche systemweite Befehle:
     rkill  Beendet alle Python-Prozesse
     rmon  Startet die RaspiBrick-Firmware
     pyrun <prog.py>  Startet ein Python-Programm mit Raspilib-Modulen im  Python-Pfad  (als sudo)
    jrun <prog.jar> <main-class>
      Startet ein Java-Programm mit RaspiLib.jar im
     Java-Klassenpfad  (als sudo)

  • Unterstützung für den Pi2Go Robot. Mehr Informationen zur Robotik findet man auf der Pi2Go Website.
  • Automatische Erkennung vom Pi2Go Modus. Beim Autostart wird vorausgesetzt, dass der GPIO Pin 18 (battery monitor pin) auf LOW gesetzt ist, um die Firmware im Pi2Go-Modus zu starten. Für den Standalone-Betrieb sollte der Pin 18 beim Booten offen bleiben (oder auf HIGH liegen).
  • Enthält Befehle für den TigerJython-Remote-Modus
  • Vollständige Source-Distribution auf GitHub

 

 

Typische Entwicklungsszenarien


 

1 Raspberry Pi mit Bildschirm, Tastatur und Maus

  Für die Arbeit mit dem Raspi-Linux-System werden ein HDMI- oder DVI- Monitor, eine Tastatur und eine Maus direkt an die Ports des Raspberry Pi angeschlossen. Nach dem Booten kann man mit der Linux-Command-Shell arbeiten oder den Raspian Desktop starten. Dies entspricht einer weitverbreiteten Art, den Raspberry Pi zu verwenden, da keinerlei Netzwerkverbindungen nötig sind.

Loggen Sie sich als Benutzer pi mit Passwort raspberry ein.

In Terminal-Modus schreiben Sie ein Python-Skript unter Verwendung eines Konsole-Editors. Z.Bsp:

  • nano (vorinstalliert)
  • vi (vorinstalliert)
  • vim (installieren mit sudo apt-get install vim)
  • emacs (installieren mit sudo apt-get install emacs)

Um ein Pythonskript <progname> auszuführen, geben Sie in der Linux-Shell das folgende Kommando ein:
python execfile("<progname>")
Dies ist eine einfache, aber altmodische Art zu programmieren, funktioniert aber immer noch gut.

Um den Linux-Desktop zu starten, tippen Sie startx. Jetzt können Sie GUI-basierte Editoren verwenden:

  • IDLE (unter Menu | Programming)
  • Leafpad (unter Menu | Accessories | Text Editor)
  • TigerJython (vorinstalliert mit der RaspiBrick-Firmware)

Die Python-Programmierung mit IDLE ist in vielen Online-Tutorials erläutert. Sie gilt als etwas veraltet.

2 Remote Terminal (SSH)

A. Zugriff via Ethernet mit einem Hub/Switch/Router

Beim Booten des Raspberry Pi erhält dieser automatisch vom DHCP-Server des Routers eine IP-Adresse. Üblicherweise liegt diese im Segment 192.168.0.nnn oder 192.168.1.nnn. Es gibt einige Möglichkeiten, die letzten drei Ziffern nnn herauszufinden:

  • Wenn der Raspberry Pi der einzige am Router angeschlossene Rechner (Client) ist, beginnt nnn oft mit 100
  • Sie können den Router-Manager aufrufen (im Browser 192.168.0.1 oder 192.168.1.1 eingeben) und die "Connected clients" anzeigen
  • Installieren Sie einen IP-Scanner, z.B. Angry IP Scanner, und suchen Sie nach hostname (default: raspberrypi)
  • Wenn Sie den Raspberry Pi mit der RaspiBrick-Firmware starten, wird die IP-Adresse entweder auf einem angeschlossenen 7-segment Display angezeigt, oder die letzten 3 Ziffern werden im Morse-Code mit einem Buzzer oder einer LED am GPIO pin #18 ausgegeben.

Dieses Szenario hat einige Nachteile:

  • Jeder Arbeitsplatz braucht einen Router
  • Moderne Notebooks haben keinen integrierten Ethernet-Port, d.h. man benötigt einen USB-Ethernet-Adapter.

 

B. Zugriff direkt via Ethernet

Mit einem Trick kann man ein Notebook mit Windows oder MacOS so konfigurieren, dass es auf seinem Ethernet-Port einen DHCP-Server aktiviert und damit einem Raspberry Pi, der daran angeschlossen wird, eine IP-Adresse abgibt. (Fehlt am Notebook ein eingebauter Ethernet-Port, so kann ein Ethernet-USB-Adapter verwendet werden.) Für fix installierte oder in Systeme eingebettete Raspberry Pi's ist dies die einfachste Zugriffsart.

Bei dieser Konfiguration täuscht man dem Notebook vor, dass an seinem Ethernet-Port ein Gerät angeschlossen ist, das die Internet-Anbindung des Notebooks über WLAN teilen will (ICS: Internet Connection Sharing). Es ist dabei gar nicht nötig, dass das Notebook tatsächlich über WLAN mit dem Internet verbunden ist. Die Einrichtung erfordert folgende Schritte:


Mit Windows 7/8/10:

Unter Netzwerkverbindungen | Adaptereinstellung macht man einen Rechtsklick auf den WLAN-Adapter und wählt Eigenschaften. Dort klickt man den Reiter Freigabe und aktiviert die Optionen Anderen Benützern ... zu verwenden .

ide2b  ide2c
Damit wird beim nächsten Booten des Notebooks auf dem Ethernet-Port ein DHCP-Server aktiviert, der im Segment 192.168.137.nnn liegt (fest vorgegeben in der Registry von Windows). Man schliesst nun den Raspberry Pi mit einem Ethernet-Kabel an und sucht mit einem IP-Scanner (z.B. Angry Scanner, siehe oben) die IP-Adresse, die der Raspberry Pi erhalten hat. Damit kann man problemlos auf den Raspberry Pi zugreifen, z.B. mit PuTTY, WinSCP oder VNC.

Damit sich die IP-Adresse nicht ändert, kann man auf dem Raspberry Pi eine fixe IP-Adresse für den Ethernet-Port festlegen, indem man die Datei /etc/dhcpcd.conf editiert. Für nnn = 12 fügt man am Ende der Datei die beiden folgenden Zeilen ein:

interface eth0
static ip_address=192.168.137.12

Mit unserer RaspiBrick-Firmware kann dieser Eintrag mit dem Befehl set_static_ip durchgeführt werden, also beispielsweise mit

set_static_ip 192.168.137.12

Mit

set_static_ip remove

wird der Eintrag wieder entfernt.

Man beachte, dass der Ethernet-Port des Notebooks nach dieser Einstellung nicht mehr für eine gewöhnliche Router-Verbindung zur Verfügung steht, bis man die Freigabe wieder entfernt. (Dazu muss der USB-Ethernet-Adapter eingesteckt sein.)

Bemerkung: Man kann auch einen zweiten Ethernet-Port statt einen WLAN-Port verwenden (beispielsweise auf einem Desktop PC). Die Freigabe muss aber auf dem Adapter gemacht werden, der mit dem Internet verbunden ist, also nicht auf dem Adapter, an dem der Raspberry Pi angeschlossen ist.


Mit MacOS:

Die analogen Einstellungen findet man unter Systemeinstellungen | Freigaben und man aktiviert im linken Fenster die Internetfreigabe. Dann im rechten Fenster Verbindung freigeben: WLAN und Mit Computern über: Ethernet. Nach dem Booten wird der Mac nun auf dem Ethernet-Port einen DHCP-Server auf dem Segment 169.254.124.nnn aktivieren.

puTTY ist auf dem Mac nicht verfügbar, aber der Mac hat ein eingebautes SSH-Terminal. Dazu ruft man in einem Consolenfenster auf (die IP-Adresse sein 169.254.124.10):

ssh pi@169.254.124.10

und wird mit dem Password raspberry eingeloggt.

Bemerkung: Die DHCP-Segmente können von der Version des Betriebssystems abhängen. Um die aktuelle Adresse erstmals herauszufinden, die der Raspberry Pi erhalten hat, kann man nach erstellter Ethernet-Verbindung mit einem direkt angeschlossenen Bildschirm oder über WLAN auf den Raspberry zugreifen und in einer Console ifconfig aufrufen. Unter dem Adaptername eth0 ist die Adresse sichtbar. (Für neuere MacOS-Versionen ist das Segment wahrscheinlich 192.168.2.nnn.)


C. Zugriff via WLAN mit einem Hub/Switch/Router


 

Mehrere Raspberry Pi's können den gleichen Router verwenden. Moderne Geräte verfügen über die Möglichkeit, die sogenannte Mac-Adresse, die für den WLAN-Adapter des Raspberry (USB-Adapter bzw. für Raspi 3 eingebaut) spezifisch ist, an eine bestimmte feste IP-Adresse zu "binden" (sog. Address Reservation). Damit erhält beim Booten ein bestimmter Raspberry Pi immer dieselbe bekannte IP-Adresse. Weitere Informationen findet man unter: Konfiguration eines WLAN-Routers

Die Verbindung zwischen dem Computer und Raspberry Pi kann auch über einen virtuellen Hotspot auf einem Smartphone erstellet werden.

Auch hier gibt es einige Probleme

  • Die Router in vielen Bildungsinstitutionen sind zugriffsgeschützt und können durch die Benutzer nicht konfiguriert werden. Man muss in diesem Fall einen zusätzlichen privaten Router verwenden, was nicht immer erlaubt ist. Zudem ist dieser Router oft nicht mit dem Internet (WAN) verbunden. Damit haben auch die angeschlossenen Clients keinen Internet-Zugang
  • Es stellt sich das Frage, wie man die WLAN-Authentifizierung ohne angeschlossenen Monitor/Tastatur vornehmen kann
  • Man muss herausfinden, welche IP-Adresse der Raspberry Pi erhalten hat

Nachdem die IP-Verbindung zwischen dem Raspberry Pi und dem Host-System hergestellt ist, kann man ein Remote-Terminal-Programm SSH (Port 22) starten und auf dem Raspberry Pi einloggen. (Das bekannteste Terminal-Programm ist PuTTY.) Loggen Sie sich als User pi mit dem Passwort raspberry ein und Sie sind gleich weit wie Szenario 1, ausser dass der GUI-Desktop bei einer SSH-Verbindung nicht zur Verfügung steht.

Statt die etwas kryptischen SSH-Befehle zu verwenden, um das Dateisystem zu durchforsten und Dateien zu übertragen, empfiehlt sich die Verwendung des kostenlosen GUI-basierten Datei-Explorers WinSCP. Leider ist er nur unter Windows erhältlich.

 

 

3 Virtual Desktop

Voraussetzung: Eine TCP-Verbindung ist hergestellt und die IP-Adresse des Raspberry Pi ist bekannt.

In der RaspiBrick Firmware ist bereits ein VNC-Server installiert und dieser wird automatisch beim Booten gestartet. Sie können auf den Raspbian-Desktop über einen VNC-Client, der auf dem Entwicklungssystem läuft, zugreifen. Es gibt einige kostenlose Produkte, darunter TightVNC und VNC@Viewer. (VNC Port: 5901, Passwort: 123456.)

Der Remote Desktops ist für alle Arten vom Server-Management weit verbreitet und wird auch vielfach für den Raspberry Pi eingesetzt. Er vermittelt dem Entwickler den Eindruck, mit einem direkt angeschlossenen Terminal wie in Szenario 1 zu arbeiten, ohne dass aber separater Monitor, Tastatur und Maus nötig sind. Der Nachteil ist, dass man sich mit seinem PC sozusagen in "zwei Welten" bewegt, was für Anfänger leicht zu Verwechslungen führen kann und beim Entwickeln (IDE, usw.) nur die eingeschränkten Ressourcen des Raspberry Pi's zur Verfügung stehen..

 

4 Remote IDE - PyCharm

Voraussetzung: Eine TCP-Verbindung ist hergestellt und die IP-Adresse des Raspberry Pi ist bekannt.

Es gibt einige entscheidende Vorteile, Programme auf einem Host-System zu entwickeln und zur Ausführung auf das Target herunterzuladen.

  • Die Programmcodes und die Dokumentation können auf einem PC sicherer gespeichert und besser verwaltet werden als auf dem Target-System
  • Die Entwicklung erfolgt in einer vertrauten PC/Mac/Linux-Umgebung, ohne dass man sich mit dem OS des Raspberry Pi auskennen muss
  • Das Vorgehen entspricht weitgehend der klassischen Entwicklung von Programmen für einen Mikrocontroller (mit den Phasen Editieren-Kompilieren-Linken-Downloaden-Ausführen)

Es gibt mehrere Entwicklungssysteme, welche als Remote IDE verwendet werden können. Einer der besten ist PyCharm, aber leider steht der Remote Access nur in der konstenpflichtigen Professional Edition zur Verfügung (Academic License beantragen). Zudem ist das Projekt-Managment für den Remote-Access keineswegs trivial. Alle Fehlermeldungen und print-Ausgaben werden vom Raspberry Pi zurück gesendet und im unteren Teil des Applikationsfenster angezeigt. Die Programme können mit Mausklicks, d.h. ohne ein zusätzliches Terminalfenster, gestartet und gestoppt werden

Eine detaillierte Anleitung zur Einrichtung eines Projektes für den Raspberry Pi findet man hier.

 

 

5 Remote IDE - TigerJython

TigerJython ist eine Entwicklungsumgebung, die speziell für den Einsatz in der Ausbildung entwickelt wurde. Sie enthält einen funktionsfähigen Editor, einen Debugger, eine Python-Konsole, und viele integrierte didaktische Bibliotheken für Turtlegrafik, Grafik, Sound, Robotik, Spielprogrammierung, Datenbankanwendungen usw. Die Distribution besteht aus einer einzigen JAR-Datei, die mit einem vorinstallierten JRE auf jeder Plattform läuft. Im Rahmen eines Forschungsprojektes an der Eidgenössischen Technischen Hochschule (ETH) in Zürich wurde die IDE mit einem einzigartigen Python-Parser erweitert, der Syntaxfehlerprüfung und Reporting vor der Ausführung des Programms durchführen kann. Dieser funktioniert auch bei Programmen für die Remote-Entwicklung und verhindert, dass Programme mit Syntaxfehlern überhaupt auf den Raspberry Pi hinuntergeladen werden.

In TigerJython ist auch eine spezielle Schnittstelle für Robotik mit Lego Mindstorms EV3 und Pi2Go (eine Roboterplattform für den Raspberry Pi) integriert. Python-Programme werden in TigerJython geschrieben, auf den Roboter hinuntergeladen und selbständig mit dem Target Python-Interpreter im autonomen Modus ausgeführt. Die gleichen Programme können aber auch auf dem Hostsystem ausgeführt werden. Sie kommunizieren dann mit einem TCP-Socket-Server (BrickGate), der auf dem Roboter implementiert ist und der gemäss der übertragenen Befehle den Roboter steuert.

Für die Entwicklung von Python-Programme für den Raspberry P wird dieselbe Schnittstelle wie beim autonomen Roboter-Modus verwendet. Allerdings erfolgt die Kommunikation mit dem Target-System ausschliesslich über SSH, wobei das Programm nach dem Download vom Host aus mit einem Execute-Befehl gestartet wird. Um diese Funktionen zu aktivieren, wählt man in der Dialogbox Einstellungen/ Bibliotheken die Option Raspberry Pi.

 

Unter dem Register Tools findet man folgende Optionen:

  • Remote Terminal: Öffnet ein einfaches PuTTY-ähnliches SSH-Terminal
  • Auf das Target herunterladen: Ladet das aktuelle Programm unter /home/pi/script/MyApp.py und führt es aus (falls unter Einstellungen die Option Nach Download ausführen aktiviert ist)
  • Auf den Target ausführen: Beendet alle laufenden Python-Programme und führt das Programm /home/pi/script/MyApp.py aus
  • Module auf das Target herunterladen: Transferiert das aktuelle Programm in /home/pi/scripts ohne den Programmnamen zu ändern
  • Python auf dem Target beenden: Beendet alle Prozesse, die den Python-Interpreter nutzen
  • Target herunterfahren: Fährt den Raspberry Pi herunter (Software Shutdown)
  • Target herunterfahren/neu starten: Fährt den Raspberry Pi herunter und startet ihn neu (Restart)

Die meisten Syntaxfehler werden bereits vor dem Hinunterladen des Programms erkannt. Laufzeitfehler (Ausgaben an stderr) und Python-Textausgaben (Ausgaben an stdout) werden an den Host zurückgesendet und Ausgabefenster angezeigt.

 

Mit dem Klick auf die schwarz-rote Ikone der Taskleiste wird das Programm auf den Raspberry Pi hinuntergeladen. Falls in diesem Moment noch ein Python-Programm auf dem Raspberry läuft, wird dieses automatisch beendet, bevor das neue Programm gestartet wird. Dies ist notwendig, damit nicht mehrere Programme gleichzeitig das GPIO verwenden. Programme dürfen also sehr wohl endlose Schleifen (der Art while True) haben, was in der Mikrocontroller-Programmierung üblich ist.

Beim Booten wird das Shell-Skript /home/pi/raspibrick/autostart.shausgeführt. Dieses kann an spezielle Bedürfnisse anpasst werden. Standardmässig sucht das Skript nach dem Python-Programm /home/pi/scripts/autostart.py. Falls dieses vorhanden ist, wird es automatisch durch den Python-Interpreter ausgeführt. Dadurch lassen sich selbststartende Python-Programme realisieren.
hand1 Falls Sie beim Booten automatisch ein Programm ausführen möchten, bezeichnen Sie es mit autostart.py und laden es auf mit der Option Module auf das Target hinunterladen auf den Raspberry Pi hinunter.

TigerJython kommuniziert mit dem Raspberry Pi unter der Verwendung von SSH. Bei der Programmausführung auf dem Raspberry. Dazu sind auf dem Raspberry Pi einige Shell-Skripts notwendig, die in der der RaspiBrick-Firmware enthalten sind. Mehr Informationen zur RaspiBrick-Firmware finden Sie hier.

 

6 Remote IDE - Geany

Geany ist ein flexibler, kostenfreier Programm-Editor, der weitgehend durch den Benutzer konfigurierbar ist. Er kann auf dem Raspberry Pi installiert werden und eignet sich dann standardmässig gut für die Python-Programmierung mit einem direkt angeschlossenen Terminal oder über VNC.

Für die Remote-Entwicklung stellen wir ein Java-basiertes Tool RaspiRemoteManager (RRM) zur Verfügung, das in die Geany-Kommandos integriert wird. Damit kann Geany auf irgendeinem Host-System unter Mac / Linux / Windows laufen, wobei Python-Skripte mit einem einzigen Klick via SSH auf den Raspberry Pi hinuntergeladen und ausgeführt werden. Die Ausgabe von Python-Printbefehlen und Laufzeit-Fehlermeldungen (stdout und stderr) werden in einem separaten Konsolen-Fenster angezeigt.

hand1 Unserer Meinung nach handelt es sich bei diese Kombination von Geany und RRM um eine empfehlenswerte Entwicklungsumgebung für den Raspberry P. Es genügt die Taste F9 zu drücken oder die Ikone Erstellen zu klicken, damit der aktuelle Inhalt des Editorfensters lokal gespeichert und auf den Raspberry Pi transferiert werden. Alle anderen laufenden Python-Programme werden gestoppt und das neue Skript wird mit dem Python-Interpreter auf dem Raspberry Pi ausgeführt. Laufzeitfehler und Python-Ausgaben sind auf dem Entwicklungssystem sichtbar.

ide11

Beim Schliessen des Geany-Fensters wird das Programm auf dem Raspberry Pi automatisch abgebrochen (auch wenn es in einer Endlos-Schleife "hängt").

Weitere Menüoptionen:

Hinunterladen Lädt das aktuelle Programm unter seinen Namen hinunter, ohne es auszuführen
IP Adresse abfragen Fragt die IP-Adresse des Raspberry Pi ab
Herunterfahren Fährt den Raspberry Pi hinunter (Software Shutdown)
Neu starten Fährt den Raspberry Pi hinunter und startet ihn neu (Restart)
Python beenden Beendet alle Python-Prozesse
Remote Terminal Öffnet ein einfaches Putty-ähnliches Terminal (Linux shell)

Installation:

  • Laden Sie Python 2.7 und Geany herunter und installieren Sie sie auf Ihrem Computer. (Mehr Informationen finden Sie auf der Geany-Webseite. Ein gutes Tutorial finden Sie hier.)
  • Laden Sie RaspiRemoteManager.jar von hier herunter und kopieren Sie es in ein beliebiges Verzeichnis (im folgenden Beispiel unter Windows in c:\rrm). Die Distribution enthält auch den Quellencode, in welchen Sie sehen, wie eine SSH-Verbindung aufgebaut wird. (Sie können ihn Ihren Bedürfnissen anpassen.)
  • Öffnen Sie Geany's Erstellen | Kommandos zum Erstellen konfigurieren und geben Sie die unten stehenden Optionen ein. Die Shortcuts (unterstrichene Zeichen) werden mit vorangehendem _ (underline) festgelegt

 

 

Bemerkungen:

  • Fügen Sie im Feld IP Adresse abfragen nach -setip einen Leerschlag ein (weil die IP diesem Ausdruck angehängt wird)
  • Standardmässig enthält der Abschnitt Befehle zum Ausführen nur zwei Zeilen. Um eine dritte Zeile hinzufügen, müssen Sie die Datei geany.conf editieren. Ändern Sie den Eintrag
    number_exec_menu_items=0
    auf
    number_exec_menu_items=3
  • Wenn Sie den Quellcode des RaspiRemoteManager untersuchen, so sehen Sie, dass die Befehle copy und copyrunx die Existenz des Ordners /home/pi/scripts voraussetzen (das Python-Skript wird via SSH in diesen Ordner kopiert). Bei der Ausführung wird das folgende Linux-Shell-Skript startApp verwendet. Dieses müssen Sie (mit Ausführungsrecht) in /usr/bin kopieren.

 
#! /bin/sh
# Starting Python scripts from remote SSH command
case "$(pidof python2.7 | wc -w)" in

0)  sudo python -Qnew $1 2>&1
    ;;
*)  echo "Other program running. Killing..."
    sudo pkill python
    sudo python -Qnew $1 2>&1
    ;;
    esac

Programmcode markieren (Ctrl+C kopieren, Ctrl+V einführen)

 
Das Skript wird mit einem Parameter aufgerufen, der den vollqualifizierten Pfad zum Python-Programm angibt. Es überprüft zuerst, ob irgendein Python2.7-Prozess ausgeführt wird und stoppt diese, um sicher zu stellen, dass das nächste Programm einen exklusiven Zugriff auf das GPIO hat (ein Programm kann z.B. in einer endlosen while-Schleife hängen). Es startet dann den Python-Interpreter mit sudo-Rechten, setzt das -Qnew-Flag, um die Gleitkomma-Division zu aktivieren und leitet stderr auf stdout um, damit die Fehlermeldungen auf dem Entwicklungssystem angezeigt werden. (Bei Verwendung unseres RaspiBrick Firmware Image, ist startApp bereits vorhanden).