Klingel soll Nachricht mit Foto von Webcam per Telegram schicken

Begonnen von e3xtreme, 13 Januar 2016, 14:50:49

Vorheriges Thema - Nächstes Thema

e3xtreme

Hallo,

Ich komme gerade aus dem Telegram Thread
Mein Plan ist es durch drücken der Klingel sofort ein Webcambild per Telegram ans Handy zu schicken,... funktioniert praktisch auch schon ziemlich gut, nur ist leider scheinbar der Schreibprozess des Pi zu langsam, sodass Telegram das zuletzt gespeicherte Bild abschickt, also das vor dem Klingeln gespeicherte und nicht das neue.

Wie kann ich da eine Schleife mit Abfrage nach der Erstellung der Datei machen, die Datei wird in meinem Fall ja überschrieben???

Habs mit sleep zwischen erstellen und abschicken versucht bin jetzt schon bei sleep 10 und viel mehr möcht ich nur ungern haben, denn sonst klingelt es wirklich stark verzögert...

oder gibt es eine Methode das ganze zu beschleunigen? Prioritäten oder sowas?? Kann ja nicht sein dass der 10 sekunden zum speichern eines Bildes braucht... :o

Klingel_Oben:.*on.* {fhem("get Cam_Gang image");

sleep 10;

fhem("set Telegram sendImage ".'@@user1 @user2'." /opt/fhem/www/snapshots/Cam_Gang_snapshot.jpg Es hat gerade oben geklingelt")}


Danke, lg

Otto123

Hallo,

Du willst das Bild quasi als "Klingelton" haben, oder warum ist das mit den 10 sec wichtig?

Ansonsten würde ich sagen mach ein DOIF für das holen des Bildes und verzögere die Ausführung des Telegram mit wait.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

e3xtreme

Zitat von: Otto123 am 13 Januar 2016, 16:50:41

Du willst das Bild quasi als "Klingelton" haben, oder warum ist das mit den 10 sec wichtig?


;D.. nein

das verzögert das Absenden des Bildes um 10 Sekunden, bringt aber eh nix...

Naja mein Fhem erstellt durch den Befehl ein Bild und überschreibt das alte Bild, wie kann ich das mit DOIF checken, das Bild heißt ja gleich... oder kann ich irgendwie die Erstellzeit abfragen, mal abgesehen davon, dass ich nicht weiß wie lang er zum Erstellen braucht.

was ist der unterschied zwischen sleep und wait? :o

danke

Otto123

http://fhem.de/commandref_DE.html#DOIF_wait
define Tipp DOIF ([Klingel_Oben] eq "on") (get Cam_Gang image) (set Telegram sendImage ".'@@user1 @user2'." /opt/fhem/www/snapshots/Cam_Gang_snapshot.jpg Es hat gerade oben geklingelt)
attr Tipp wait 0,10



Wie Du jetzt wirklich das Bild checkst weiß ich jetzt auch nicht. Aber das löst Deinen Ansatz etwas übersichtlicher.

Du hast geschrieben: mehr wie 10 sec willst Du nicht warten, aber was passiert dadurch? Was ist mit 11 oder 15 oder 16 ? Was ist schlimm daran. Versuch doch erstmal raus zu finden, wie lange das mit dem Bild wirklich dauert.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ellert

Zitatdass ich nicht weiß wie lang er zum Erstellen braucht.

Die Zeit kannst Du messen.
Wenn es klingelt erstelle mit "touch start" eine Datei in Deinem Snapshotverzeichnis.
Dann mache ein "get Cam_Gang image".

Mit "stat start" und stat "Cam_Gang_snapshot.jpg" kannst Du Dir die genauen Zeitstempel ansehen und die Differenzzeit errechnen, dann hast Du die Antwort.
Wie lange dauert die Erstellung?

e3xtreme

Zitat von: Ellert am 13 Januar 2016, 18:40:31
Die Zeit kannst Du messen.
Wenn es klingelt erstelle mit "touch start" eine Datei in Deinem Snapshotverzeichnis.
Dann mache ein "get Cam_Gang image".

Mit "stat start" und stat "Cam_Gang_snapshot.jpg" kannst Du Dir die genauen Zeitstempel ansehen und die Differenzzeit errechnen, dann hast Du die Antwort.
Wie lange dauert die Erstellung?

