Snapshot von Webcam an Telegram senden

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

braindead
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

Beitrag von braindead » 04.07.2016, 11:14

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

Evilhome
Beiträge: 5
Registriert: 11.02.2017, 12:11

Re: Snapshot von Webcam an Telegram senden

Beitrag von Evilhome » 11.02.2017, 12:26

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.

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#"'");
Es währe schön wenn einer von Euch sich erbahmen würde und mir einen Typ gibt (-;

alchy
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

Beitrag von alchy » 11.02.2017, 13:24

Eine Seite zurück, die beiden Scripte aufteilen auf 2 Programme, hat nicht funktioniert?

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.

Evilhome
Beiträge: 5
Registriert: 11.02.2017, 12:11

Re: Snapshot von Webcam an Telegram senden

Beitrag von Evilhome » 11.02.2017, 14:31

alchy hat geschrieben:Eine Seite zurück, die beiden Scripte aufteilen auf 2 Programme, hat nicht funktioniert?

Alchy
Erst einmal Danke für die schnelle Antwort.

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

alchy
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

Beitrag von alchy » 11.02.2017, 16:02

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

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.

Evilhome
Beiträge: 5
Registriert: 11.02.2017, 12:11

Re: Snapshot von Webcam an Telegram senden

Beitrag von Evilhome » 11.02.2017, 23:16

alchy 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 es nochmal versucht aber ich bekomme kein Fehlerprotokoll
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.

alchy
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

Beitrag von alchy » 11.02.2017, 23:20

Gerade mal probiert.
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'");
(Der Pfad ist natürlich Kamera abhängig)

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'");
funktioniert tadellos. Die Verzögerung ist natürlich abhängig von Anbindung, Auflösung und damit Dateigröße usw.

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.

Evilhome
Beiträge: 5
Registriert: 11.02.2017, 12:11

Re: Snapshot von Webcam an Telegram senden

Beitrag von Evilhome » 12.02.2017, 12:17

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
Zuletzt geändert von Evilhome am 12.02.2017, 13:47, insgesamt 1-mal geändert.

Evilhome
Beiträge: 5
Registriert: 11.02.2017, 12:11

Re: Snapshot von Webcam an Telegram senden

Beitrag von Evilhome » 12.02.2017, 13:46

Ich habe jetzt eine Lösung gefunden. :D
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'");
Dann wird mit einer Verzögerung von 1 Sekunde das folgende 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'");

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'");
Nach dem doppelten Aufruf des "Bild holens" funktioniert auch das Versenden :D :D

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

FrankOL
Beiträge: 6
Registriert: 03.03.2016, 11:46

Re: Snapshot von Webcam an Telegram senden

Beitrag von FrankOL » 07.09.2017, 19:02

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

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“