Snapshot von Webcam an Telegram senden
Moderator: Co-Administratoren
-
- Beiträge: 532
- Registriert: 28.11.2014, 21:20
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 2 Mal
Re: Snapshot von Webcam an Telegram senden
Ich tippe darauf, dass es an fehlenden Hochkommas im wget bzw. curl Befehl lag. War bei mir auch so und als ich die richtig gesetzt hatte, lief es problemlos.
Gruß,
Markus
Markus
Re: Snapshot von Webcam an Telegram senden
Hallo Zusammen,
ich bin neu hier und kämpfe schon seit Tagen mit einem Problem
Ich habe es bis jetzt geschafft einen Text und auch ein Snapshot von meiner Kamera über Telegram ans Handy zu senden.
Das merkwürdige ist, das der Text beim ersten auslösen (Klingeln) übertragen wird, aber der Text+Bild wird erst beim zweiten auslösen Übertragen.
Wenn man das Script dann direkt nocheinmal ausführt wird immer der Text+Bild übertragen. Wartet man aber mehr als ca. 10s kommt beim ersten auslösen wieder nur der Text. usw.
Ich habe auch probiert die Scripte aufzuteilen und eine Verzögerung einzubauen, das war bei mir aber ohne Erfolg.
Es währe schön wenn einer von Euch sich erbahmen würde und mir einen Typ gibt (-;
ich bin neu hier und kämpfe schon seit Tagen mit einem Problem
Ich habe es bis jetzt geschafft einen Text und auch ein Snapshot von meiner Kamera über Telegram ans Handy zu senden.
Das merkwürdige ist, das der Text beim ersten auslösen (Klingeln) übertragen wird, aber der Text+Bild wird erst beim zweiten auslösen Übertragen.
Wenn man das Script dann direkt nocheinmal ausführt wird immer der Text+Bild übertragen. Wartet man aber mehr als ca. 10s kommt beim ersten auslösen wieder nur der Text. usw.
Ich habe auch probiert die Scripte aufzuteilen und eine Verzögerung einzubauen, das war bei mir aber ohne Erfolg.
Code: Alles auswählen
string msg = "Es hat an der Haustuer geklingelt";
string photo = "klingel.jpg";
string camurl = "http://192.168.178.44/picture/2/current/";
string chatid = "XXXXXX";
string botAPI = "XXXXXXXXX";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -F text='"#msg#"' -F chat_id="#chatid);
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget --http-user=yyyyyy--http-password=yyyyyyyyyyy -O "#photo#" "#camurl#"");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendPhoto -F chat_id="#chatid#" -F photo='@"#photo#"'");
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Snapshot von Webcam an Telegram senden
Eine Seite zurück, die beiden Scripte aufteilen auf 2 Programme, hat nicht funktioniert?
Alchy
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Snapshot von Webcam an Telegram senden
Erst einmal Danke für die schnelle Antwort.alchy hat geschrieben:Eine Seite zurück, die beiden Scripte aufteilen auf 2 Programme, hat nicht funktioniert?
Alchy
Nein das aufteilen hat bei mir nicht funktioniert.
Vielleicht habe ich dabei auch einen Fehler gemacht, bin mir dessen aber nicht Bewust.
Ich habe grade mal noch etwas getestet und dabei festgestellt, wenn ich mir den Speicherort der JPGs angucke, hat die Datei eine große von 0 Es wird erst beim wiederholten ausführen des Programms ein wirkliches Bild gespeichert mit realistische Dateigröße
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Snapshot von Webcam an Telegram senden
Deshalb aufteilen mit paar Sekunden Zeit.
Der erste Teil des Script holt das Bild von der Kamera, der zweite Teil will die gehörte Datei versenden.
Exec läuft auf fire&forget, soweit ich mich erinnere.
Ist die Datei aber noch nicht auf der CCU angekommen, was soll der zweite Teil verschicken?
Wenn es mit der Trennung nicht funktioniert, Fehlerprotokoll posten.
Alchy
Der erste Teil des Script holt das Bild von der Kamera, der zweite Teil will die gehörte Datei versenden.
Exec läuft auf fire&forget, soweit ich mich erinnere.
Ist die Datei aber noch nicht auf der CCU angekommen, was soll der zweite Teil verschicken?
Wenn es mit der Trennung nicht funktioniert, Fehlerprotokoll posten.
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Snapshot von Webcam an Telegram senden
Ich habe es nochmal versucht aber ich bekomme kein Fehlerprotokollalchy hat geschrieben:Deshalb aufteilen mit paar Sekunden Zeit.
Der erste Teil des Script holt das Bild von der Kamera, der zweite Teil will die gehörte Datei versenden.
Exec läuft auf fire&forget, soweit ich mich erinnere.
Ist die Datei aber noch nicht auf der CCU angekommen, was soll der zweite Teil verschicken?
Wenn es mit der Trennung nicht funktioniert, Fehlerprotokoll posten.
Alchy
Ich habe mir aber nocheinmal die Dateien angeguckt.
Es ist kein Zeitproblem. Die Datei bleibt bei einer Größe von 0 auch nach einer Ewigkeit.
Nur wenn ich direkt nach derm ersten Programmdurchlauf einen zweiten mache wird ein richtiges Bild erstellt.
Wenn die Zeit zwischen den beiden Durchläufen zu groß ist wird auch kein Foto erstellt.
-
- Beiträge: 10754
- Registriert: 24.02.2011, 01:34
- System: CCU
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 673 Mal
Re: Snapshot von Webcam an Telegram senden
Gerade mal probiert.
Klickibuntiprogramm:
Wenn x
dann sofort
Script:
(Der Pfad ist natürlich Kamera abhängig)
und verzögert um XSekunden
Script:
funktioniert tadellos. Die Verzögerung ist natürlich abhängig von Anbindung, Auflösung und damit Dateigröße usw.
Alchy
Klickibuntiprogramm:
Wenn x
dann sofort
Script:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O '/tmp/klingel.jpg' 'http://IP.DEINER.EIGENEN.CAM:PORT/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=XXXXX&pwd=XXXXX'");
und verzögert um XSekunden
Script:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:2.CMD_EXEC").State("extra/curl -s -k 'https://api.telegram.org/botXXXXxxxxXXXX/sendPhoto' -F chat_id=XXXXXXX -F photo='@/tmp/klingel.jpg' -F caption='Es wurde geklingelt'");
Alchy
Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.
© Sandra Pulsfort (*1974)
Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.
Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.
Re: Snapshot von Webcam an Telegram senden
Ich habe das so eingebaut, aber es klappt nicht.
Selbst wenn ich nur den Teil ausführe, der das Bild holt, wird beim ersten ausführen kein Bild gespeichert bzw. nur mit der Größe 0
erst bei direktem nochmaligem ausführen wird ein Bild gespeichert.
Ich bin echt etwas am verzweifeln.
Hab vor Verzweiflung auch den Teil schon direkt zweimal ausführen lassen.
Ohne Erfolg )-;
Das Bild muss eigentlich auch sofort da sein, da es nicht von einer Kamera geholt wird, sondern direkt von einem Raspberry auf dem MotionEye läuft. Meine Kameras liefern keine JPGs (Bzw. ich weiss nicht wie)
Die CCU und der Raspberry sind direkt über Kabel am Router angeschlossen. Also solte die Verbindungsgeschwindigkeit ausreichend sein.
Wenn es wirklich nennenswert dauern würde bis das Bild im Speicher der CCU abgelegt ist, müste es ja nach dem Befehl auch irgendwann da auftauchen.
Ich verstehe nur nicht wieso das nicht funktioniert
Selbst wenn ich nur den Teil ausführe, der das Bild holt, wird beim ersten ausführen kein Bild gespeichert bzw. nur mit der Größe 0
erst bei direktem nochmaligem ausführen wird ein Bild gespeichert.
Ich bin echt etwas am verzweifeln.
Hab vor Verzweiflung auch den Teil schon direkt zweimal ausführen lassen.
Ohne Erfolg )-;
Das Bild muss eigentlich auch sofort da sein, da es nicht von einer Kamera geholt wird, sondern direkt von einem Raspberry auf dem MotionEye läuft. Meine Kameras liefern keine JPGs (Bzw. ich weiss nicht wie)
Die CCU und der Raspberry sind direkt über Kabel am Router angeschlossen. Also solte die Verbindungsgeschwindigkeit ausreichend sein.
Wenn es wirklich nennenswert dauern würde bis das Bild im Speicher der CCU abgelegt ist, müste es ja nach dem Befehl auch irgendwann da auftauchen.
Ich verstehe nur nicht wieso das nicht funktioniert
Zuletzt geändert von Evilhome am 12.02.2017, 13:47, insgesamt 1-mal geändert.
Re: Snapshot von Webcam an Telegram senden
Ich habe jetzt eine Lösung gefunden.
Sie ist zwar eigentlich nicht im Sinne des Erfinders aber es klappt jetzt wenigstens.
Als erstes wird folgendes Skript ausgeführt.
Dann wird mit einer Verzögerung von 1 Sekunde das folgende Skript ausgeführt.
Nach dem doppelten Aufruf des "Bild holens" funktioniert auch das Versenden
Wie oben schon gesagt das ist zwar nicht der goldene Weg, aber es funktioniert wenigstens.
Wobei ich schon gerne gewusst hätte woran dieses Verhalten liegt.
Aber naja jetzt kann ich es erstmal nutzen
Ich kann mich nur ganz herzlich bei Alchy bedanken
Sie ist zwar eigentlich nicht im Sinne des Erfinders aber es klappt jetzt wenigstens.
Als erstes wird folgendes Skript ausgeführt.
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O '/tmp/klingel.jpg' 'http://192.XXX.XXX.XX/picture/2/current/?cmd=snapPicture2&usr=XXXX&pwd=XXXXXX'");
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O '/tmp/klingel.jpg' 'http://192.XXX.XXX.XX/picture/2/current/?cmd=snapPicture2&usr=XXXX&pwd=XXXXXX'");
dom.GetObject("CUxD.CUX2801001:2.CMD_EXEC").State("extra/curl -s -k 'https://api.telegram.org/botXXXXXXXXX/sendPhoto' -F chat_id=XXXXXXX -F photo='@/tmp/klingel.jpg' -F caption='Es wurde geklingelt'");
Wie oben schon gesagt das ist zwar nicht der goldene Weg, aber es funktioniert wenigstens.
Wobei ich schon gerne gewusst hätte woran dieses Verhalten liegt.
Aber naja jetzt kann ich es erstmal nutzen
Ich kann mich nur ganz herzlich bei Alchy bedanken
Re: Snapshot von Webcam an Telegram senden
Hallo zusammen, ich muss das Thema noch mal hochholen.
Wenn ich ein Bild unter /tmp/klingel.jpg per FTP ablege bekomme ich es verschickt. So weit ok.
Mein Problem ist, ich bekomme kein Bild ins /tmp-Verzeichnis mit wget.
Im Webbrowser wird mit dieser URL ein Bild der Webcam (Edimax 3005WN) angezeigt:
http://userxxx:pwxxx@192.168.xxx.xxx/sn ... &pwd=pwxxx
Packe ich das aber in folgendes Script bleibt die Datei klingel.jpg bei 0 Bytes.
dom.GetObject("CUxD.CUX2801001:7.CMD_EXEC").State("wget -q -O '/tmp/klingel.jpg' 'http://userxxx:pwxxx@192.168.xxx.xxx/sn ... &pwd=pwxxx'");
Alternativ könnte ich mir das Bild auf ein NAS von Synologie alle zwei Sekunden schreiben lassen und da aus dem Verzeichnis /share/garage/snapshot.jpg abholen.
Ich finde aber anscheinend nicht die richtigen Parameter für wget damit das klappt.
Hätte jemand dazu eine Idee und könnte mir weiterhelfen?
Gruss
Frank
Wenn ich ein Bild unter /tmp/klingel.jpg per FTP ablege bekomme ich es verschickt. So weit ok.
Mein Problem ist, ich bekomme kein Bild ins /tmp-Verzeichnis mit wget.
Im Webbrowser wird mit dieser URL ein Bild der Webcam (Edimax 3005WN) angezeigt:
http://userxxx:pwxxx@192.168.xxx.xxx/sn ... &pwd=pwxxx
Packe ich das aber in folgendes Script bleibt die Datei klingel.jpg bei 0 Bytes.
dom.GetObject("CUxD.CUX2801001:7.CMD_EXEC").State("wget -q -O '/tmp/klingel.jpg' 'http://userxxx:pwxxx@192.168.xxx.xxx/sn ... &pwd=pwxxx'");
Alternativ könnte ich mir das Bild auf ein NAS von Synologie alle zwei Sekunden schreiben lassen und da aus dem Verzeichnis /share/garage/snapshot.jpg abholen.
Ich finde aber anscheinend nicht die richtigen Parameter für wget damit das klappt.
Hätte jemand dazu eine Idee und könnte mir weiterhelfen?
Gruss
Frank