FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Roger54 am 28 Januar 2017, 11:16:11

Titel: Kamerabild per Telegram verschicken
Beitrag von: Roger54 am 28 Januar 2017, 11:16:11
Hallo FHEM-Gemeinde,

bin schon seit langer Zeit ein stiller Mitleser doch nun komm ich nicht weiter und brauch eure Hilfe da ich keine Lösung gefunden habe...

Bei Betätigung meiner Haustürklingel speichere ich ein Bild meiner IPCAM in /opt/fhem/www/snapshots/$DATETIME.jpg (DATETIME=`date +%Y%m%d%H%M%S), was auch soweit funktioniert. Mein Problem besteht jetzt nun darin, dass ich nicht weis wie ich das letzte Bild per Telegram verschicken kann. Meine Versuche haben leider nicht so funktioniert...

Hab mir aus einem vorhandenen Code eine Funktion gebastelt, doch leider bekomm ich leider die Fehlermeldung:
FAILED file :/opt/fhem/www/snapshots/20170128011242.jpg
: not found or empty


sub last_pix()
{
my $img = qx(ls -1t www/snapshots/* | sed -n '1p');

fhem( "set telegram sendImage /opt/fhem/$img" );
}
1;


Wenn ich aber den Befehl direkt in FHEM eingebe set telegram sendImage /opt/fhem/www/snapshots/20170128011242.jpg wird das Bild verschickt...
Bin etwas ratlos und hoffe ihr könnt mir weiterhelfen. Bin leider ein totaler Perlnoob... :D

Gruß Roger
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: Grafkox am 28 Januar 2017, 16:24:31
Hallo Roger,

ich habe es mit einer Ordnerüberwachung gemäß der Anleitung von Matthias umgesetzt:
FHEM-Tutorial Part 11: Benachrichtigung mit Bild bei Bewegung - IP-Kamera | haus-automatisierung.com
(https://www.youtube.com/watch?v=JeQ_xUSl5yo&t=523s)
Ist zwar etwas aufwendig, aber funktioniert bei mir tadellos.

Viele Grüße

Thorsten
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: viegener am 28 Januar 2017, 22:40:19
Zitat von: Roger54 am 28 Januar 2017, 11:16:11
Hallo FHEM-Gemeinde,

bin schon seit langer Zeit ein stiller Mitleser doch nun komm ich nicht weiter und brauch eure Hilfe da ich keine Lösung gefunden habe...

Bei Betätigung meiner Haustürklingel speichere ich ein Bild meiner IPCAM in /opt/fhem/www/snapshots/$DATETIME.jpg (DATETIME=`date +%Y%m%d%H%M%S), was auch soweit funktioniert. Mein Problem besteht jetzt nun darin, dass ich nicht weis wie ich das letzte Bild per Telegram verschicken kann. Meine Versuche haben leider nicht so funktioniert...

Hab mir aus einem vorhandenen Code eine Funktion gebastelt, doch leider bekomm ich leider die Fehlermeldung:
FAILED file :/opt/fhem/www/snapshots/20170128011242.jpg
: not found or empty


