NEWS
Skriptumbau von Telegram zu Pushover
-
Hallo.
Ich habe folgendes Skript welches ein snap meiner Überwachungskamera erstellt und es bei ausgelöstem trigger an telegram sendet.
Das funktioniert sehr zuverlässig:
// Telegram Bild senden var source_url = 'http://192.168.178.XXX/tmpfs/snap.jpg?usr=XXX&pwd=XXX', // Adresse der INSTAR-5907HD HOF Kamera dest_path = '/opt/iobroker/iobroker-data/snaps/'; // Hier werden die Snaps gespeichert auf dem RPI var Trigger = "javascript.0.Eigene_Datenpunkte.INFO.PostIstDa"/*Variablen.Test-Trigger*/; //Trigger (PostIstDaTrigger) var Nachricht = ""; // Nachricht, zu dem Bild wenn gewünscht var request = require('request'); var fs = require('fs'); var picdate = formatDate(new Date(), "JJJJ-MM-TT SS-mm-ss")+'.jpg'; // Snap-Dateinamen // Bild an telegram schicken function sendImage (pfad) { setTimeout(function() { sendTo('telegram.0', pfad); log('Instar5907HD Hof snap per telegram verschickt'); }, 1 * 5); // SENDE DELAY!(timeout) 1 x 5 ms sendTo("telegram.0", Nachricht); // <-- nach der Timeout funktion ausführen } // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + picdate, body, 'binary', function(err) { // Hier wird der erzeugte Namen (picdate) mit dem Pfad zum Speichern übergeben! if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + picdate); // Hier hole ich mir den erzeugten Namen rein } }); }); } //Trigger on ({id: Trigger, val: true}, function () { saveImage(); });
Nun ist es möglich, dass auch Pushover Bilder sendet (siehe dazu https://forum.iobroker.net/viewtopic.php?f=21&t=13287&p=198193&hilit=Pushover+Attachments#p198193)
JS ist völlig neu für mich, ich komme gerade so eben mit dem Grundprinzipien von Blockly klar und leider sind wohl deshalb all meine Versuche mein Skript dahingehend umzubauen gescheitert.
Mit Copy&Paste und Trial and Error kam ich nicht ans Ziel, mein Skript sieht zuletzt so aus:
// Pushover Bild senden var source_url = 'http://192.168.178.XXX/tmpfs/snap.jpg?usr=XXX&pwd=XXX', // Adresse der INSTAR-5907HD HOF Kamera dest_path = '/opt/iobroker/iobroker-data/snaps/'; // Hier werden die Snaps gespeichert auf dem RPI var Trigger = "javascript.0.Eigene_Datenpunkte.INFO.PostIstDa"/*Variablen.Test-Trigger*/; //Trigger (PostIstDaTrigger) var Nachricht = ""; // Nachricht, zu dem Bild wenn gewünscht var request = require('request'); var fs = require('fs'); var picdate = formatDate(new Date(), "JJJJ-MM-TT SS-mm-ss")+'.jpg'; // Snap-Dateinamen // Bild an telegram schicken function sendImage (pfad) { setTimeout(function() { sendTo("pushover", { message: 'Dies ist eine Test-Nachricht', // mandatory - your text message title: 'ioBroker', // optional - your message's title, otherwise your app's name is used sound: 'magic', // optional - the name of one of the sounds supported by device clients to override the user's default sound choice // pushover, bike, bugle, cashregister, classical, cosmic, falling, // gamelan, incoming, intermission, magic, mechanical, pianobar, siren, // spacealarm, tugboat, alien, climb, persistent, echo, updown, none priority: 0, // optional (-2, -1, 0, 1, 2) // -2 to always send as a quiet notification, // 1 to display as high-priority and bypass the user's quiet hours, or // 2 to also require confirmation from the user file: '(dest_path + picdate)', // optional - attachment //token: 'API/KEY token', // optional - add other than configurated token to the call //url: , // optional - a supplementary URL to show with your message //url_title: , // optional - a title for your supplementary URL, otherwise just the URL is shown //device: , // optional - your user's device name to send the message directly to that device, rather than all of the user's devices //timestamp // optional - a Unix timestamp of your message's date and time to display to the user, rather than the time your message is received by our API }); }, 1 * 5); // SENDE DELAY!(timeout) 1 x 5 ms sendTo("pushover.0", Nachricht); // <-- nach der Timeout funktion ausführen } // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + picdate, body, 'binary', function(err) { // Hier wird der erzeugte Namen (picdate) mit dem Pfad zum Speichern übergeben! if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + picdate); // Hier hole ich mir den erzeugten Namen rein //sendImage(dest_path + 'image2.jpg'); // So war es vorher! } }); }); } //Trigger on ({id: Trigger, val: true}, function () { saveImage(); });
Pushover sendet mit dem Skript noch die Nachricht "Dies ist eine Test-Nachricht" aber der snap, also das Bild wird nicht mitgesendet.
Vielleicht hat einer der Profis hier Zeit und Muße mir da auszuhelfen, oder ist das zuviel verlangt? Ist ja schon etwas Code den man erstmal nachvollziehen muss.
Viele Grüße
Chris