Kann ich das einfach im Klartext reinschreiben in fhem, also ein notify das "touch start" ausführt?

e3xtreme

Zitat von: Otto123 am 13 Januar 2016, 17:52:27
http://fhem.de/commandref_DE.html#DOIF_wait
define Tipp DOIF ([Klingel_Oben] eq "on") (get Cam_Gang image) (set Telegram sendImage ".'@@user1 @user2'." /opt/fhem/www/snapshots/Cam_Gang_snapshot.jpg Es hat gerade oben geklingelt)
attr Tipp wait 0,10



Also damit führt er den 2. Befehl gar nicht erst aus....

Otto123

#7
Ja hast Recht mein Fehler: Der Klingelknopf müsste 10 sec gedrückt bleiben damit das funktioniert  ???

Wenn Du ein Log 1, ("Es klingelt") in Dein notify schreiben. Dann hast Du den Datumsstempel im Logfile. Den Zeit Stempel des Bildes hast Du ja im Bild.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ellert

#8
ZitatKann ich das einfach im Klartext reinschreiben in fhem, also ein notify das "touch start" ausführt?
Jain, touch sind Linuxbefehle, Du musst die Syntax beachten, wie hier beschrieben http://fhem.de/commandref_DE.html#command, also die Befehle in Anführungszeichen setzen. "stat" zeigt den Zeitstempel µs genau, ein Logeintrag ist nur sekundengenau. "stat start" und "stat /opt/fhem/www/snapshots/Cam_Gang_snapshot.jpg" kannst Du auch im Webfrontend in der Eingabezeile ausführen und im Logfile nachsehen.

Das müsste auch in der Eingabezeile klappen: "touch start";;get Cam_Gang image

viegener

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

e3xtreme

Zitat von: viegener am 14 Januar 2016, 22:02:28
Schau doch mal, ob die Lösung hier funktioniert, da Du die Anfrage ja mehrfach gestellt hast.

http://forum.fhem.de/index.php/topic,38328.msg391119.html#msg391119

Hallo danke für den Tipp, es klappt zwar jetzt so wie es soll, jedoch muss man auf der Klingel gefühlt um einiges länger drauf bleiben, dass es überhaupt klingelt, kann es sein, dass er da einen Befehl wegschmeißt, weil er grad zwei notifies ausführen möchte??

e3xtreme

Zitat von: Ellert am 14 Januar 2016, 09:42:26
Das müsste auch in der Eingabezeile klappen: "touch start";;get Cam_Gang image

Nö tuts nicht, ohne den Teil nach den ;; schreibt er "forbidden command" und mit schreibt er "Unknown command"... :o

viegener

Zitat von: e3xtreme am 15 Januar 2016, 00:01:49
Hallo danke für den Tipp, es klappt zwar jetzt so wie es soll, jedoch muss man auf der Klingel gefühlt um einiges länger drauf bleiben, dass es überhaupt klingelt, kann es sein, dass er da einen Befehl wegschmeißt, weil er grad zwei notifies ausführen möchte??

Ich denke dazu müsstest Du Dir erstmal die Events im Eventmonitor anschauen. Wenn ich Deinen Notify richtig verstehe, wird der doch getriggert, wenn man den Knopf drückt. Wird das wiederholt gesendet oder nur einmalig?

Wenn das beim ersten Drücken und nur einmalig ausgelöst wird ist mir unklar, warum man da länger drücken muss bzw wie da mehrere notfies entstehen sollten. "Weggeworfen" werden Befehle nicht.

Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Ellert

ZitatNö tuts nicht, ohne den Teil nach den ;; schreibt er "forbidden command" und mit schreibt er "Unknown command"... :o
Welches Betriebssystem verwendest Du?

e3xtreme

Zitat von: viegener am 15 Januar 2016, 00:13:01

Wenn das beim ersten Drücken und nur einmalig ausgelöst wird ist mir unklar, warum man da länger drücken muss bzw wie da mehrere notfies entstehen sollten. "Weggeworfen" werden Befehle nicht.

Johannes

Hah...
Ich hab den Fehler gefunden, der ws. auch das lange Delay verursacht hat...
Das Logfile war bereits 78MB groß, weil sich ein andres Notify in Endlosschleife Ein-und ausgesachalten hat... das zu öffnen verursachte diese Verzögerung
Darum ws. auch das Problem von vorher, jetzt klappt es perfekt, vielen Dank nochmal...