Moin,
ich habe eine IP Kamera, die mit dem Befehl http://<IP>/web/cgi-bin/hi3510/param.cgi?cmd=snap&-chn=2&-continue=1&-getpic
ohne Passworteingabe ein Standbild (jpg) liefert.
Leider funktioniert das nicht im Modul IPCAM.
Internals sehen so aus:
Internals:
AUTHORITY <meine IP>
DEF <meine IP>
NAME IPCam
NR 597
SEQ 0
STATE Defined
TYPE IPCAM
Readings:
2016-01-15 20:15:27 last IPCam_snapshot.jpg
2016-01-15 20:15:27 snapshot1 IPCam_snapshot_1.jpg
2016-01-15 20:15:27 snapshots 0
Attributes:
loglevel 6
path web/cgi-bin/hi3510/param.cgi?cmd=snap&-chn=1&-continue=1&-getpic
room Cam
storage /opt/fhem/snapshots
(Die Readings stammen testweise von einer anderen Kamera, die standardmäßig mit snapshot.cgi usw. angesprochen werden kann.)
Trotz loglevel 6 bzw auch mal verbose 5 steht nichts im Log außer:
...1: IPCAM IPCam Wrong or not supported image format: unknown
Tja...hat jemand eine Idee, was ich tun muss, damit auch diese Kamera mit IPCAM funktioniert?
Danke und Gruß
Uwe
Hallo Uwe,
das "Problem" bei der Kamera ist wahrscheinlich, dass bei dem Aufruf über die von dir genannte URL nicht auf die JPG-Datei direkt, sondern auf eine Webseite zugegriffen wird. Du kannst es prüfen, indem Du nach Aufruf der URL dir den Quellcode der Webseite anschaust. Dort wirst Du dann wohl den temporären Pfad zu der JPG-Datei sehen.
Ungefähr so:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
</head>
<body>
<img src="../../../tmpfs/snap_tmpfs/20160118/IMG001/IMG_chn2_TIMER_MNG_20160118212343_028.jpg" />
</body>
</html>
Du könntest vielleicht die Kamera als html-Code folgendermaßen einbinden:
define CamPic weblink htmlCode <img id="Cam" src="http://<IP>:<Port>/web/cgi-bin/hi3510/param.cgi?cmd=snap&-chn=2&-continue=0&-getpic"></img>
'id="Cam"' ist für css, so kannst Du die Größe, u.s.w. einstellen.
oder als Stream
define CamStream weblink htmlCode <img id="Cam" src="http://<IP>:<Port>/web/cgi-bin/hi3510/snap.cgi?&-getstream-chn=2"></img>
Gruß
OTi
Ok, Danke, ist genau so wie von Dir beschrieben. Das Einbinden per weblink hatte ich schon mal getestet, funktioniert auch nicht. Somit taugt das Teil offenbar also nicht für FHEM. Dann weiß ich nun zumindest das...
Gruß
Uwe
Hallo,
was hast Du denn genau vor?
Das Einbinden per Weblink funktioniert bei mir.
Inzwischen kann ich auch z. B. einzelne Bilder versenden, habe ich über ein Bash-Skript und wget gelöst.
Gruß
OTi
Zitat von: oti am 19 Januar 2016, 17:28:58
was hast Du denn genau vor?
Ich wollte meine "alte" IP-Cam an der Haustür durch eine kleinere Dom-Kamera ersetzen. Ich lasse mir das Kamerabild beim Klingeln an der Haustür per Telegram auf's Handy schicken, funktioniert auch alles, nur meine alte Cam hat eine besch... Infrarotsicht bei Nacht. Daher muss eine neue ran.
Die bisherige arbeitet problemlos mit IPCAM zusammen, reagiert auf snapshot.cgi usw. Leichtsinnigerweise dachte ich, dass das ja alle IP-Kameras können müssten, hab mich aber böse getäuscht. Da ich für den Spielkram nicht so viel Geld ausgeben wollte, hab ich nun ein paar Kameras bis 120€ getestet und nur eine kann wenigstens ein Standbild erzeugen (IPCC-D09-W) und kommt ohne ActiveX und Quicktime aus.
Vielleicht kennt jemand eine andere Dom-Kamera in dem Preissegment, die das auch kann und dann auch noch mit IPCAM zusammenarbeitet...oder eine Lösung für meine Cam?
Danke und Gruß
Uwe
Bei mir läuft FHEM auf einem Raspi. Ich lasse mir beim Klingeln via Pushbullet einen Link schicken, der das Bild der Kamera beinhaltet. Das habe ich folgendermaßen gelöst:
Über ein Skript hole ich mir den temporären Pfad und baue mir so den Pfad zu dem Bild zusammen. Das Bild kopiere ich dann per wget in ein Verzeichnis von fhem. Darauf kann ich dann sogar einfach per http zugreifen, oder den Link dahin eben verschicken.
Das Skript klingel.sh (abgelegt im fhem-Verzeichnis):
#!/bin/sh
rm -f /opt/fhem/www/images/tuer.jpg
PIC=$(wget -O - 'http://192.168.XX.XX/bin/cgi-bin/hi3510/param.cgi?cmd=snap&-chn=2' | cut -c12-86)
wget -O /opt/fhem/www/images/tuer.jpg 'http://192.168.XX.XX'$PIC
Was macht das Skript:
- Bild löschen
- Pfad aus der Webseite holen und zuschneiden
- Bild tuer.jpg in das Verzeichnis /opt/fhem/www/images einfügen
Das Skript starte ich über folgendes define und verschicke dabei auch die Pushbullet-Meldung:
define noti_Klingel_Tuer notify Klingel_Tuer:on {\
system ('/opt/fhem/klingel.sh&');;\
fhem ("set Pushmsg link http://DYNDNS.ORG/fhem/images/tuer.jpg | Klingel Haustür");;\
}\
}
Hilft das weiter?
Gruß
OTi
Hervorragend!
Das hilft nicht nur weiter, das war die Lösung ;D Musste ich für meine Belange (versenden mit TelegramBot) etwas abwandeln, aber wenn man eine Richtung hat, dann geht's.
Vielen Dank
Gruß
Uwe
Nachtrag: Da das notify zu schnell war (bevor das neue Bild gespeichert werden konnte, hat das notify schon das alte Bild versendet) und ich eh fast alle Notifys auf DOIF umgestellt habe, hier nun das Ergebnis als DOIF mit Verzögerung. So funktioniert es nun problemlos.
Internals:
DEF ([dmy_Klingel_Tuer] eq "on") ({system ("/opt/fhem/FHEM/klingel.sh&")}) (set myTeleBot sendImage /opt/fhem/snapshots/tuer.jpg) DOELSE
NAME DI_Klingel_Tuer
NR 631
NTFY_ORDER 50-DI_Klingel_Tuer
STATE cmd_2
TYPE DOIF
Readings:
2016-01-24 09:02:24 Device dmy_Klingel_Tuer
2016-01-24 09:02:24 cmd_event dmy_Klingel_Tuer
2016-01-24 09:02:24 cmd_nr 2
2016-01-24 09:02:24 e_dmy_Klingel_Tuer_STATE off
2016-01-24 09:02:24 state cmd_2
2016-01-24 15:08:07 wait_timer no timer
Condition:
0 InternalDoIf('dmy_Klingel_Tuer','STATE','') eq "on"
Devices:
0 dmy_Klingel_Tuer
all dmy_Klingel_Tuer
Do:
0:
0 {system ("/opt/fhem/FHEM/klingel.sh&")}
1 set myTeleBot sendImage /opt/fhem/snapshots/tuer.jpg
1:
0
Helper:
globalinit 1
last_timer 0
sleeptimer -1
Internals:
0 dmy_Klingel_Tuer:STATE
all dmy_Klingel_Tuer:STATE
Itimer:
State:
Attributes:
do always
room Mail
wait 0,1
Für meine Kamera habe ich folgendes Skript erstellt:
#!/bin/sh
rm -f /opt/fhem/www/images/mypic.jpg
PIC=$(wget -O - 'http://myuser:mypasswd@192.168.xxx.xx/jpg/image.jpg' | cut -c12-86)
wget -O /opt/fhem/www/images/mypic.jpg 'http://192.168.xxx.xx0'$PIC
Bei Eingabe von 'http://myuser:mypasswd@192.168.xxx.xx/jpg/image.jpg' im Browser erscheint auch das gewünschte Bild.
Wenn ich das Skript starte, scheint es an der Authentifizierung zu scheitern:
HTTP request sent, awaiting response... 401 Unauthorized
Was mache ich falsch?
Es kommen einige Zeilen mit:
wget: invalid option -- '▒'
wget: invalid option -- '}'
...
Wenn das funktioniert, ist das eine sehr einfache, aber auch ebenso hervorragende Lösung. Das würde meine aktuellen Probleme mit dem IPCAM-Modul optimal lösen.
ich habe es ohne Skript gelöst. Ein Skript für zwei Zeilen ist vielleicht überdimensioniert.
system ("wget -O " .$Pfad. " http://user:password\@192.168.xxx.xx:80/jpg/image.jpg > /dev/null 2>&1");
und
my $Pfad = "/opt/fhem/www/images/mysnapshot.jpg";
Das ganze befindet sich in einer sub, die in 99_myUtils.pm abgelegt ist.
In die IPCAM-Einbindung habe ich sehr viel mehr Zeit gesteckt und habe die Probleme nicht in den Griff bekommen. Diese einfache Lösung ist sehr stabil.
Das ursprüngliche Ziel war es ein Bild von einer IP-Kamera auf das Handy zu senden. Das geht mit IPCAM auch. Wenn das Netzwerk mal nicht schnell genug ist, wirft IPCAM aber eine Fehlermeldung. Ab da fingen meine Probleme an:
https://forum.fhem.de/index.php/topic,73545.0.html (https://forum.fhem.de/index.php/topic,73545.0.html)
zwar ein älterer thread.....jedoch.....habe ich nun auch eine kamera die ein bild via
http:// <servername>/web/cgi-bin/hi3510/param.cgi?cmd=snap&-getpic&-chn=2
liefern soll, welches mit IPCAM nicht funktioniert, da es html mit eingebettetem jpg ist.
Da Onvif so nicht klappen würde, habe ich den sniffer angeschmissen, und geschaut wie über Onvif die bilder geholt werden
http:// <servername>/web/cgi-bin/hi3510/snap.cgi?&-getstream&-sn
so klappts auch mit IPCAM.
hth
Hallo Zusammen.
Ich habe mir eine IP-Kamera von CTronics gekauft.
http://www.ctronicssecuritycameras.com/shop/wifi-720p-ip-camera/150-wide-viewip-cameractronics-wifi-wireless-security-camera-surveillance-dome-camera-vandalproofaudiohd-720pnight-visionmotion-detectemail-alertpcphonetabletcms-remote16g-sd-includ/
(Bei Amazon für 80€ https://www.amazon.de/gp/product/B0744JNLLX/ref=oh_aui_detailpage_o04_s00?ie=UTF8&psc=1)
Bisher funktioniert alles ganz gut mit der App des Herstellers und mit iSpy.
Ich würde gerne die IP-Kamera in FHEM einbinden, sodass ich wie bei euch ein Bild zugeschickt bekomme.
Das Kamerabild in iSpy erhalte ich über folgenden Link:
IPKamera mit Wizard
Ich habe festgestellt, dass ich ein Bild bekomme, wenn ich statt Ctronics -- HiSilicon RTSP(TCP) DVR als Hersteller auswähle.
rtsp://admin.admin@192.168.xxx.xxx:554/11 (Dieser Link funktioniert auch im VLC-Player)
(Zur Sicherheit verwende ich HIER die Default Passwörter und die gekürzte IP.)
Kann mir jemand weiterhelfen?
Meine Config sieht derzeit so aus:
define IPKAMERA IPCAM 192.168.xxx.xxx:554/11
attr IPKAMERA delay 0
attr IPKAMERA group Kamera
attr IPKAMERA icon it_camera
attr IPKAMERA path rtsp://admin:admin@192.168.178.105:554/11
attr IPKAMERA room IP Kamera
attr IPKAMERA snapshots 1
attr IPKAMERA storage /opt/fhem/www/snapshots/cam1