Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke

22.12.2016: Push Notifications ohne fremde Dienstleister.

Als jemand der nicht gerne updatet (Mac OS X 10.6.8 läuft super Stabil und zuverlässig!) wollte ich eine Art Push Notification, also eine Kurzmitteilung auf dem Desktop des Rechners bekommen wenn das eine oder andere ereignis beim Raspberry Pi eintritt .

Für 10.7 und höher gibt es viele externe (auch kostenlose) Dienstleister wo man sich anmeldet und die dann auch echte Push Notifications an Android und IOS senden. Wer das möchte kann da gerne drauf zurück greifen - ich nicht. Ich versuche immer Fremde Dienste so weit wie möglich zu ignorieren oder selbst nachzubasteln.

Ich wollte das mein Mac (10.6.8) ein Fenster öffnet und mir eine entsprechende Meldung raus gibt. Als Variante 1 hatte ich mit GROWL rumprobiert aber das ganze nie zum laufen bekommen. Irgendwann bin ich auf die Idee gekommen einmal mal "Apple Script" zu nutzen, welches beim Mac sowieso im hintergrund werkelt. Das ganze kann man per Terminal auf dem Mac aufrufen. Und was per Terminal geht, kann man auch mit einem Raspberry Pi fernsteuern.8-)

Das PHP Script für den Raspberry Pi:

/var/www/SendPUSH.php

Aufruf: http://ip_eures_Pis/SendPUSH.php?text=text der gesendet werden soll&titel=titelleiste des Fensters&button=OK&time=1

<?php

// Dieses Script loggt sich auf einen entfernten Rechner (Apple, getestet mit 10.6.8 - 10.11.2) ein und übermittelt per Apple Script eine Meldung in einem aufpoppenen Fenster, welches
// entweder weg geklickt werden muss, oder nach "X" Sekunden automatisch schließt.
//
//1. Auf dem Rechner muss "Entfernte Anmeldung" in den Systemeinstellungen aktiviert sein (SSH)
//2. Von dem Rechner der die Meldungen verschicken soll, muss man sich einmal per Hand mit SSH auf den Zielrechner einloggen
//3. sshpass muss auf dem Versende Rechner (z.b. Raspberry Pi) installiert sein
//4. Username/Passwort und IP MÜSSEN angegeben werden.
// Aufruf ?text=text der gesendet werden soll&titel=titelleiste des Fensters&button=OK&time=1

// Grunddaten
$username="Username";
$passwort="Passwort";
$ip="192.168.0.x";

 

// Nachrichtendaten
// Variable "text"
$Nachricht= $_GET['text']; if ($Nachricht==false) {
$Nachricht="Standard Text";}
// Variable "titel"
$Title= $_GET['titel']; if ($Title==false) {
$Title="Achtung!"; }
// Variable "button"
$Knopfbeschriftung= $_GET['button']; if ($Knopfbeschriftung==false) {
$Knopfbeschriftung="OK"; }
// Variable "time"
$Zeitlimit= $_GET['time']; if ($Zeitlimit==false) {
$Zeitlimit="5"; }

 

//Überprüfe ob der Rechner Erreichbar ist
$online=shell_exec("ping -c 1 ".$ip." -w 1");
if (strpos($online,"100% packet loss")) {
//Nicht Errreichbar, dann beende
exit;} else {
//Erreichbar, dann sende Nachricht

// Beginn Sende Nachricht
$bash='user="'.$username.'";passwort="'.$passwort.'";ip="'.$ip.'"; sshpass -p $passwort ssh -o StrictHostKeyChecking=no $user@$ip "osascript -e \'tell app \"Finder\" to activate\' -e \'tell app \"Finder\" to display dialog \"'.$Nachricht.'\" buttons \"'.$Knopfbeschriftung.'\" default button 1 with title \"'.$Title.'\" with icon stop giving up after '.$Zeitlimit.'\'"';
exec($bash);
// Ende Sende Nachricht
}
?>

Wie man sieht muss man folgendes anpassen:

Der Username und das Passwort und die IP des Macs im Netzwerk. Dann kann man entweder per Variablen den Text, den Titel, die Anzeigedauer und die Beschriftung des Buttons mit übergeben oder es fest in das Script schreiben.

Auf dem Mac muss nachtürlich "Entfernte Anmeldung" (SSH) Aktiviert sein.

Weiterhin sollte man auf dem Raspberry Pi, von welchem man die Meldung abschicken möchte SSHpass installiert haben:

sudo apt-get install sshpass

Dann sollte man sich in seinen Raspberry Pi einmal per SSH einloggen ( ssh IP_des_Pis -l pi ) und dann von dort in der Kommando Zeile sich einmal erfolgreich auf seinem Mac im Netzwerk einloggen ( ssh IP_des_Macs -l Username_Mac ).

Sollte man das erfolgreich hinter sich gebracht haben sollte das obige php Script anstandslos sogar unter 10.11.2 funktionieren !

OK, das sind keine echten "Push Notifications", aber was anderes habe ich nicht zum laufen gebracht.

Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke