Snapshot von Webcam an Telegram senden

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Snapshot von Webcam an Telegram senden

Beitrag von Xel66 » 28.10.2019, 11:33

alchy hat geschrieben:
28.10.2019, 11:29
Einspruch. Ist noch nicht bewiesen. :wink:
Hmmm... Sorry, aber ich würde aber die Aussage...
Hugo Oberstein hat geschrieben:
28.10.2019, 10:04
Ich bekomme nur bei der Klingel die Fehlermeldung "invalid value" und kann das Ganze dann nicht eintragen, speichern oder aktivieren.
... genau so interpretieren. Wenn die Klingel nichts abspeichern kann oder das URL-Format oder den Inhalt wegen vermutlich eines Syntax-Fehlers mit einer Fehlermeldung ablehnt, dann glaube ich nicht, dass die Ursache bei der CCU zu suchen ist. Aber Du hast Recht, bewiesen ist das nicht. :wink:

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

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 » 28.10.2019, 11:49

Er hat augenscheinlich 2 Möglichkeiten einen event loszuschicken / einzutragen.
Mein Versuch bezieht sich auf den "Einzeilenevent Türklingel".

Ist nicht einfach, wenn man nicht selber davor davor sitzt. Da die Klingel aber http events schicken kann, ist ein zusätzlicher Hardwarekauf *IMHO* unnötig.

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.

Hugo Oberstein
Beiträge: 266
Registriert: 05.10.2019, 21:17
Hat sich bedankt: 110 Mal
Danksagung erhalten: 2 Mal

Re: Snapshot von Webcam an Telegram senden

Beitrag von Hugo Oberstein » 28.10.2019, 19:00

Hallo ihr beiden,
danke noch mal, dass ihr bereit seid, mir zu helfen.
Ich habe nun das Fehlerprotokoll der CCU angesehen. Zum Zeitpunkt des Klingels 18:47 steht nur im hmserver.log folgendes

Code: Alles auswählen

Oct 28 18:47:33 de.eq3.cbcs.devicemanagement.TransactionManager INFO  [vert.x-eventloop-thread-0] Transaction State: true | Size: 1 
Oct 28 18:47:37 de.eq3.cbcs.devicemanagement.TransactionManager INFO  [vert.x-eventloop-thread-0] Transaction State: true | Size: 1 
Bei den anderen steht folgendes , aber ich glaube, das gehört zu meiner DECT200 der Fritzbox.

Code: Alles auswählen

Oct 28 18:47:54 homematic-ccu2 local0.err ReGaHss: ERROR: ScriptRuntimeError: Status=dom.GetObject('CUX2801003:6-Schaltzustand').State("1") [ExecError():iseESPexec.cpp:12723]
Allerdings habe ich was anderes herausgefunden: Wenn ich im normalen HTTP Event die Felder eintrage, ist mir aufgefallen, dass gar nicht die ganze Zeile übernommen wird.

Der Teil ".ProgramExecute()" fehlt, weil offenbar zu wenig Zeichen da sind.

Ich kann aber auch nicht das Feld "Anfrage" Leer lassen und dann die Werte als zusätzliche Parameter oder zusätzlichen Wert eingeben.
Ich möchte euch jetzt aber auch nicht weiter mit diesem Problem belästigen. Ich denke, es liegt an der Firmware der Klingel.
Dateianhänge
2.PNG
Zuletzt geändert von alchy am 28.10.2019, 20:45, insgesamt 1-mal geändert.
Grund: Code in Codetags posten

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Snapshot von Webcam an Telegram senden

Beitrag von Xel66 » 29.10.2019, 02:03

Hugo Oberstein hat geschrieben:
28.10.2019, 19:00
Der Teil ".ProgramExecute()" fehlt, weil offenbar zu wenig Zeichen da sind.
Dann bring doch den fehlenden Befehl in einem geeigneten Feld der für diesen Zweck vorgesehenen Felder "Zusätzlicher Parameter", "Zusätzlicher Wert" oder "Zusätzlicher Body" unter. Ich würde eines er ersten beiden Felder versuchen. Aber vorher sicherstellen, ob die fehlenden Zeichen nicht doch in der Zeile vorhanden sind und nur wegen des begrenzt zur Verfügung stehenden Darstellungsbereiches nach außerhalb des sichtbaren Bereichs verschoben wurden.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Hugo Oberstein
Beiträge: 266
Registriert: 05.10.2019, 21:17
Hat sich bedankt: 110 Mal
Danksagung erhalten: 2 Mal

Re: Snapshot von Webcam an Telegram senden

Beitrag von Hugo Oberstein » 29.10.2019, 07:31

Danke, das hatte ich auch schon probiert in verschiedenen Kombinationen. Denn das Feld "Anfrage" darf nicht leer sein. Also muss da zumindest ein Parameter drin stehen, nur stellt sich die Frage, an welcher Stelle des Befehls trenne ich ? Also habe ich alle möglichen Kombinationen (Trennstellen) ausprobiert, doch kein Bild kam an, obwohl teilweise "Test erfolgreich" auf der Klingelkonfigurationsseite gemeldet wurde. Da aber auch im Syslog der Klingel nicht außer dass ich mich an der Weboberfläche angemeldet habe steht, bringt mich das ja auch nicht weiter.
Habe daraufhin auch immer mal den log der CCU gecheckt - kein Ereignis wurde angezeigt und zwar in keinem der Fälle. Also komme ich auch an dieser Stelle nicht weiter.


