Pushover kann jetzt auch Attachments (z.B. Bilder verschicken)

Hallo IPS Freunde,

ich benutze den Dienst „Pushover“ für viele nützliche Alarmierungen auf meine Mobilen Endgeräten.
Jetzt habe ich letztens die Info erhalten, dass Pushover auch Dateien (z.B. Webcam Bilder) mit verschicken kann.

Pushing Images with Pushover 3.0

Hat jemand von Euch schon mal damit rum probiert? Ich würde diese Funktion sehr gerne nutzen.
Bisher verwende ich für den Bilderversand noch den Dienst „Pushsafer“. Dieser kostet jedoch etwas und ist nicht immer der Zuverlässigste und Schnellste.

Für Infos bin ich dankbar. :slight_smile:

LG Michi

Bin ich wirklich der Einzige der Pushover verwendet? Dabei ist das ein so genialer Push Dienst.

Ne ich verwende es auch bin aber noch nicht dazu gekommen das mal auszuprobieren😉

Hab auch pushover im Einsatz aber noch genug andere Baustellen :slight_smile:

Gesendet von meinem SM-G930F mit Tapatalk

Habe es bei mir nun in ein bestehendes Script eingebunden. Klappt ganz gut und ist auch gar nicht so kompliziert :slight_smile:

Zunächst muss ein CURLFile erzeugt werden:


$cFile = new CURLFile('pfad/zur/bilddatei.jpg','image/jpg','Beschreibung');

Das wird dann als attachment dem Curl Array hinzugefügt:


$curlData = array ('token'=>$PushOver_AppID,
				'user'=>$PushOver_ID,
				'message'=>$PushOver_MSG,
				'priority'=>$Priority,
				'device'=>$Device,
				'html'=>$HTML,
				'attachment'=>$cFile);

Und dann anschließend abgeschickt. Hier muss laut Docu das SAFE_UPLOAD auf True gesetzt werden. Habe nicht getestet ob es ggf auch ohne funktioniert, mit geht es zumindest.


	$ch = curl_init('https://api.pushover.net/1/messages.json');
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $curlData);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
	$result = curl_exec($ch);																			
	curl_close($ch);

Und schon kommt das Bild als Teil der Pushnachricht. Das geht auch wenn die Nachricht an mehrere Geräte gesendet wird. Das Bild wird dann an alle übertragen.

Gruß,
Torsten

Danke für Deine Infos. :slight_smile:

Wie könnte das dann in mein bestehendes Script eingebaut werden? grübel


<?
$Meldungen = GetValue(11632 /*[Hardware\Gewerke\Zentrale\Systemvariablen\Meldungen]*/);

$user					= 'xxxxx';
$mitteilung				= 'xxxxx';   		// Mitteilung
$warnung				= 'xxxxx';   	// Warnung
$alarm				= 'xxxxx';   	// Alarm
$device			= 'xxxxx';		// Device
$title				= 'KLINGELSIGNAL';                                    // Nachrichtentitel
$message		= '{{{{ ERKANNT }}}}';   		// Nachrichtentext
$url				= 'http://xxxxx';					// URL (optional)
$sound			= 'pushover';								// pushover,bike,bugle,cashregister,classical,cosmic,falling,gamelan,incoming,intermission,magic,mechanical,pianobar,siren,space,alarm,tugboat,alien,climb,persistent,echo,updown,none
$priority		= '0';                                    	// -1 niedrig, 0 normal, 1 hoch, 2 notfall
     

$LetzterSkriptStart = Round(time() - IPS_GetScript($_IPS['SELF'])['ScriptExecuted']); 
	//echo "Letzte Skript-Ausführung war vor ".$LetzterSkriptStart." Sekunden

"; 

if ($LetzterSkriptStart > 1 AND $Meldungen == TRUE)
{ 
    // Dieser Teil wird nur aufgerufen, wenn der letzte Skript-Start länger als 60 Sekunden her ist 
    //echo "Der letzte Skript-Start liegt länger als 60 Sekunden zurück

"; 

	// Sendet eine Nachricht über Pushover
    curl_setopt_array($ch = curl_init(), array(
    CURLOPT_URL => "https://api.pushover.net/1/messages.json",
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_POSTFIELDS => array(
    "token" 	=> "$mitteilung",
    "user" 		=> "$user",
    "device" 	=> "$device",
    "title"	=> "$title",
    "message" 	=> "$message",
    "url"		=> "$url",
    "sound" 	=> "$sound",
    "priority" 	=> "$priority",
)));
curl_exec($ch);
curl_close($ch);

}