sub last_pix()
{
my $img = qx(ls -1t www/snapshots/* | sed -n '1p');

fhem( "set telegram sendImage /opt/fhem/$img" );
}
1;


Wenn ich aber den Befehl direkt in FHEM eingebe set telegram sendImage /opt/fhem/www/snapshots/20170128011242.jpg wird das Bild verschickt...
Bin etwas ratlos und hoffe ihr könnt mir weiterhelfen. Bin leider ein totaler Perlnoob... :D

Gruß Roger

Des Rätsels Lösung, dein Dateiname ($img) enthält nicht nur einen Dateinamen sondern auch ein Zeilenende und ein Zeilenende ist im Dateinamen nicht enthalten

sub last_pix()
{
my $img = qx(ls -1t www/snapshots/* | sed -n '1p');

$img =~ s/\s//mg;

fhem( "set telegram sendImage /opt/fhem/$img" );
}
1;


So könnte man unerwünschte Zeilenende entfernen (aber auch andere Leerzeichen auch innerhalb des Dateinamens !)

Auch wenn ich das vielleicht insgesamt anders lösen würde
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: Roger54 am 30 Januar 2017, 12:26:37
Zitat von: viegener am 28 Januar 2017, 22:40:19
Des Rätsels Lösung, dein Dateiname ($img) enthält nicht nur einen Dateinamen sondern auch ein Zeilenende und ein Zeilenende ist im Dateinamen nicht enthalten

sub last_pix()
{
my $img = qx(ls -1t www/snapshots/* | sed -n '1p');

$img =~ s/\s//mg;

fhem( "set telegram sendImage /opt/fhem/$img" );
}
1;


So könnte man unerwünschte Zeilenende entfernen (aber auch andere Leerzeichen auch innerhalb des Dateinamens !)

Auch wenn ich das vielleicht insgesamt anders lösen würde

Hi viegener,

vielen Dank für deine Hilfe! Es funktioniert nun!

Rein Interessehalber, wie würdest du es anders lösen? Habe eben das Problem, dass meine IPCam vom IPCAM-Modul nicht unterstützt wird...


Gruß Roger
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: Fixel2012 am 30 Januar 2017, 12:36:03
Habe leider auch das Problem, dass ich meine Cam nicht ins IPCAM Modul eingebunden bekomme.

Wie holst dir denn die Bider von der Cam?

Sorry, dass ich mich hier so einklinke  ::)

Gruß Fixel
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: Roger54 am 30 Januar 2017, 16:13:20
Zitat von: Fixel2012 am 30 Januar 2017, 12:36:03
Habe leider auch das Problem, dass ich meine Cam nicht ins IPCAM Modul eingebunden bekomme.

Wie holst dir denn die Bider von der Cam?

Sorry, dass ich mich hier so einklinke  ::)

Gruß Fixel

Hi Fixel,

kein Thema dafür ist doch das Forum da ;)
Da meine IPCam leider keine screenshoturl besitzt bzw ich keine gefunden hab erzeuge ich mit ffmpeg auf dem Raspberry einen snapshot aus dem rtsp stream der Cam.

Dafür musst du folgendes Skript als snapshot.sh in den Ordner /opt/fhem anlegen. Natürlich die IP und den Aufruf für den Stream von deiner Cam einsetzen.
#!/bin/sh
export
DATETIME=`date +%Y%m%d%H%M%S`
ffmpeg -loglevel fatal -i rtsp://192.168.2.XXX:XXX/user=XXXX_password=XXXX_channel=1_stream=1.sdp?real_stream -vframes 1 -r 1 /opt/fhem/www/snapshots/$DATETIME.jpg


in FHEM kannst du dann mit {system("sh /opt/fhem/snapshot.sh")} das Skript ausführen


Gruß Roger
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: Fixel2012 am 30 Januar 2017, 16:14:43
Zitat von: Roger54 am 30 Januar 2017, 16:13:20
Hi Fixel,

kein Thema dafür ist doch das Forum da ;)
Da meine IPCam leider keine screenshoturl besitzt bzw ich keine gefunden hab erzeuge ich mit ffmpeg auf dem Raspberry einen snapshot aus dem rtsp stream der Cam.

Dafür musst du folgendes Skript als snapshot.sh in den Ordner /opt/fhem anlegen. Natürlich die IP und den Aufruf für den Stream von deiner Cam einsetzen.
#!/bin/sh
export
DATETIME=`date +%Y%m%d%H%M%S`
ffmpeg -loglevel fatal -i rtsp://192.168.2.XXX:XXX/user=XXXX_password=XXXX_channel=1_stream=1.sdp?real_stream -vframes 1 -r 1 /opt/fhem/www/snapshots/$DATETIME.jpg


in FHEM kannst du dann mit {system("sh /opt/fhem/snapshot.sh")} das Skript ausführen


Gruß Roger
Danke dir!
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: 2P4u am 24 Mai 2017, 11:56:50
Hi Zusammen.
ich habe ne Frage an euch.
Mit http://192.168.188.53/tmpfs/snap.jpg?usr=Gast&pwd=**** bekomme ich ein Snapshot angezeigt.
Kann mir jemand sagen, wie ich ohne IPCAM (wird irgendwie nicht Unterstützt) ein aktuelles Bild in /opt/fhem/www/snapshots/ speichern kann?
Ich will das Bild per Telegram schicken, wenn jemand die Klingel drückt.

Danke und Grüsse Daniel
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: Amenophis86 am 24 Mai 2017, 12:58:02
Das wirst du mittels deiner Kamera lösen müssen. Es kommt drauf an, wo die das Bild speichert. Entweder direkt dort einstellen, dass es in deinem Ordner gespeichert wird, oder mittels eines Programms das Bild in deinen Ordner verschieben. Dafür liegen aber zu wenige Infos von dir vor.
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: steffen83 am 01 Juni 2017, 07:22:23
Hallo,

ich habe das wie folgt gelöst:
fhem ("set TelegramBot _msg Es hat geklingelt! Anbei ein Foto.");;
system('wget "http://xxx:yyy@192.168.160.30/bha-api/history.cgi?event=doorbell&index=1" -O /tmp/doorbirdbell.jpg');;
fhem ("set TelegramBot sendPhoto /tmp/doorbirdbell.jpg");;
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: 2P4u am 05 Juni 2017, 21:56:40
Zitat von: steffen83 am 01 Juni 2017, 07:22:23
Hallo,

ich habe das wie folgt gelöst:
fhem ("set TelegramBot _msg Es hat geklingelt! Anbei ein Foto.");;
system('wget "http://xxx:yyy@192.168.160.30/bha-api/history.cgi?event=doorbell&index=1" -O /tmp/doorbirdbell.jpg');;
fhem ("set TelegramBot sendPhoto /tmp/doorbirdbell.jpg");;


DANKE! Genau so hats geklappt. Sowas wollte ich haben. Perfekt!
Titel: Antw:Kamerabild per Telegram verschicken
Beitrag von: KernSani am 05 Juni 2017, 23:01:15
@Roger54: Könntest du noch [Gelöst] vor das Subject des ersten Posts schreiben?