FHEM Forum

FHEM - Hausautomations-Systeme => Unterstützende Dienste => Thema gestartet von: TobiasR am 16 Januar 2018, 21:18:49

Titel: Kamerabild auf Anforderung versenden (Telegram)
Beitrag von: TobiasR am 16 Januar 2018, 21:18:49
Hallo,
ich möchte auf Anforderung ein aktuelles Foto machen, es speichern und versenden.
Das dies nicht in der selben Sekunde funktioniert, habe ich verstanden und so habe ich eine Verzögerung von nun 10sec eingebaut.
Leider wird damit scheinbar der gesamte Prozess angehalten so dass ich kein aktuelles sondern immer das Bild der vorletzten Aufnahme erhalte.

Wie muss ich meinen Code anpassen?

Telegram:msgText.* {
        if ($EVTPART1 eq 'Aussen') {
        fhem("get WebCamAussen image");;
        sleep(10);;
        fhem("set Telegram sendImage \@Name_Vorname /opt/fhem/www/webcam/WebCamAussen_snapshot.jpg");;
        }
}

Titel: Antw:Kamerabild auf Anforderung versenden (Telegram)
Beitrag von: marvin78 am 16 Januar 2018, 21:20:54
Verwende fhem sleep und nicht Perl sleep (siehe commandref zu sleep). Alternativ kannst du auch ein zweites notify auf das Event des erstellten Bildes bauen (ich nehme an, es wird ein Event erzeugt).
Titel: Antw:Kamerabild auf Anforderung versenden (Telegram)
Beitrag von: TobiasR am 16 Januar 2018, 21:50:34
Hi,

Telegram:msgText.* {
        if ($EVTPART1 eq 'Aussen') {
        fhem("get WebCamAussen image");;
        sleep 2;;
        fhem("set Telegram sendImage \@Name_Vorname /opt/fhem/www/webcam/WebCamAussen_snapshot.jpg");;
        }
}

hat leider nichts gebracht.

Im notify bin ich ja bereits  :-\
Titel: Antw:Kamerabild auf Anforderung versenden (Telegram)
Beitrag von: marvin78 am 17 Januar 2018, 07:22:51
Du verwendest ja auch noch immer nicht FHEM-sleep.

Warum wechselst du überhaupt auf Perl Ebene und triggerst nicht direkt auf das Event "Aussen"?

Telegram:msgText.*Aussen.* get WebCamAussen image;sleep 2;set Telegram sendImage \@Name_Vorname /opt/fhem/www/webcam/WebCamAussen_snapshot.jpg

Ob das Event ggf. noch besser einschränkbar ist, musst du schauen. Wenn du unbedingt bei Perl bleiben möchtest, muss das sleep einfach direkt vor den 2. Befehl in den fhem sub Aufruf. NUR dann ist es nicht blockierend.

fhem("sleep 2;set Telegram sendImage \@Name_Vorname /opt/fhem/www/webcam/WebCamAussen_snapshot.jpg");

Code ist für das DEF.

Bitte die Doku aufmerksamer lesen.
Titel: Antw:Kamerabild auf Anforderung versenden (Telegram)
Beitrag von: Prof. Dr. Peter Henning am 17 Januar 2018, 11:16:05
So etwas würde ich überhaupt nicht mit FHEM machen.  Im Ordner contrib/DoorPi steht das Skript sendphoto.sh. Damit wird ein Telegram Bot angewiesen, sich das Foto zu holen.

LG

pah
Titel: Antw:Kamerabild auf Anforderung versenden (Telegram)
Beitrag von: TobiasR am 17 Januar 2018, 18:57:52
Hallo marvin78,

so hat es funktioniert!

Danke
Tobias
Titel: Antw:Kamerabild auf Anforderung versenden (Telegram)
Beitrag von: OppiM am 18 Januar 2018, 10:51:49
Hi,

ich hab das mit einem DOIF und dessen wait gelöst, wie verhält sich das in Bezug auf das Blockieren von FHEM?

([Fibaro_DO_Technik:"^closed$"])
   (get Camera1 image)
   (
      set Telegram sendImage @@<name> /opt/fhem/www/snapshots/camera1/Camera1_snapshot.jpg Es hat geklingelt,
      set Server INFO: Es hat geklingelt - Bild Camera 1 gesendet..
   )

Attributes:
   do         always
   wait       0,1


Gruß,
Michael