?> 

Und wo muss das zu versendende Image abgelegt sein? Ich würde gerne ein Bild welches ich mit dem Image Grabber mache versenden. Ich glaube ich habe da irgendwo einen kleinen Denkfehler.

Sehr einfach geht das indem Du eine Email an Pushover verschickst.
Dazu musst Du die Pushover Email Adresse in der Pushover Weboberfläche abschreiben. Dann legst Du ganz normal eine Email Instanz in IP-Symcon an und trägst dort als Empfänger die Email Adresse von deinem Pushover ein.

Anschließend kannst Du wie gewohnt Bilder über SMTP_SendMailMedia verschicken. Das Bild, das Du verschickt hast, wird dann in der Pushover App in der Pushnachricht angezeigt.

Beispiel:


SMTP_SendMailMedia(34948 /*[Geräte\Benachrichtigung\Email\E-Mail an Pushover (SMTP)]*/, "Klingel", "Da hat jemand an der Tür geklingelt, aber du bist leider nicht da!", 12345); // 12345 ist die ObjektID des Media Elements in IP-Symcon

Danke Fronzo,
das mit der E-Mail an Pushover habe ich schon mal versucht bzw setze ich bei einem anderen Szenario ein. Jedoch gibts da leider immer eine Verzögerung welche ich bei einem Klingelsignal nicht brauchen kann.

das geht doch ganz einfach in Deinem Script. So nutze ich das Bild vom Image Grabber - ggf etwas kompliziert, aber so klappt es.


$Picture = base64_decode(IPS_GetMediaContent(37580 /*[Scripte\Mobotix\Besucher\Image Grabber (WebCams)\Image]*/));
$PicturePath = IPS_GetKernelDir()."cams".DIRECTORY_SEPARATOR."push.jpg";
file_put_contents($PicturePath, $Picture);
$cFile = new CURLFile('/var/lib/symcon/cams/push.jpg','image/jpg','Doorbell');

Über das file_put_contents liegt das aktuelle Bild immer an der gleichen Stelle und hat auch immer den gleichen Namen.

(Mein System läuft im Docker Image - somit auf Linux - Pfade sind bei Windows entsprechend anzupassen)

Dann fügst Du Deinem Array bei CURLOPT_POSTFIELDS einfach noch das Attachment dazu


curl_setopt_array($ch = curl_init(), array(
    CURLOPT_URL => "https://api.pushover.net/1/messages.json",
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_POSTFIELDS => array(
    "token"     => "$mitteilung",
    "user"         => "$user",
    "device"     => "$device",
    "title"    => "$title",
    "message"     => "$message",
    "url"        => "$url",
    "sound"     => "$sound",
    "priority"     => "$priority",
    "attachment"     => "$cFile",
)));
curl_exec($ch);
curl_close($ch);

Gruß,
Torsten

Hallo wawibu,

danke für Deine Antwort. Ich habe mal versucht das so einzubauen wie von Dir vorgeschlagen.

Ich bekomme leider diesen Fehler

Catchable fatal error:  Object of class CURLFile could not be converted to string in /var/lib/symcon/scripts/16576.ips.php on line 46

Keine Ahnung was genau bei Dir in Zeile 46 steht, aber ändere doch mal die Art der Zuweisung in Deinem Postfields array wie folgt:


curl_setopt_array($ch = curl_init(), array(
    CURLOPT_URL => "https://api.pushover.net/1/messages.json",
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_POSTFIELDS => array(
    'token'	=> $mitteilung,
    'user'	=> $user,
    'device'	=> $device,
    'title'	=> $title,
    'message'	=> $message,
    'url'	=> $url,
    'sound'	=> $sound,
    'priority'	=> $priority,
    'attachment'=> $cFile,
)));

Jetzt hat es funktioniert! :slight_smile:
Vielen Dank für Deine Unterstützung.

