Snapshot von Webcam an Telegram senden

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

BJMeatmasterM
Beiträge: 11
Registriert: 31.03.2016, 13:31

Snapshot von Webcam an Telegram senden

Beitrag von BJMeatmasterM » 11.04.2016, 16:52

Hallo Zusammen,

habe eine Webcam, die an http://website:port/snapshot.jpg?user=username&pwd=pw ein jpg anzeigt. Parallel verwende ich einen Klingelsensor HM-Sen-DB-PCB, der mich via Pushover über die Betätigung der Klingel informiert.

Soweit ich es verstanden habe kann ich nun leider an/mit Pushover kein Bild senden. Das kann aber angeblich Telegram. Telegram habe ich bereits aktiv integriert und ich kann entweder Telegram oder Pushover für Benachrichtigungen verwenden.

Leider schaffe ich es aber nicht (auch nach Lesen der hier einschlägigen 2 Beiträge) ein Bild via Telegram zu senden.

Mein Ziel wäre es den snapshot aus o.g. Link in der Telegram App dargestellt zu bekommen, wenn der Klingelsensor ausgelöst wird. Hat dies hier jemand schon geschafft? Wenn ja, wie? Ich habe schon alles versucht, aber es will nicht klappen.

Aktuell versuche ich folgendes ohne Erfolg (bekomme immer nur die Message ohne Snapshot):

Code: Alles auswählen

! Bild  SCHICKEN
string message = "Achtung Nachricht";
string chatid = "xxx"; ! chat_id des Empfängers
string botAPI = "xxxyyy"; ! API des eingerichteten Bots
string foto = "http://website:port/snapshot.jpg?user=username&pwd=pw";
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='@http://website:port/snapshot.jpg?user=username&pwd=pw");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message#"' -d chat_id="#chatid);

dtp
Beiträge: 10660
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Snapshot von Webcam an Telegram senden

Beitrag von dtp » 12.04.2016, 13:14

Hast Du es schon mal folgendermaßen versucht?

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k -u username:password https://api.telegram.org/bot"#botAPI#"/sendPhoto -F chat_id="#chatid#" -F photo='@http://website:port/snapshot.jpg");
Gruß,

Thorsten
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

BJMeatmasterM
Beiträge: 11
Registriert: 31.03.2016, 13:31

Re: Snapshot von Webcam an Telegram senden

Beitrag von BJMeatmasterM » 12.04.2016, 17:25

Hallo Thorsten,

es sieht jetzt so aus:

Code: Alles auswählen

string message = "Dies ist ein Test";
string chatid = "xxx"; ! chat_id des Empfängers
string botAPI = "xxxyyy"; ! API des eingerichteten Bots
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -d text='"#message#"' -d chat_id="#chatid);
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k -u username:pw https://api.telegram.org/bot"#botAPI#"/sendPhoto -F chat_id="#chatid#" -F photo='@http://url:port/snapshot.jpg");
Leider nur mit dem Erfolg, dass die Nachricht "Dies ist ein Test" ankommt, das Bild leider nicht.

BJMeatmasterM
Beiträge: 11
Registriert: 31.03.2016, 13:31

Re: Snapshot von Webcam an Telegram senden

Beitrag von BJMeatmasterM » 15.04.2016, 21:57

Hallo Zusammen,

es hat jetzt auch so geklappt, ohne RaspBerry und co. Einfach mit dem Script von XBit

Code: Alles auswählen

! +++++ Settings +++++
string msg = "Es wurde geklingelt";
string photo = "klingel.jpg";  ! ++++ hab ich so stehen lassen
string camurl = "http://websitedercam:8080/snapshot.cgi";
string chatid = "xxx";
string botAPI = "xxxyyy";

! +++++ Nachricht Senden +++++
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);

! +++++ Klingelbild von Haustür holen +++++
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget --http-user=username--http-password=geheim -O "#photo#" "#camurl#"");

! +++++ Klingelbild versenden +++++
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#"'");

Ich hatte blos einen Zahlendreher in der Bezeichnung der CUxD drin.

AndreasMG
Beiträge: 5
Registriert: 28.01.2016, 10:38

Re: Snapshot von Webcam an Telegram senden

Beitrag von AndreasMG » 02.07.2016, 13:19

Hallo, kann mir jemand bei diesem Thema weiterhelfen ?
Ich möchte einen Schnappschuss meiner Webcam per Telegram versenden, wenn die Haustürklingel betätigt wird. Installiert habe ich eine Foscam I8904W.

Das folgende Script funktioniert nicht:

Code: Alles auswählen

