Raspberry Pi für Profis

Raspberry Pi per E-Mail steuern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ein Benutzer steuert über per E-Mail versendete Befehle den Raspberry Pi. Dabei überprüft der Platinencomputer regelmäßig die E-Mail-Adresse auf eingehende Nachrichten und führt Befehle gegebenenfalls aus.
07:59

Transkript

Ich möchte meinen Raspberry per E-Mail steuern, das bedeutet, ich habe ein E-Mail-Konto eingerichtet. Ich schicke an diese E-Mail einen Befehl und der Raspberry schaut einmal pro Minute nach, ob es da eine neue E-Mail gibt. Falls ja, schaut er nach, welcher Befehl in dieser E-Mail enthalten ist und führt diesen Befehl dann eben entsprechend aus. Wie das geht, zeige ich Ihnen in diesem Video. Wir brauchen zunächst einmal einen Apache mit einem PHP5-Modul. Wenn Sie den noch nicht haben, dann holen Sie das einfach mit " sudo apt-get install" und dann diesem Befehl hier nach. Falls Sie schon einen Apache installiert haben, dann fehlt Ihnen höchstwahrscheinlich dieses PHP5-IMAP-Modul, das heißt, das brauchen Sie in jedem Fall mit "sudo apt-get install php5-imap" holen Sie sich dieses Modul, das dafür sorgt, dass ich via PHP auf einen IMAP-Mailserver zugreifen kann. Alles weitere passiert dann hier in dieser PHP-Datei, "mail.php" habe ich die genannt, die möchte ich Ihnen zunächst einmal erklären, was diese Datei tut und später probieren wir das aus. Das ist eine ganz normale PHP-Datei. Zunächst einmal werden hier die credentials festgelegt, also mein Mailserver, Mailuser und mein Mailpasswort, und falls die nicht angegeben werden, wird das Script abgebrochen und ich bekomme eine Fehlermeldung. Die eigentliche Musik spielt dann hier ab dieser Zeile. Mit "imap_open" mache ich eine Verbindung zu meinem Mailserver auf und ich schaue eben hier nach mit "imap_mailboxmsginfo", ob ich neue Nachrichten bekommen habe. Falls das nicht der Fall ist, breche ich mit der Fehlermeldung "Keine Nachrichten" ab. Falls ich aber E-Mails habe, gehe ich alle E-Mails der Reihe nach durch, angefangen natürlich bei der ersten E-Mail, solange bis ich hier die Höchstzahl der E-Mails erhalten habe und von jeder E-Mail hole ich mir mit "imap_fetchbody" den eigentlichen Inhalt. Und diesen eigentlichen Inhalt speichere ich in der Datei "$body". Und dann schaue ich nach, ist denn in dieser Variablen "$body" die Zeichenfolge "/start/" enthalten. Falls das der Fall ist, führe ich hier in dem Falle den Befehl "Habe Startbefehl bekommen" aus. Ich könnte hier dann eben alles hineinschreiben, was ich starten möchte. Dann gebe ich noch an, dass ich tatsächlich einen Befehl bekommen habe mit "$comman=true;". Ich kann hier jetzt natürlich noch andere Befehle definieren, ich kann einen Endbefehl, ein Pausenbefehl, was auch immer mir wichtig ist, hier eintragen. Falls ich keinen Befehl bekommen habe, habe ich auch niemals dieses "&comman=true;" gesetzt und in dem Falle möchte ich diesen Fehler mitloggen. Ich rufe also eine Funktion auf, die heißt "logging", die wird hier unten definiert, und die macht nichts anderes, als in eine Datei "log.txt" hineinzuschreiben, was denn schief gelaufen ist. Wenn ich das der Reihe nach durchgehe, dann wird diese Mail auch deleted mit "deletemail", auch das ist eine eigene Funktion, die ich selbst angegeben habe und das macht nichts anderes als "imap_delete", und dann sage ich, ich möchte die entsprechende E-Mail mit dieser Nummer einfach löschen. Das ist schon die ganze PHP-Datei und die nehme ich jetzt mal in die Zwischenablage hinein. Ich habe mich hier auf dem Raspberry eingeloggt. Ich gehe mal nach "cd /var/www/" und dann schauen wir erstmal in dieses Verzeichnis hinein. Da gibt es noch keine "mail.php", also lege ich sie mit "nano mail.php" an. Dann sorge ich dafür, dass ich in den PHP-Modus komme und gehe auch hier wieder aus dem PHP-Modus heraus. Das ist jetzt die ganze Datei, die ich Ihnen gerade erklärt habe. Hier muss ich jetzt natürlich meine eigenen credentials angeben, "mailserver" ist in dem Fall "mail.ec-elements.com". Gegebenenfalls müssen Sie hier noch eine Portnummer angeben, das müssen Sie ausprobieren. Das könnte beispielsweise ein ":587" sein, je nachdem, wie Ihr Provider eingestellt ist. "mailuser" ist "raspi" und "mailpass" ist auch "raspi". "Strg+O", damit speichere ich das Ganze ab. und jetzt möchte ich noch die Datei "log.txt" anlegen, das mache ich mit dem Befehl "touch", damit lege ich diese Datei an und mit "chmod 777 log.txt" sorge ich dafür, dass auch der Webserver in diese Datei "log.txt" hineinschreiben kann. Jetzt wird es Zeit, das Ganze mal auszuprobieren, "raspberrypi.local/mail.php". Ich habe keine Nachrichten, nichts ist passiert, und die Log-Datei hat sich natürlich auch nicht verändert. Und jetzt schreibe ich mal selber eine Mail, das kann ich ja von der eigenen E-Mail-Adresse bequem machen, an "raspi@webevangelisten.de", "Befehl" und dann schreibe ich einfach nur "start" hinein, sende das Ganze ab, und wenn ich jetzt diese Datei neu aufrufe, dann sehen Sie hier, ich habe den Startbefehl bekommen. Und wenn ich jetzt hier in meine Mailbox hineinschaue, dann ist diese Mail weg. Und jetzt möchten wir das Ganze nochmal ausprobieren, ob er das auch tatsächlich mitloggt, wenn ich hier nochmal einen Befehl schreibe und hier einfach etwas hineinschreibe, was er nicht versteht. Dann gehe ich auf "Senden", ich habe hier diese E-Mail und wenn ich jetzt "mail.php" ausführe, "Konnte Befehl nicht erkennen". Das bedeutet, ich müsste hier in dieser Log-Datei tatsächlich auch Inhalte haben. Schauen wir uns diese Inhalte mal an. "cat log.txt", dann sehen Sie, habe ich die Uhrzeit und das Datum mitgeloggt und den Inhalt dieser E-Mail, aber diese E-Mail wurde hier auch korrekterweise gelöscht. Wir müssen zu guter Letzt dem Raspberry noch beibringen, dass er dieses "mail.php" automatisch ausführen soll, das mache ich mit einem Cronjob und Cronjobs starte ich mit "crontab -e". Wenn ich jetzt hier hineingehe, dann kann ich hier in diesem Format Minuten, Stunden, day of month, also Tag des Monats, dann der Monat selber und day of week, also Tag der Woche, angeben, dass ich das Ganze zum Beispiel zu jeder Minute machen möchte, zu jeder Stunde, das heißt alle 60 Sekunden soll hier diese Datei "mail.php" aufgerufen werden. Das Problem ist, dass ich, wenn ich PHP von der Kommandozeile aus ausführe, wahrscheinlich auf dieses IMAP-Modul nicht zugreifen kann. Also greife ich zu einem kleinen Trick und sage "wget 127.0.0.1/mail.php". Das bedeutet, das ist der Pfad zu meiner Maildatei und die wird quasi über einen Browser aufgerufen, sodass PHP dann auch automatisch als Apache-Modul startet. Und dann gebe ich noch zu guter Letzt an, dass das Ganze, was hier heruntergeladen werden soll, auf die Standardausgabe geschrieben werden soll mit "-o" und dann einen Bindestrich und mit "-q" sage ich, das Ganze soll im Stillen funktionieren, ich möchte keine weiteren Ausgaben haben. "Strg+O", das ist zum Abspeichern und "Strg+X" ist zum Schließen. Und dann heißt es hier "crontab: installing neew crontab" und jetzt kann ich gemütlich an diese E-Mail-Adresse Befehle schicken und der Raspberry schaut einmal pro Minute nach. Und wenn er einen Befehl hat, dann wird dieser Befehl hier ausgeführt. Und ich kann jetzt per E-Mail mit meinem Raspberry kommunizieren.

Raspberry Pi für Profis

Sehen Sie, wie Sie den Minicomputer Raspberry Pi im W-LAN betreiben, damit ins Internet gehen, ihn per E-Mail steuern, SMS versenden, QR-Codes entziffern und vieles mehr.

1 Std. 38 min (27 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:30.06.2014
Aktualisiert am:01.04.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!