[gelöst] Helligkeit von Mobotix Kamera auslesen?

Begonnen von Thoffi1978, 10 Mai 2015, 20:30:11

Vorheriges Thema - Nächstes Thema

Thoffi1978

Hallo,
ich habe eine mobotix M22 Kamera die ganz viele Daten ausgibt.
Hat jemand eine Idee ob man die Angabe der Helligkeit verwenden kann?
Ich kann über
http://192.168.2.12/control/camerainfo
Die Status auslesen, siehe angehängte Datei.

Sensoren
Beleuchtung   204.6 lux
Signaleingang   Geschlossen (Low)
Kameratasten   Keine
Innentemperatur   33°C (91°F)

Vielen Dank
Hoffi

Thorsten Pferdekaemper

Hi,
schau Dir mal das Modul HTTPMOD an.
Gruß,
   Thorsten
FUIP

ChrisD

Hallo,

Statt die ganze Statusseite auszulesen und zu parsen kannst du auch die Helligkeit direkt (mit HTTPMOD, wie von Thorsten empfohlen) über
http://192.168.2.12/control/rcontrol?action=gettext&message=$(SEN.LXR) für den rechten und
http://192.168.2.12/control/rcontrol?action=gettext&message=$(SEN.LXL) für den linken Sensor abfragen.

Die Rückmeldung ist je nach Kamera und Firmware leicht unterschiedlich, bei einer M12/M22 kommt z.B.
Zitat21.2ERR - call not supported
wenn ein Wert verfügbar ist. Den Text 'ERR - call not supported' musst du abschneiden.
Bei neueren Kameras (M/Q/Dx4, M15)  kommt z.B.
Zitat14.8

Grüße,

ChrisD

Thoffi1978

Hallo,
der obere Link funktioniert  ;D
http://192.168.2.12/control/rcontrol?action=gettext&message=$%28SEN.LXR%29
Kann ich da auch Passwort und Benutzername mit einpflegen?

Zur Zeit kommt da eine elend lange Meldung im HTTPMAD
addr

http://192.168.2.12:80
buf

HTTP/1.0 401 Unauthorized Server: thttpd/2.19-MX Jun 11 2013 Content-type: text/html Date: Mon, 11 May 2015 11:29:24 GMT Last-modified: Mon, 11 May 2015 11:29:24 GMT Accept-Ranges: bytes Connection: close WWW-Authenticate: Basic realm="MOBOTIX Camera User" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv='X-UA-Compatible' content='IE=EmulateIE7' /> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta name="publisher" content="MOBOTIX AG, Germany"> <meta name="copyright" content="MOBOTIX AG, Germany"> <link rel="SHORTCUT ICON" href="/favicon.ico"> <meta name="author" content="Daniel Kabs, MOBOTIX AG, Germany"> <link rel="owner" href="mailto:info@mobotix.com"> <link rel="copyright" href="/about.html" title="Copyright"> <style type='text/css'> body { font-family:Helvetica,Arial,sans-serif; font-size:80%; } pre,textarea { font-family:monospace; } .headtablesmall { font-size:125%; } .standard {} /* obsolete */ .mxSubmitButton { width: 110px; margin:2px 0; } .mxErrorMessage { color:red; background-color:yellow; font-weight:bold; padding:5px; } .mxFooterWarning { padding:5px; margin:0; background-color:#DDDDDD; color:red; font-weight:bold; } .mxFooterNote { padding:5px; margin:0; background-color:#DDDDDD; } .mxSubmitbuttonsRow { background-color:#DDDDDD; border-collapse:collapse; } .mxSubmitbuttonsRow td { padding:5px; } .smallcomment { font-size:95%; } .smallercomment { font-size:80%; } .help { cursor:help; font-style:italic; } .ContentTopButton { width:50px; height:22px; padding:0; margin-left:10px; } .ContentTopButton img { vertical-align: middle; } form { margin-bottom:0px; margin-top:0px; } .kleinerknopf { font-size:80%; } /*no strip*/ #mxResizableContent { overflow:auto; } /*no strip*/ #mxOuterDiv { background-color:white; border:2px solid #000088; } </style> <!--[if lte IE 7]><style> .IESelectOptionDisabled { color: #AAAAAA; } </style><![endif]--> <!--[if lte IE 6]><style> /*no strip*/ #mxOuterDiv { zoom:1; } /*no strip*/ #mxResizableContent { zoom: 1; width:100%;} </style><![endif]--> <!--[if IE]><style> .IEForceHasLayout { zoom: 1; } </style><![endif]--> <script type="text/javascript"> if ( ("console" in window) && ("MxJsLib" in window) && (new MxJsLib.Cookie("mxdebug").get() == 1)) { debugmsg = console.log; } else { function debugmsg(k) {}; } var filesystem__version=""; var homepage__language=""; var windowname_suffix = ""; var windowname_home="mxHome"; var windowname_ext ="mxExtern"; var windowname_help="mxHelp"; var windowname_info="mxInfo"; function openExtNoDeko(path,winname) { if ( path.search(/^!/) >= 0 ) { path=path.replace(/^!/,""); path=path+"?cachedummy="+Math.floor(Math.random()*1000000); } return window.open(path,winname,"scrollbars=yes,resizable=yes,width=722,height=700"); } function goUserlevel() { if (self.name == windowname_ext) { if (window.opener==null || window.opener.closed) // Kein Opener oder bereits geschlossen window.open("/control/userimage.html",windowname_home); else window.opener.focus(); self.window.close(); return; } location.href="/control/userimage.html"; } function getTextFensterX(breite) { var wString=",width="+breite; if (window.screenLeft) wString+=",left="+parseInt(screenLeft+document.body.offsetWidth/2-breite/2); else if (window.screenX) wString+=",screenX="+parseInt(screenX+outerWidth/2-breite/2); return wString; } function getTextFensterY(hoehe) { var wString=",height="+hoehe; if (window.screenTop) wString+=",top="+parseInt(screenTop+document.body.offsetHeight/2-hoehe/2); else if (window.screenY) wString+=",screenY="+parseInt(screenY+innerHeight/2-hoehe/2); return wString; } function open_camerainfo(prefix,evt) { var text=""; if ( evt && ( evt.shiftKey || evt.altKey || evt.CtrlKey ) ) { text="&text"; } if (typeof prefix == "undefined") var prefix=""; var wdh=window.open(prefix+"/control/camerainfo?rand="+Math.random()+text, windowname_info, "width=370,height=320,scrollbars=yes,resizable=yes"); if (wdh) wdh.focus(); } function resize_manager() { var ContentElement = document.getElementById("mxResizableContent"); if (!ContentElement) { window.onresize = null; return; } var WindowHeight; // viewport height, space within the browser window if (document.all && document.documentElement && document.documentElement.clientHeight) { WindowHeight = document.documentElement.clientHeight; // IE strict } else if (window.innerHeight) { WindowHeight = window.innerHeight; // FF } else { return; } var DocumentHeight; // height of HTML element if (document.all && document.documentElement && document.documentElement.scrollHeight) { DocumentHeight = document.documentElement.scrollHeight; // IE strict } else if (document.documentElement && document.documentElement.offsetHeight) { DocumentHeight = document.documentElement.offsetHeight; // FF } else { return; } var ContentHeight = ContentElement.clientHeight; var ContentFullHeight = ContentElement.scrollHeight; var SpaceLeft = WindowHeight - (DocumentHeight - ContentHeight); /* # if (typeof console != "undefined") { # console.log("Window=" + WindowHeight +" Document=" + DocumentHeight + " " + # "Current Content=" + ContentHeight + " Full Content=" + ContentFullHeight + " " + # "New Content Height=" + SpaceLeft); } */ if (SpaceLeft >= ContentFullHeight) { ContentElement.style.height =""; } else if (SpaceLeft < WindowHeight && SpaceLeft > 50) { ContentElement.style.height = SpaceLeft + "px"; } MxResizeHandler = null; } MxResizeHandler = null; function deferred_resize_manager() { if (MxResizeHandler) return; MxResizeHandler = setTimeout(resize_manager,300); } if (window.addEventListener) { window.addEventListener("load", resize_manager, false); } else if (window.attachEvent) { window.attachEvent("onload", resize_manager); } window.onresize = deferred_resize_manager; </script> <script type='text/javascript'> hostname = window.location.host; pos_of_colon = hostname.indexOf(':'); if (pos_of_colon >=0) { hostname = hostname.substring(0,pos_of_colon); } </script> <title> Error 401: Unauthorized access</title> </head> <body bgcolor="#FFFFFF" background="/decor/Cam_Kachel_grau.gif?"> <div id='mxOuterDiv'> <TABLE class="headtablesmall" width="100%" border="0" cellspacing="0" cellpadding="4" bgcolor="#000088"> <TR> <TD width="2%" style="white-space:nowrap;"><!-- gfxbutton Open camera homepage--><a href="javascript:goUserlevel();" onmousedown="TheImageButton0.src='/decor/nav_home_pressed.gif';" onmouseover="TheImageButton0.src='/decor/nav_home.gif';" onmouseup="TheImageButton0.src='/decor/nav_home.gif';" onmouseout="TheImageButton0.src='/decor/nav_home_sw.gif';"><img height="23" width="23" name="TheImageButton0" src="/decor/nav_home_sw.gif" border="0" title="Open camera homepage" alt="Open camera homepage"></a ><!-- gfxbutton end --></TD> <TD valign="middle"> <font color="#CCCCCC"> <b>MOBOTIX </b>&nbsp; Error 401: Unauthorized access </font> </TD><TD align="right" style="white-space:nowrap;"> <a target="mxHelp" href="/help/help" onclick="openExtNoDeko('/help/help','mxHelp');return false;"><img alt="Open Help" title="Open Help" border="0" src="/decor/help.gif" height="12" width="12"></a> <a target='mxExtern' href='/control/camerainfo' onclick="open_camerainfo('',event);return false;" ><img alt='Show Camera info' title='Show Camera info' border='0' src='/decor/info.gif' width='12' height='12'></a> </TD> </TR></TABLE><div id='mxResizableContent'><div class='IEForceHasLayout'><!-- begin content --> <table class="standard" width="100%" height="250" cellpadding="10" cellspacing="0" border="0" bgcolor="white"> <tr> <td align="center"> <p><font face="Helvetica,Arial" size="+2" color="red"> <b>Unauthorized access</b> </font></p> <font face="Helvetica,Arial" size="+1"> You do not have rights to enter these pages!<br> Check your login and your password. </font> </td> </tr> </table> <!-- end content --></div></div> </div><script type='text/javascript' language='JavaScript'>self.focus();</script></body> </html>


Vielen Dank
Hoffi

Thorsten Pferdekaemper

FUIP

Thoffi1978

Hallo,
das funktioniert. Zumindest logt sich Fhem auf der Kamera ein. Es wird aber keine Helligkeit angezeigt

State ? ? ?

Ich habe entsprechende Screenshot´s angefügt.

Lieben Gruß
Hoffi

ChrisD

Hallo,

Die Daten werden korrekt von deiner Kamera abgeholt, du kannst sie in 'buf' sehen. Du musst HTTPMOD aber sagen wie es die ankommenden Daten interpretieren soll. Eine Möglichkeit wäre
attr meinHTTPMOD reading01Name state
attr meinHTTPMOD reading01Regex \n([\d\.]+)

wobei du mit dem Attribut reading01Regex eventuell etwas herumspielen musst bis es auf deine Kamera passt.

Grüße,

ChrisD

Thoffi1978

Hallo,

vielleicht hab ich da wo ein Fehler drinnen, doch ich muss doch meinHTTPMOD gegen
attr Helligkeit HTTPMOD reading01Name state
austauschen, damit ich den zuvor erstellen HTTMOD "bescheid" sage?
define Helligkeit HTTPMOD http://Fhem:fhem1234@192.168.2.12/control/rcontrol?action=gettext&message=$(SEN.LXR) 600
Bei Eingabe des o.g. attr Helligkeit ... kommt folgende Fehlermeldung.
ZitatHelligkeit: unknown attribute HTTPMOD. Type 'attr Helligkeit ?' for a detailed list.

schreibe ich es zusammen
attr HelligkeitHTTPMOD reading01Name state
kommt folgender Fehler:
ZitatPlease define HelligkeitHTTPMOD first

hab ich da was übersehen?

Vielen Dank
Hoffi

ChrisD

Hallo,

Statt meinHTTPMOD musst du den Namen angeben den du deinem Gerät bei der Definition gegeben hast, wenn du es 'Helligkeit' genannt hast müsstest du
attr Helligkeit reading01Name state
attr Helligkeit reading01Regex \n([\d\.]+)

verwenden.

Grüße,

ChrisD

Thoffi1978

Hallo.

Vielen dank an alle.
Jetzt wird beim State die Helligkeit angezeigt.

Jetzt muss ich das nur noch "irgendwie" in meine Rolladensteuerung integrieren.

Nochmals vielen Dank :-*

fhem-raspi-newbie

hi zusammen,
ich habe auch eine Mobotix und versuche den Wert für Helligkeit und Temperatur auszulesen und in fhem anzuzeigen.
Leider gelingt mir das mit dem nachstehenden code nicht.
Zitat von: ChrisD am 11 Mai 2015, 22:39:04
attr Helligkeit reading01Name state
attr Helligkeit reading01Regex \n([\d\.]+)


Hier mal meine Config:

define Hof_temp HTTPMOD http://fhem:fhem@192.168.0.1/control/rcontrol?action=gettext&message=$(SEN.TIN.CELSIUS) 60
attr Hof_temp userattr 1 reading01Name reading01Regex
attr Hof_temp reading01Name state
attr Hof_temp reading01Regex \n([\d\.]+)
attr Hof_temp room Hof


Leider kommen dann nur Fragezeichen in der Anzeige und im log kommt:
Hof_temp: Read response to Update didn't match any Reading(s)

Im buf steht das Ergebnis der Abfrage drin, nur ausgelesen bekomme ich es nicht:
buf HTTP/1.0 200 OK Content-type: text/plain; charset=utf-8 +11.3

Hat noch jemand eine Idee wie ich die RegEx modifizieren muss damit ich das Ergebnis bekomme? Hab von RegEx wenig Ahnung und die WikiSeite hat mir da auch nix geholfen...  :-\

Wäre für jeden Tipp dankbar!
Gruß
Heiko

ChrisD

Hallo,

Die Temperatur wird nicht ausgelesen wegen des Vorzeichens. Versuch es mal mit
attr Hof_temp reading01Regex \n([-+]?[\d\.]+)

Grüße,

ChrisD

fhem-raspi-newbie

#12
Zitat von: ChrisD am 06 Dezember 2015, 19:02:43
Hallo,
Die Temperatur wird nicht ausgelesen wegen des Vorzeichens. Versuch es mal mit
attr Hof_temp reading01Regex \n([-+]?[\d\.]+)
Grüße,
ChrisD
HAMMER, das ging ja schnell!!!! ;o)
Da hätte ich in der Tat auch selbst drauf kommen können. - Hab Deinen Code eingefügt und siehe da, es funzt...
Leider habe ich bei der Helligkeit damit kein Glück  :-\
http://fhem:fhem@192.168.0.1/control/rcontrol?action=gettext&message=$(SEN.LXR)
Bringt im direkten Aufruf die aktuelle Helligkeit mit 0.0

Ich habe vorher

define Hof_helligkeit HTTPMOD http://fhem:fhem@192.168.0.1/control/rcontrol?action=gettext&message=$(SEN.LXR) 60
attr Hof_helligkeit userattr reading01Name reading01Regex
attr Hof_helligkeit reading01Name state
attr Hof_helligkeit reading01Regex \n([-+]?[\d\.]+)
attr Hof_helligkeit room Hof

Alternativ hatte ich vorher attr Hof_temp reading01Regex \n([\d\.]+) drin was aber auch nix gebracht hat.

Im buffer steht folgendes:
buf HTTP/1.0 200 OK Content-type: text/plain; charset=utf-8 0.0

Kannst Du mir vielleicht nochmal die Augen öffnen?

Danke schonmal und LG

ChrisD

Hallo,

Wenn der Wert aus dem Buffer nicht übernommen wird kann es sein dass in der Antwort der Kamera Leerzeichen enthalten sind (ist z.B. bei der S14 der Fall), dies sollte dann funktionieren:
attr Hof_helligkeit reading01Regex \n\s*([-+]?[\d\.]+)

Grüße,

ChrisD

fhem-raspi-newbie

Hi Chris,
und nochmal VIELEN Dank für die schnelle Hifle!!!!!!
Ich habe eine S15 und da werden scheinbar auch Leerzeichen mit übertragen.
Mit der genannten RegEx passt es aber jetzt auch und ich krieg wunderbar 0.0 Lux ausgegeben  :D

einfach nur klasse!

Nochmals lieben Dank für die superschnelle und kompetente Hilfe!
Heiko