Hallo,
nach mehreren Anfragen gibt es heute ein kleines Tutorial zur Nutzung vom Push-Dienst 'Prowl' innerhalb von Bash-Scripten.
Prowl ermöglicht es aus einem Script oder Programm heraus Benachrichtigungen an ein iOS Gerät (iPhone/iPad/iPod Touch) zu senden.
Ein Beispiel der Implementierung könnt ihr in meinem grausigen Youtube Video oder in dem zugehörigen Thread sehen. (Die verwendete Software läuft zwar in Python, aber zur Verdeutlichung ist es sicherlich ok.)
Prowl am Beispiel einer einfachen Temperaturüberwachung (Bash)
Im folgenden Tutorial zeig ich euch eine stark vereinfachte Temperaturüberwachung mit zwei simplen Bash-Scripten. Bitte beachtet, dass es tatsächlich nur als Beispiel dienen soll und nicht in einem produktiv System genutzt werden sollte.
Ihr benötigt für dieses Beispiel:
- einen Raspberry Pi
- einen konfigurierten 1-Wire Temperatur Sensor (DS18B20 [Anzeige]) [Optional könnt ihr das auch weglassen und nur bis Schritt 6. das Tutorial lesen]
- ein iOS Device (iPhone, iPod Touch oder iPad)
- Prowl App
- curl
- ein bisschen Zeit
1. Schritt: Anmeldung bei Prowl
Im ersten Schritt müsst ihr euch zunächst bei Prowl registrieren, anschließend loggt ihr euch mit euren neuen Zugangsdaten bei dem Dienst an.
2. Schritt: Erstellen eines API-Keys
Um die Schnittstelle von Prowl nutzen zu können, müsst ihr euch im folgenden einen API-Schlüssel anlegen. Dafür wählt ihr den Tab API Keysund generiert euch unter “Generate Key” einen neuen Schlüssel.
3. Schritt: App auf dem iPhone/iPad/iPod Touch installieren
Hier geht es zum Download
Nun ist es Zeit die Prowl App aus dem AppStore zu laden und zu installieren. Nach erfolgter Installation müsst ihr lediglich die im ersten Schritt festgelegten Zugangsdaten eingeben und schon könnt ihr euren ersten Test-Push versenden.
4. Schritt: Test Push versenden
Unter Add Message habt ihr die Möglichkeit über die Prowl-Webseite einen Test-Push zu versenden. Neben dem Benachrichtigungstext könnt ihr eine URL mit senden und die Priorität der Nachricht festlegen.
Wenn ihr die Prowl-App offen habt, könnt ihr die Benachrichtigung direkt einsehen. Andernfalls wird sie, wie bei anderen Apps auch, aus der Statuszeile heraus eingeblendet.
Die Prowl App zeigt euch eine Historie der erhaltenen Nachrichten.
5. Schritt: Bash Script
pi@raspberrypi:~# mkdir /home/pi/notify/
pi@raspberrypi:~# cd /home/pi/notify/
pi@raspberrypi:~# sudo nano notify.sh
Als erstes legen wir im /home/pi-Verzeichnis einen notify Ordner an und erstellen mit sudo nano das notify.sh Script.
Pushes werden von der Prowl API per HTTP-POST Ereignis entgegengenommen. Auf Client Seite eignet sich innerhalb von Bash-Scripten curl für diese Aufgabe. Sollte es nicht standardmäßig auf eurem Raspberry Pi installiert sein, könnt ihr es einfach mit ‘sudo apt-get install curl’ nachinstallieren.
Das Script sieht dann wie folgt aus:
#!/bin/bash
api="HIER_KOMMT_EUER_PERSÖNLICHER_API_KEY_HIN"
#definition der notwendigen Variablen
title=$1
priority=$2
event=$3
description=$4
if [ $# -ne 4 ]; then
echo "One ore more parameter is missing!"
else
#curl überträgt die definierten Variablen per HTTP-Post
curl https://prowl.weks.net/publicapi/add -F apikey="$api" -F application="$title" -F priority="$priority" -F event="$event" -F description="$description" -s
fi
Alles anzeigen
Wir speichern das Script mit STRG + O ab und beenden sudo nano mit STRG + X. Anschließend machen wir das Script ausführbar:
Zeit für den zweiten Test!
6. Schritt: Test des Scriptes
Das notify.sh Script übernimmt den Titel, die Priorität, das Event und die Beschreibung als Parameter. Mit folgendem Befehl versenden wir nun einen Push:
Nach etwa einer kurzen Weile sollte die Benachrichtigung auf eurem iOS Device erscheinen.
7. Schritt: Warnung bei Temperatur-Überschreitung
Wir legen ein weiteres Bash-Script an, das sich um die Temperatur-Überwachung eines Sensors kümmert:
Und fügen das folgende Script ein:
#!/bin/bash
sensor=$1
threshold=$(($2*1000))
cd /home/pi/notify/
temp=`cat /sys/bus/w1/devices/$sensor/w1_slave | tail -n 1 | awk -F "=" '{print $2}'`
if [ $temp -gt $threshold ]; then
echo "Ohoh...! Es wird warm!"
./notify.sh "Temperatur" 1 $sensor "Sensor meldet Temperatur von $(($temp/1000))°C!"
else
echo "Alles gut!"
fi
Alles anzeigen
Anschließend vergeben wir wieder die entsprechenden Rechte:
Das Script übernimmt als ersten Parameter den Sensor-Namen und als zweiten Parameter den Schwellwert für die Benachrichtigung.
Nun führen wir das Script aus:
Die Sensor ID ’28-000004c5de9f’ müsst ihr natürlich mit eurem Sensor ersetzen. Falls ihr euch nicht sicher seid, wie euer Sensor heißt, führt einfach folgenden Befehl aus:
Je nach Temperatur sollte das Script nun “Alles gut!” oder “Ohoh… Es wird warm!” ausgeben und je nach Meldung einen Push versenden.
8. Schritt: Script zyklisch ausführen lassen
Um das Script regelmäßig ausführen zu lassen, können wir einen cronjob anlegen.
Wir fügen folgende Zeile ein:
Diese Zeile bewirkt, dass das Script minütlich ausgeführt wird.
Natürlich müsst ihr die Sensor ID und den Temperaturwert entsprechend eurer Wünsche setzen!
Bitte beachtet, dass dieses Tutorial lediglich die Funktionsweise der Prowl API in Bash-Scripten aufzeigen soll. Für den produktiven Einsatz eignet sich das tempWatch.sh-Script nicht, da es wirklich sehr rudimentär ist und keine Fehlerbehandlung enthält (falls der CRC-Check fehlschlägt, die übergebene Sensor ID nicht existiert,…).
Wenn ihr Wünsche oder Anregungen habt, oder Fehler findet: Her damit.
Das Tutorial findet ihr im übrigen auch in meinem neuen Blog.
Gruß
Chris