NEWS
[Frage] Bild per telegram verschicken?
-
Das musst du anders lösen, wenn du das auf 2 Skripte aufteilen willst. In Skript 1 stellst du einen Datenpunkt zur Verfügung, und in Skript 2 lauscht du per on auf diesen Datenscript auf eine Änderung.
Aber ich glaube du machst dir das unnötig schwer.
Packe dein
var idKlingel = "hm-rpc.0.Mxxxxx.1.PRESS_SHORT"/*Klingelsensor.PRESS_SHORT*/; // Homematic Klingelsensor on({id: idKlingel, val: true}, function() // on lauscht auf Klingelsignal
in das Skript 3 von dir (was auch immer das ist).
Poste doch mal konkreter was genau du gemacht hast und den Inhalt deiner relevanten Skripte, aber nutze bitte die Codetags```
<code>[code][/code]</code> -
Das ist der Skript der die Webcam Bilder auf Telegram schickt.
/* Testskript BILDSPEICHERUNG todo: zum Umbenennen der Datei gilp-rename nutzen soll bei Aktion Webcam Bild speichern und per telegram senden Skript ist normalerweise inaktiv und wird zur per ScriptEnabled ausgelöst erstellt 30.03.2016 16.04.2016 nahc Update des telegram Adapters durch Bluefox ist es jetzt einfacher, Dateien zu senden 25.05.2016 download Funktion entfernt und durch request ersetzt */ var source_url = 'http://19XXXXXX:838//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=Ipxxxxx&pwd=xxxxx', // Kamerabild zB http://kameraserver:9090/image1.jpg dest_path = '/opt/ipcam/'; var request = require('request'); var fs = require('fs'); // Bild an telegram schicken (immer Dienst 3) function sendImage (pfad) { setTimeout(function() { sendTo('telegram', pfad); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); } // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image1.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image1.jpg'); } }); }); } // bei Skriptstart ausführen saveImage(); // selbständig Skript wieder anhalten (nach 12s) setStateDelayed('javascript.' + instance + '.scriptEnabled.' + name.slice(10), false, 12*1000);
Ich möchte einmal die möglichkeit haben per Text-> Kommando die Bilder auf Telegram anzufordern und das bei jedem Klingeln ein Bild geschickt wird.
Die Variante per Text-> Kommando funktioniert ohne Probleme. (Der Script wird gestartet…Bild verschickt... Script beendet.
Jetzt brauche ich halt eine möglichkeit bei jedem Klingeln den Script zu starten. habe es auch per Szene probiert. Bekomm ich aber auch nicht hin
-
Hallo,
die Variante mit dem abgeschalteten Skript ist nur ein Weg nach Rom. Normalerweise braucht man keine Skripts zu deaktivieren (es gibt Ausnahmen).
Aber jetzt zu deinem Fall:
Da das Skript ja deaktiviert ist, kannst du darin natürlich keine Kommandos setzen, die es aufwecken sollen.
Du musst ein weiteres Skript anlegen und darin mit einem Trigger den Datenpunkt scriptEnabled vom schlafenden Skript auf true setzen.
Nehmen wir an das schlafen Skript heißt Bildspeicherung und liegt in javascript.0.common.
Dann
var idKlingel = "hm-rpc.0.Mxxxxx.1.PRESS_SHORT"/*Klingelsensor.PRESS_SHORT*/; // Homematic Klingelsensor var idSkript = 'javascript.0.common.Bildspeicherung.scriptEnabled'; // Skript, dass aktiviert werden soll on({id: idKlingel, val: true}, function(obj) { // on lauscht auf Klingelsignal, also ist der TRIGGER / AUSLÖSER setState(idSkript, true); }
Du musst jetzt nur den Namen und den Pfad ggf. anpassen.
Gruß
Pix
-
Nur mal so nebenbei. Den https://www.doorpi.org/forum/ von motom001 kennt ihr?
Ich habe DoorPi auf einem Raspi 3 samt Kamera-Modul im Briefkasten im Einsatz. Damit lasse ich mir dann per Telegram beim Klingeln und beim Einwurf von Post Bilder zusenden. https://www.doorpi.org/forum/thread/63-push-nachrichten-von-doorpi/?pageNo=1 habe ich die Konfiguration von Telegram kurz beschrieben. Mir persönlich gefällt es besser, dass diese Lösung autark von der HomeMatic und dem ioBroker ist, so dass ich auch bei einem Ausfall dieser beiden Systeme weiterhin meine Push-Nachrichten erhalte. Trotzdem ist eine sehr gute Intergration in die HomeMatic möglich.
Bis dann,
Thorsten
-
Hi Pix,
es hat geklappt.Danke für deine Mühe.Ich hoffe das Morgenfrüh der Postbote klingelt :lol:
Ich musste nur Kleinigkeiten ändern.
var idKlingel = "hm-rpc.0.MXXXXX.1.PRESS_SHORT"/*Klingelsensor.PRESS_SHORT*/; // Homematic Klingelsensor var idSkript = 'scriptEnabled.common.Webcambild'; // Skript, dass aktiviert werden soll on({id: idKlingel, val: true}, function(obj) { // on lauscht auf Klingelsignal, also ist der TRIGGER / AUSLÖSER setState(idSkript, true); });
Danke und einen Schönen Abend noch!
-
Hallo,
danke für das tolle Skript. Habe es bei mir für eine Kamera im Einsatz und es funktioniert einwandfrei.
Ich wollt jetzt meine 2. Kamera einbinden(anderes Modell) Maginon HDC 25.
Ich schaffe es nicht ein bild zu versenden, es wird zwar die image2.jpg erzeugt, aber die Datei ist nur 1 kb groß und wird von Telegramm nicht versendet.
Wenn man aber die Datei(über FileZilla) sich lokal rüberkopiert und unbenennt(Dateiendung), also von jpg auf txt, dann sieht man einen XML Code, wo drinnen steht :401 Unauthorized, was für mich soviel heißt, es werden keine Benutzerdaten beim http Aufruf mitübergeben.
Interessanterweise habe ich diese cam auch in der vis im Einsatz, dort funktioniert der aufruf, ohne das ich nochmal benutzer und Passwort eingeben muss.
Hier das Skript
/* Testskript BILDSPEICHERUNG todo: zum Umbenennen der Datei gilp-rename nutzen soll bei Aktion Webcam Bild speichern und per telegram senden Skript ist normalerweise inaktiv und wird zur per ScriptEnabled ausgelöst erstellt 30.03.2016 16.04.2016 nahc Update des telegram Adapters durch Bluefox ist es jetzt einfacher, Dateien zu senden 25.05.2016 download Funktion entfernt und durch request ersetzt */ var source_url = 'http://USER:PW@192.xxx.xxx.xxx:80/snapshot.jpg?user=user&pwd=xxxxxxxx!', // Kamerabild zB http://kameraserver:9090/image1.jpg dest_path = '/opt/ipcam/'; var request = require('request'); var fs = require('fs'); // Bild an telegram schicken (immer Dienst 3) function sendImage (pfad) { setTimeout(function() { sendTo('telegram', pfad); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); } // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image2.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image2.jpg'); } }); }); } // bei Skriptstart ausführen saveImage(); // selbständig Skript wieder anhalten (nach 12s) setStateDelayed('javascript.' + instance + '.scriptEnabled.' + name.slice(10), false, 12*1000);
Hat vlt. irgendjemand eine Idee wo mein Fehler sein könnte?
Bitte um Hilfe!
LG
-
Gelöst:
Nach Stundenlangem Probieren, bin ich draufgekommen, dass der URL nicht gestimmt hat, trotzdem aber am iPad und PC am Browser funktioniert hatte :roll:
der richtige URL für die Maginon HDC 25 ist:
http://192.xxx.xxx.xxx/snapshot.jpg?user=username&pwd=passwort
LG
-
Habe auch noch ein Problem mit dem Bild versenden.
Bisher lief alles. Jetzt habe ich einen 2. Pi als Host eingerichtet und dort hin Telegramm verschoben.
Das Bild wird aber immer noch auf dem anderen Pi gesichert, so erhalte ich dann nie ein Bild sondern immer nur die Bezeichnung mit Pfad.
Wie trage ich im Skript den Speicherort für das Bild ein so das es auf dem 2. Pi also dem Host gesichert wird ?
-
Grüß Euch,
Habe jetzt schon wieder das ähnliche Problem bei meiner AvTech Kamera.
http://192.xxx.xxx.xxx/cgi-bin/guest/Video.cgi?media=JPEG
….sollte ja ohne Benutzerabfrage funktionieren, es kommt aber immer das Fenster für Benutzer und Kennwort.
Jemand eine Idee?
LG
-
Ich meine irgendwo gelesen zu haben, dass du Benutzer und Kennwort mitgeben musst.
-
Hi,
ja, ich weiss aber den Parameter aber nicht :?
LG
-
Und genau aus diesem Grund hab ich nur Foscam gekauft.
Hier sind die codes öffentlich.
Außerdem wollte ich nur eine Fa. haben.
wg. app und einheitlicher Darstellung auf dem Handy (ist aber ein anderes Thema).
mfg
-
Hi zusammen,
Hab das Script etwas angepasst. Es funktioniert auch super! Aber, es gibt ja immer ein aber, ich bekomme immer einen Fehler im Log.
Es funktioniert aber…jemand ne Idee?
// Telegram Bild senden var source_url = 'http://192.XXX.XXX.XXX:XX/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=USER&pwd=PASSWORT', //Adresse der IpKamera dest_path = '/opt/ipcam/'; var Trigger = "hm-rpc.1.LEQXXXXXXX.1.SENSOR"; //Trigger var Nachricht = "Es hat an der Haustüre geklingelt"; // Nachricht, welche mit dem Bild gesendet wird var request = require('request'); var fs = require('fs'); // Bild an telegram schicken function sendImage (pfad) { setTimeout(function() { sendTo('telegram.0', pfad); sendTo("telegram.0", "send", { text: Nachricht}); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); } // Bild speichern function saveImage() { request.get({url: source_url, encoding: 'binary'}, function (err, response, body) { fs.writeFile(dest_path + 'image2.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image2.jpg'); } }); }); } //Trigger on ({id: Trigger, val: true}, function () { saveImage(); });
-
// Telegram Bild senden var source_url = 'http://192.XXX.XXX.XXX:XX/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=USER&pwd=PASSWORT', //Adresse der IpKamera dest_path = '/opt/ipcam/'; var Trigger = "hm-rpc.1.LEQXXXXXXX.1.SENSOR"; //Trigger var Nachricht = "Es hat an der Haustüre geklingelt"; // Nachricht, welche mit dem Bild gesendet wird var request = require('request'); var fs = require('fs'); // Bild an telegram schicken function sendImage (pfad) { setTimeout(function() { sendTo('telegram.0', pfad); log('Webcam Bild per telegram verschickt'); }, 2 * 1000); 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 + 'image2.jpg', body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { log('Webcam Bild gespeichert'); sendImage(dest_path + 'image2.jpg'); } }); }); } //Trigger on ({id: Trigger, val: true}, function () { saveImage(); });
-
Hi,
möchte das bild vom ipcam Verzeichnis in einer View anzeigen, wie lautet der Pfad?
LG
-
Hallo zusammen
Ich möchte nur bei Alarm ein Bild per Telegram haben .
Ich habe eine Instar 5709hd Kamera
Kann man sowas auch per Blocky lösen ?
Gesendet von iPad mit Tapatalk Pro
-
Hi,
möchte das bild vom ipcam Verzeichnis in einer View anzeigen, wie lautet der Pfad?
LG `
ich vermute, hier wirst Du es finden…. :
dest_path = '/opt/ipcam/';
-
Trete jetzt schon eine Weile auf der Stelle.
Habe bei var dest = '/surveillance/Ipcam/'; eingegeben.
Bekomme aber als Fehlermeldung:
20:10:45.760 [info] javascript.0 script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - start
20:10:45.761 [info] javascript.0 script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - state = 1: Die Innentür wurde geöffnet
20:10:45.835 [warn] javascript.0 script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Fehler beim Bild: BildVorgarten.jpgspeichern
20:10:51.756 [info] javascript.0 script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - Bild versendet/surveillance/Ipcam/BildVorgarten.jpg
20:11:15.781 [info] javascript.0 script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles xBildpfad: /surveillance/Ipcam/BildVorgarten.jpg
20:11:15.790 [info] javascript.0 script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles err: undefined
20:11:15.791 [info] javascript.0 script.js.common.IPCam_Bild_telegram_2: TelegramBild.xaktionCam - CopyFiles ok
Was mache ich verkehrt?
In Telegram kommt auch nichts an. Wahrscheinlich weil kein Bild gespeichert wird, oder?
Und kann mir bitte jemand erklären, warum das Script in common angelegt werden muss?
-
Ist zwar schon älter, aber ich bräuchte etwas Hilfe.
Das Script wurde 1:1 übernommen angepasst und ich habe auch das Problem, dass kein Bild mitgesendet wird.
Es wird ein Bild im dest_path gespeichert … definitiv
Ich kann auch mit einem einfachen Trigger aus diesem Pfad ein Bild an Telegram versenden.
Also die Pfadangaben sowie die Erzeugung des Bildes funktioniert.
Aber im vollständigen Script wird nur die Nachricht versendet ... kein Bild.
Im LOG steht drin, dass er das Bild an Telegram geschickt hat.
04:26:59.718 [info] javascript.0 Start javascript script.js.common.Skript1 04:26:59.719 [info] javascript.0 script.js.common.Skript1: registered 1 subscription and 0 schedules 04:27:06.457 [info] javascript.0 script.js.common.Skript1: Webcam Bild gespeichert 04:27:08.463 [info] javascript.0 script.js.common.Skript1: Webcam Bild per telegram verschickt
Stehe ein bisschen auf dem Schlauch, hab auch schon mit den Timeouts gespielt
Vielen Dank schonmal
Andreas
-
Zeig doch mal dein Script.
Und das Bild liegt wirklich im Pfad wie im Script angegeben?
Gibt es ein größenlimit ggf?