LG Michi

Gibt es auch eine Möglichkeit ohne das Zwischenspeichern auf Platte direkt aus einem MediaFile den $Content als CurlFile zu erzeugen?

Sehr gute Frage… habe ich in einem anderen Thread leider bisher auch noch keine Antwort darauf bekommen. Wäre schön wenn man die SD Karte schonen könnte.

Hallo zusammen,

ich würde mir gerne ein Bild beim Klingeln Pushen lassen mit Pushover. Leider hapert es komischerweise schon am Skrip

UBPO_SendPushoverImageAttachmentEx(integer $InstanzID, string $Titel, string $Nachricht, string $Benachrichtigungston, integer $Zustellpriorität, string $Endgerätename, integer $BildID)

also wenn ich es an meine gegebenheiten anpasse sollte es eigenltich so aussehen

UBPO_SendPushoverImageAttachmentEx(55134, ZuHause, Es hat geklingelt, spacealarm, 0, 17895)

aber bei mir sind immer wieder fehler wie z.B
Parse error: syntax error, unexpected unexpected ‚ZuHause‘ oder
Parse error: syntax error, unexpected unexpected ‚hat‘ usw.

egal was ich eingebe oder mache ich das hier komplett falsch

vielen Dank
LG
Basti

String musst Du in „“ setzten und es fehlt ein ; am Ende der Zeile und anscheinend auch ein Parameter $Endgerätename


UBPO_SendPushoverImageAttachmentEx(55134, "ZuHause", "Es hat geklingelt", "spacealarm",  0, "Endgerätname", 17895);

Hallo Fonzo,

vielen lieben dank, es hat geklappt. Mit den " hatte ich auch ausprobiert, leider habe ich aber die 0 auch in " gesetzt und hatte da auch immer Probleme.
Nachdem ich es jetzt die ganze Zeit probiert hatte und nicht weiter kam musste ich jetzt fragen :slight_smile:

Vielen Dank :slight_smile:

LG Basti

Hallo nochmal,

leider muss ich noch mal was fragen, ist die Push Benachrichtigung bei euch auch so langsam ?

Mein Problem mit Setup:

Ich habe eine Reolink RLC-410 Kamera

Auf meinem Raspi läuft IP-Symcon aktuellste Version mit dem aktuellen Pushover Plugin.

Meine Klingel habe ich günstig und einfach mit einem Xiaomi Fensterkontakt und einem Printrelaise Smart gemacht, das funktioniert auch perfekt und wird sofort an IP-Symcon beim klingeln gemeldet.

Wenn ich nun ein Bild pushen will dauert es zum einen mehrere Sekunden ca.45 sec bis ich die Pushnachricht auf meinem iPhone empfange und zum anderen ist nie jemand auf dem Bild zu sehen :joy:, ich denke das liegt an einem zeitversetzt den die Kamera hat.

Nun wollte ich mal fragen was ich da machen kann und ob mir jemand helfen mag!

LG
Basti

Moin

Ich buddel das hier mal wieder aus, da ich dieses Modul gerade testen wollte.
Einrichtung klappt einwandfrei und auch die Benutzung, aber gibt es dazu einen Support Thread hier im Forum? Habe irgendwie keinen gefunden …

Fonzo hatte weiter oben geschrieben:

UBPO_SendPushoverImageAttachmentEx(55134, „ZuHause“, „Es hat geklingelt“, „spacealarm“, 0, „Endgerätname“, 17895);

Allerdings gibt es diesen Befehl nicht. War das aus einem alten Modul oder ist Das ein ganz anderes, als das aus dem Modulstore ?

Gibt es mittlerweile Lösungen, um den Anhang direkt als Medienobjekt zu verschicken ohne das Bild vorher manuell auf die Platte bzw. SD Karte zu schreiben?

Gruß
Jens

Gibt es hier schon was neues?

Bin jetzt gezwungenermaßen auch auf Pushover, da die Push von Symcon unregelmäßig mit minutenlanger Verspätung eintrudelt, egal welches Handy und ohne Energiesparmodus.

Die Variante mit der SMTP-Instanz an die Pushover-Email funktioniert ja auch mit direktem Verweis auf die Bilddatei des Imagegrabber.