Einfache Verbindung mit dem raspberry pi
Hier erkläre ich in einzelnen Schritten, wie man die NetIO-App schnell und einfach mit dem raspberry pi verbinden kann um komfortabel verschiedene Befehle auszuführen. Und das ganze ohne netio_server.py
Description
Dieses Projekt befasst sich mit der einfachen Verbindung der NetIO App zu dem Raspberry Pi mit aktuellem Raspbian wheezy.
Um das System zu aktualisieren den Befehl
eingeben und Enter drücken. Das System sollte nach Ausführung der Befehle auf dem aktuellen stand sein.
Um die App mit dem Raspberry Pi zu verbinden, brauchen wir auf dem Pi einen TCP Socket. Diesen erstellen wir auf dem Pi mit ncat.
Zum installieren diesen Befehl eingeben und wieder mit Enter bestätigen:
Wenn der Vorgang abgeschlossen ist, kann der Socket mit folgendem Befehl erstellt werden:
Der Port 4321 kann natürlich geändert werden.
Im UI-Designer kann jetzt eine neue Fernbedienung angelegt werden.
Unter Connections wird jetzt der Pi hinzugefügt.
Name: Kann frei gewählt werden, muss dann in den Seiten als connection eingetragen werden.
IP: Die IP des Raspberry Pi
(Kann mit dem Befehl
rausgefunden werden)
Port: 4321 (Wenn der Port in dem ncat Befehl geändert wurde, natürlich hier entsprechend anpassen)
Um den Socket automatisch bei einem neustart des Pi erstellen zu lassen, kann ein Cronjob angelegt werden:
Hier ganz unten die folgende Zeile hinzufügen
und die Datei Speichern (ctrl-x, mit y oder j bestätigen und ENTER drücken.
Die App kann jetzt die Verbindung zum Pi herstellen und Befehle ausführen.
Damit dies Problemlos funktioniert, müssen entweder die Befehle eine Antwort geben, z. B.:
Hier gibt der Befehl die Antwort
Allerdings darf der Befehl auch nicht mehrere Antworten hintereinander geben, wie es in diesem Beispiel-Script der Fall ist:
Wird eine zweite Antwort gesendet, verliert die App kurzzeitig die Verbindung zum Pi.
Wenn ein Befehl keine Antwort zurückgibt, z. B. der rote Button aus der angehängten Fernbedienung:
dann muss bei dem Button, der diesen Befehl sendet, requiresSendReponse deaktiviert werden - durch klick auf “Add Attribute” und “requiresSendReponse” wird das Feld hinzugefügt und man kann den Haken bei requiresSendReponse entfernen.
Auch labels mit read-Befehl funktionieren, wie in der Beispielfernbedienung das aktuelle Datum mit Uhrzeit oder die CPU-Temperatur des Pi.
Vielen Dank an Klaus (klausreichenecker2) für die Hilfe dafür im Forum und natürlich ganz besonderen Dank an die Entwickler dieser tollen App!
Um das System zu aktualisieren den Befehl
sudo apt-get update -y && sudo apt-get upgrade -y
Um die App mit dem Raspberry Pi zu verbinden, brauchen wir auf dem Pi einen TCP Socket. Diesen erstellen wir auf dem Pi mit ncat.
Zum installieren diesen Befehl eingeben und wieder mit Enter bestätigen:
sudo apt-get install -y nmap
Wenn der Vorgang abgeschlossen ist, kann der Socket mit folgendem Befehl erstellt werden:
sudo ncat -4 -e /bin/bash -l 4321 -k &
Im UI-Designer kann jetzt eine neue Fernbedienung angelegt werden.
Unter Connections wird jetzt der Pi hinzugefügt.
Name: Kann frei gewählt werden, muss dann in den Seiten als connection eingetragen werden.
IP: Die IP des Raspberry Pi
(Kann mit dem Befehl
hostname -I
Port: 4321 (Wenn der Port in dem ncat Befehl geändert wurde, natürlich hier entsprechend anpassen)
Um den Socket automatisch bei einem neustart des Pi erstellen zu lassen, kann ein Cronjob angelegt werden:
crontab -e
@reboot sudo ncat -4 -e /bin/bash -l 4321 -k &
Die App kann jetzt die Verbindung zum Pi herstellen und Befehle ausführen.
Damit dies Problemlos funktioniert, müssen entweder die Befehle eine Antwort geben, z. B.:
pi@raspberrypi ~ $ cat /sys/class/thermal/thermal_zone0/temp 29862 pi@raspberrypi ~ $
cat /sys/class/thermal/thermal_zone0/temp
29862
Allerdings darf der Befehl auch nicht mehrere Antworten hintereinander geben, wie es in diesem Beispiel-Script der Fall ist:
#!/bin/bash echo "Antwort 1" sleep 5 echo "Antwort 2"
Wird eine zweite Antwort gesendet, verliert die App kurzzeitig die Verbindung zum Pi.
Wenn ein Befehl keine Antwort zurückgibt, z. B. der rote Button aus der angehängten Fernbedienung:
pi@raspberrypi ~ $ irsend send_once led red pi@raspberrypi ~ $
Auch labels mit read-Befehl funktionieren, wie in der Beispielfernbedienung das aktuelle Datum mit Uhrzeit oder die CPU-Temperatur des Pi.
Vielen Dank an Klaus (klausreichenecker2) für die Hilfe dafür im Forum und natürlich ganz besonderen Dank an die Entwickler dieser tollen App!