string msg = "Es wurde geklingelt";
    string photo = "/tmp/klingel.jpg"; 
    string camurl = "http://192.168.2.30/snapshot.cgi?user=XXXXXXXXX&pwd=&<ts>";
    string chatid = "123456789";
    string botAPI = "123456789ABCDEFG";

    ! +++++ Nachricht Senden +++++
    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);

    ! +++++ Klingelbild von Haustür holen +++++
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -O "#photo#" "#camurl#"");

    ! +++++ Klingelbild versenden +++++
    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#"'");
Wenn ich im Browser http://192.168.2.30/snapshot.cgi?user=XXXXXXXXX&pwd=& eingebe, dann klappts, das Homematic Script liefert im Ordner tmp aber ein Bild "klingel.jpg" mit 0 Byte Größe.
Bei einer uralten IP Cam (no name Produkt) funktioniert alles, daher gehe ich davon aus, dass es an der webcamconfig.ini im CUxD liegen muss. Ich hab aber keine Ahnung, was ich da anpassen muss, es gibt da eine Zeile

Code: Alles auswählen

4 img   0 http://<ip>:<port>/snapshot.cgi?user=<user>&pwd=<pass>&<ts>
und die müsste doch eigentlich passen (?). Ich kann meine Foscam auch alternativ über http://<user>:<pass>@<ip>:<port>/snapshot.cgi? abfragen, im Browser funktioniert das im HM script nicht, die webcamconfig hat eine entsprechende Zeile

2 img 2 http://<user>:<pass>@<ip>:<port>/snapshot.cgi?

Falls hier jemand einen (entscheidenden ?) Tip für mich hat, wäre das super.

VG
Andreas
Zuletzt geändert von alchy am 02.07.2016, 19:52, insgesamt 1-mal geändert.
Grund: Code bitte in Codetags posten

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 » 02.07.2016, 19:55

AndreasMG hat geschrieben:daher gehe ich davon aus, dass es an der webcamconfig.ini im CUxD liegen muss. Ich hab aber keine Ahnung, was ich da anpassen muss,
Nö, das hat damit nun gleich mal gar nichts zu tun.

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.

AndreasMG
Beiträge: 5
Registriert: 28.01.2016, 10:38

Re: Snapshot von Webcam an Telegram senden

Beitrag von AndreasMG » 03.07.2016, 14:50

Wenn es nicht an der Konfig liegt, dann muss es ja irgendwas mit dem Kamera-Aufruf zu tun haben:

Ich habe jetzt in der Kommandozeile eingegeben:

Code: Alles auswählen

wget -O "/tmp/klingel.jpg" "192.168.2.30/snapshot.cgi?user=1234&pwd=5678"
und siehe da das funktioniert und im tmp Ordner wird ein fehlerfreies Bild abgelegt.
Protokoll:

Code: Alles auswählen

--2016-07-03 23:00:31--  http://192.168.2.30/snapshot.cgi?user=1234c&pwd=5678
Connecting to 192.168.2.30:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12637 (12K) [image/jpeg]
Saving to: `/tmp/klingel.jpg'

     0K .......... ..                                         100%  363K=0.03s

Aber: Wenn ich das so 1:1 in das Script kopiere funktioniert es nicht. Das Bild im tmp Ordner hat dann Größe 0 Byte und im Log steht beim wget der Exit Code (6), das wäre dann ja authorization failed.

Hat hier irgendwer eine Idee woran das liegen könnte ?
Zuletzt geändert von alchy am 03.07.2016, 23:45, insgesamt 2-mal geändert.
Grund: Code bitte in Codetags posten

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 » 03.07.2016, 20:17

So funktioniert es bei mir:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O '/tmp/klingel.jpg' 'http://192.168.2.7/tmpfs/snap.jpg?usr=<username>&pwd=<passwort>'");

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k 'https://api.telegram.org/bot<bot_api>/sendPhoto' -F chat_id=<chat_id> -F photo='@/tmp/klingel.jpg' -F caption='Es wurde geklingelt'");
Gruß,
Markus

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 » 03.07.2016, 23:55

Und am Besten die Zeilen von Braindead auf zwei Befehle im Programm auftrennen
und mittels "verzögert um" das versenden mit der 2. Zeile hinauszögern.

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.

AndreasMG
Beiträge: 5
Registriert: 28.01.2016, 10:38

Re: Snapshot von Webcam an Telegram senden

Beitrag von AndreasMG » 04.07.2016, 09:56

Hallo,

danke für die Tipps, hab es jetzt hinbekommen aber das Verhalten ist trotzdem etwas seltsam:
Ich hatte in dem Script ja Variablen verwendet und daran scheint es zu liegen. Wenn ich die wget Zeile ändere und da direkt die Strings "tmp\klingel.jpg" und die Cam Adresse angebe, dann funktionierts.
Da es aber bei einer anderen Kamera mit den Variablen funktioniert scliesse ich einen Syntaxfehler in der Zeile eigentlich aus.

Egal, hauptsache es klappt :D

Andreas

Antworten

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