Ich denke, es ist eine verbuggte Firmware der Klingel und daher werde ich an dieser Stelle damit aufhören. Ihr habt mir schon so geholfen aber wie Du Xel66 schon geschrieben hattest, kann man nicht die Bugs in der Gerätefirmware beheben.

Ich bestelle mir heute den Funksender als Trigger und hoffe, dass der dann funktioniert. Wenn der Hersteller mal ein Update herausbringt, dann kann ich es ja noch mal mit dem HTTP Event probieren , um den Duty Cycle zu schonen.

Nochmals Danke für die Hilfe.

Hugo.

Tobinsky!
Beiträge: 6
Registriert: 29.10.2017, 21:12

Re: Snapshot von Webcam an Telegram senden

Beitrag von Tobinsky! » 19.11.2019, 01:15

Hallo und guten Morgen.

Also die Sache mit dem Verzögern und in 2 getrennten Scripten - doof. Ich habe es auf dem Raspi so gelöst:

Code: Alles auswählen

! +++++ Bild mit Nachricht versenden +++++
string message = "Klingeltaster Bla Bla Bla !".ToUTF8();
string camurl = "http://192.168.0.109/cgi-bin/snapshot.cgi";
string chatid = "xxxxxxxxx";
string botAPI = "yyyyyyyyy:zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("date +%s%N | cut -b1-16");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
real photo=dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().ToFloat()/1000000;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O '/tmp/"#photo#".jpg' '"#camurl#"' && extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendPhoto -F chat_id="#chatid#" -F photo='@/tmp/"#photo#".jpg' -F caption='"#message#"' && rm '/tmp/"#photo#".jpg'");
Was macht denn typisch Linux: [Kamerabild holen] && [Kamerabild mit bla bla bla versenden] && [Kamerabild aus temp löschen]

In etwa so woltet Ihr das doch.

In dem Script ist der Bildername einmalig generiert und auch total wurscht weil die Datei danach eh wieder in den Müll geht...

Da es 3 von Haus aus unterschiedliche Aufrufe sind welche man mit && nacheinander setzt, führt Linux brav den ersten aus, nach Fertigstellung brav den 2. und danach brav den Löschbefehl...

Läuft bei mir wie ein Länderspiel. Vorausgesetzt der Kamerabildabruf funktioniert. Aber das kann man ja vorher im Browser testen. Achtung: der Internetexplorer ist für solche Testes scheiße hoch 10 (spreche aus Erfahrung) Ich teste das mit Google Chrome :)

Kerschten
Beiträge: 17
Registriert: 20.04.2017, 23:41

Re: Snapshot von Webcam an Telegram senden

Beitrag von Kerschten » 29.11.2019, 10:22

Hallo Tobinsky!,

diese Lösung war für mich perfekt, vielen Dank!

Ich habe Sie dennoch etwas anpassen müssen, da bei meiner China-Webcam von Bedee der Bildabruf zunächst nicht funktioniert hatte.
--> Danke auch an Alchy für die Codeschnipsel :-)

Außerdem musste ich den Port 80 in der Firewall der Rasperrymatic freigeben, damit der Zugriff auf das Bild der Webcam möglich war.

Code: Alles auswählen

! +++++ Bild mit Nachricht versenden +++++
string message = "Bewegung Kamera Terrasse".ToUTF8();
string camurl = "http://192.xxx.xxx.xx/tmpss/auto.jpg?usr=BENUTERNAME&pwd=PASSWORT";
string chatid = "123456789";
string botAPI = "xxxxxxxxx:yyyyyyyyyyyyyyyyyyyyyyyyyyy";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("date +%s%N | cut -b1-16");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
real photo=dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State().ToFloat()/1000000;
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget --auth-no-challenge -q -O /tmp/"#photo#".jpg '"#camurl#"' && extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendPhoto -F chat_id="#chatid#" -F photo='@/tmp/"#photo#".jpg' -F caption='"#message#"' && rm '/tmp/"#photo#".jpg'");

Wop57
Beiträge: 2
Registriert: 28.05.2020, 19:03
System: Alternative CCU (auf Basis OCCU)

Re: Snapshot von Webcam an Telegram senden

Beitrag von Wop57 » 13.06.2020, 12:09

Hallo Hugo,

ich habe auch eine ALP-600 und es ist mir gelungen beim Klingeln eine Systemvariable in des CCU zu setzen. Folgende Einstellungen in der ALP-600 führten zum Ziel:

Netzwerk - Http Ereignis
========================
Aktivieren: x
Protokoll: HTTP
Hostname: IP.VON.DEINER.CCU:8181
Anfrage: /irgendetwas.exe
Methode: GET
Zus. Parameter: Antwort
Zus. Wert: dom.GetObject("DEINE_SYSTEMVARIABLE").State(3)
(Name der Systemvariable darf keine Leerzeichen enthalten)

Ereignis Türklingeln
====================
HTTP Event: x
(Nur den Haken setzen und das Textfeld leerlassen)

Das Ausführen eine Programms ist mir auch nicht gelungen, weil der String im Feld "zusätzlicher Wert" zu lang ist.

Antworten

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