Hallo Leute,
bislang habe ich Martin Fischer's Modul IPCAM benutzt um meine IPCAM zu steuern. Um ein Livebild zu sehen hatte ich schon immer eine "eigene Lösung". Nachdem meine neue Instar IN-6012 allerdings neue/komplett andere Befehlssätze hat, kann ich das IPCAM Modul nicht mehr nutzen. Daher habe ich mir jetzt zur Steuerung inkl. Livebildansicht ein eigenes "Skript" gebastelt. Ihr müsst ggf. eure Befehlssätze anpassen / user und passwort ändern, aber nachdem ich mir schon die Arbeit gemacht habe, teile ich gerne ;-)
Das hier in die fhem.cfg:
define IPC_WZ_Videotest weblink htmlCode <table><tr><td valign="middle"><a target="IPC_WZ" onclick="window.open('/fhem/images/ipcam.html','IPCam Wohnzimmer', 'width=720,height=480,scrollbars=no,toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10')" href=''><img src="/fhem/icons/it_camera.svg" border="0" height="32" width="32">Videostream Wohnzimmer anzeigen</a></td></tr></table>
attr IPC_WZ_Videotest room IP-Camera
Nachdem ich es nicht geschafft habe, die zur Ansicht/Steuerung notwendige html-datei in einem vernünftigen Pfad abzulegen, so dass ich direkt von fhem darauf zugreifen kann, müsst ihr folgenden Code in ein leeres Textdokument kopieren und als ipcam.html im ordner fhem/www/images ablegen (nicht so schön vom Pfad her, aber hilft nix ;-).
Und hier der Quälcode:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>IPCAM...by docb</title>
<style type="text/css">
body {font-family: arial, verdana, sans-serif;}
a {color:#CC0000; text-decoration: none; font-weight: bold;}
.invisible { visibility:hidden; }
.visible { visibility:visible; }
</style>
<script type="text/javascript" language="JavaScript">
function sichtbar()
{
if (document.getElementById('hd1').className == "invisible"){document.getElementById('hd1').className = "visible";}else{document.getElementById('hd1').className = "invisible";}
if (document.getElementById('hd2').className == "invisible"){document.getElementById('hd2').className = "visible";}else{document.getElementById('hd2').className = "invisible";}
if (document.getElementById('hd3').className == "invisible"){document.getElementById('hd3').className = "visible";}else{document.getElementById('hd3').className = "invisible";}
}
</script>
</head>
<body>
<h1>IP-CAM</h1>
<iframe src="http://admin:passwort@192.168.x.x/cgi-bin/hi3510/mjpegstream.cgi?-chn=12" width="640" height="352" name="Video" border="0" style="border:1px black solid"></iframe><br>
<iframe src="" width="80" height="30" name="Message" style="visibility:hidden;display:none"></iframe>
<table width="640">
<tr>
<td>Manuelle Steuerung </td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=ptzctrl&-step=1&-act=up&-speed=2&-usr=admin&-pwd=passwort" target="Message">Hoch</a></td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=ptzctrl&-step=1&-act=down&-speed=2&-usr=admin&-pwd=passwort" target="Message">Runter</a></td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=ptzctrl&-step=1&-act=left&-speed=2&-usr=admin&-pwd=passwort" target="Message">Links</a></td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=ptzctrl&-step=1&-act=right&-speed=2&-usr=admin&-pwd=passwort" target="Message">Rechts</a></td>
</tr><tr>
<td>Positionssteuerung </td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=preset&-act=goto&-number=1&-usr=admin&-pwd=passwort" target="Message">Position 1</a></td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=preset&-act=goto&-number=2&-usr=admin&-pwd=passwort" target="Message">Position 2</a></td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=preset&-act=goto&-number=3&-usr=admin&-pwd=passwort" target="Message">Position 3</a></td>
<td></td>
</tr><tr>
<td><a onclick="sichtbar()" style="font-weight: normal">Positionsspeicherung</a> </td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=preset&-act=set&-status=1&-number=1&-usr=admin&-pwd=passwort" target="Message" class="invisible" id="hd1">Position 1</a></td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=preset&-act=set&-status=1&-number=2&-usr=admin&-pwd=passwort" target="Message" class="invisible" id="hd2">Position 2</a></td>
<td><a href="http://192.168.x.x/cgi-bin/hi3510/param.cgi?cmd=preset&-act=set&-status=1&-number=3&-usr=admin&-pwd=passwort" target="Message" class="invisible" id="hd3">Position 3</a></td>
<td></td>
</tr>
</table>
</body>
</html>
Für Verbesserungsvorschläge bin ich offen ;-)
Viele Grüße
Doc
Ist das hier beschriebene Vorgehen immer noch der empfohlene modus operandi für die Einbindung von live-Bilder einer webcam?
Hey,
also bei mir sieht das so aus in der fhem.cfg
define ipcamI weblink htmlCode <img width="640" height="480" src="http://xxxxxxxxxx/videostream.cgi?user=XXXX&pwd=XXXX&resolution=64&rate=0">
attr ipcamI room 02_Security
die x und X muss man natürlich anpassen aber das zeigt bei meiner Instar ein Live Bild an
=> das ganze hab ich noch in der Tablet UI => wo ich die Cam auch steuern kann
das sieht dann ungefähr so aus:
<li class="halbTransparent" data-row="2" data-col="5" data-sizex="3" data-sizey="2">
<header>CAM I</header>
<img src="http://xxxxxxx/videostream.cgi?user=XXXXX&pwd=XXXXX&resolution=64&rate=0" height="90%" wight="100%" border="0">
</img src>
</li>
<li class="halbTransparent" data-row="2" data-col="8" data-sizex="1" data-sizey="2">
<header>CAM I</header>
<div class="centered container">
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 1">1</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 2">2</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 3">3</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 4">4</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 5">5</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 6">6</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 7">7</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 8">8</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 9">9</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 10">10</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 11">11</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 12">12</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 13">13</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 14">14</div>
<div data-type="push" data-icon="" data-device="CAM_I" data-set-on="pos 15">15</div>
</div>
</li>
Zitat von: AET_FHEM am 26 Juli 2016, 15:26:56
=> das ganze hab ich noch in der Tablet UI => wo ich die Cam auch steuern kann
Das entzieht sich meinem Horizont... Wie gibst du die Kommandos zur Steuerung weiter?
Hey,
die CAM_I ist im FHEM ganz normal
mit dem Modul IPCAM angelegt
define CAM_I IPCAM XXX.XXX.XXX.XXX
in dem Modul kann man die Positionen definieren mit dem Attribut cmdPos01 - 15 :-)
und schon klappts ;-) => meine Cams Instar und Foscam
cmdPos01 command=31
cmdPos02 command=33
cmdPos03 command=35
cmdPos04 command=37
cmdPos05 command=39
cmdPos06 command=41
cmdPos07 command=43
cmdPos08 command=45
cmdPos09 command=47
cmdPos10 command=49
cmdPos11 command=51
cmdPos12 command=53
cmdPos13 command=55
cmdPos14 command=57
cmdPos15 command=59
define ipcamI weblink htmlCode <img width="640" height="480" src="http://xxxxxxxxxx/videostream.cgi?user=XXXX&pwd=XXXX&resolution=64&rate=0">
Obwohl ich mein User und Passwort eingegeben habe, fragt meine INSTAR 6012 trotzdem nochmal User+Passwort in einem Fenster ab. Nach deren Eingabe sehe ich nur einen Platzhalter für eine Graphik. Aber weder ein Bild der Kamera geschweige ein Stream. :-\
und mit meiner Axis auch nicht :-\
Moin Alcamar
Sehe mal hier : http://www.instar.de/faq_cgi (http://www.instar.de/faq_cgi) (Liste aller CGI Befehle (HD)/Liste aller CGI Befehle (VGA))
Vllt Hilft es dir weiter.
Denn was ich beim überfliegen gesehen habe ist die Reihenfolgen http://xxxxxxxxxx/videostream.cgi?user=XXXX&pwd=XXXX anders.
Kann mir jemand eine Info geben wie ich das Bild um 90 Grad drehen kann? Die Kamera selbst dreht nur um 180. Vielleicht ein passendes HTML Attribute?