NEWS
Gelöst (mit modbus) Regex: Kaco-WR mit Parser auslesen
-
Hallo,
hänge daran, den aktuellen Leistungswert meines Kaco-Wechselrichters auszulesen:

Parser-Adapter ist installiert, IP-Adresse des WR auch eingegeben, s. h. Screenshot:

Mein Regex lautet:
<td id="nowValueIn">([0-9,]+) kWIm Objekt wird allerdings immer nur "Null" angezeigt.
Hier der Seitenquelltext des WR:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>KACO new energy</title> <!--KACO inverter web page with web browser based configuration of inverters--> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--[if IE]> <link id="favicon" rel="shortcut icon" type="image/vnd.microsoft.icon" href="favicon.ico> <![endif]--> <![if !IE]> <link id="favicon" rel="shortcut icon" type="image/x-icon"> <![endif]> <!-- +++++ css +++++ --> <!-- JQuery --> <link rel="stylesheet" href="jqueryui.css" type="text/css"> <!-- SimpleModal CSS files --> <link type='text/css' href='modal.css' rel='stylesheet' media='screen' /> <!-- Mask --> <link rel="stylesheet" href="chBStyle.css" type="text/css"> <link rel="stylesheet" href="MaskApp.css" type="text/css"> <!-- NanoTree Lib --> <link rel="stylesheet" type="text/css" href="treelook.css"> <!-- NanoTree App --> <link rel="stylesheet" type="text/css" href="TreeApp.css"> <!-- Config/Webserver --> <link rel="stylesheet" href="webConf.css" type="text/css"> <!-- KACO inverter web site --> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body onload="kaco.start();"> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Header with logo and device information of inverter + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="container" style="display: none; height:700px"> <div id="headerBox"> <!-- logo --> <div id="logoBox"> <img alt="Logo" id="logo"/> </div> <!-- device information of inverter --> <div id="header"> <table id="hardFacts"> <tr> <th id="devName"></th> <th id="devTyp"></th> <th id="devMon"></th> <th> </th> </tr> <tr> <td id="name"></td> <td id="type"></td> <td id="mon"></td> <td> </td> </tr> <tr> <th id="devAddr"></th> <th id="devNetAddr"></th> <th id="devMacAddr"></th> <th> </th> </tr> <tr> <td id="rsid"></td> <td id="network"></td> <td id="mac"></td> <td> </td> </tr> <tr> <th id="devSerNo"></th> <th id="pktVersion"></th> <th id="dataRev"></th> </tr> <tr> <td id="serial"></td> <td id="pktVer"></td> <td id="today"></td> </tr> </table> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Navigation bar + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="naviBox"> <ul id="navi"> <li> <a href="#" class="naviItem itemDay" id="viewDay" onclick="kaco.switchToDayView(true);" title="Ansicht pro Tag"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemMonth" id="viewMonth" onclick="kaco.switchToMonthView();" title="Ansicht pro Monat"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemYear" id="viewYear" onclick="kaco.switchToYearView();" title="Ansicht pro Jahr"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemEternal" id="viewEternal" onclick="kaco.switchToEternalView();" title="Gesamtansicht"></a> </li> <li class="naviSpacer" id="viewConfigSpacer">|</li> <li> <a href="#" class="naviItem itemTool" id="viewConfig" onclick="kaco.switchToToolView();" title="Konfiguration">Konfiguration</a> </li> </ul> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Grafical display of logged data + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="content" class="clearfix"> <div id="contentLeft"> <ul id="chartBarNavi"> <li class="chartBarButtons fback"> <a id="lblHrefGoToFirst" class="fastfwd" href="#" onclick="kaco.goFastBack();" title="Zum ersten Eintrag"> <img id="lblAltfGoToFirst" src="btn_fpre.gif" alt="Zum ersten Eintrag"/> </a> <a id="lblHrefGoOneBack" href="#" onclick="kaco.goBack();" title="Ein Eintrag zurück"> <img id="lblAltGoOneBack" src="btn_prev.gif" alt="zurück"/> </a> </li> <li class="currentScreen" id="currentScreenTitle">...</li> <li class="chartBarButtons next"> <a id="lblHrefGoOneFwd" href="#" onclick="kaco.goForward();" title="Ein Eintrag weiter"> <img id="lblAltGoOneFwd" src="btn_next.gif" alt="weiter"/> </a> <a id="lblHrefGoToLast" class="fastfwd" href="#" onclick="kaco.goFastForward();" title="Zum letzten Eintrag"> <img id="lblAltGoTolast" src="btn_fne.gif" alt="weiter"/> </a> <input type="hidden" id="calendar" /> <a class="today" id="toTodayLink" href="#" onclick="kaco.goToToday();" title="Heute"> <img id="lblAltGoToday" src="btn_2day.gif" alt="Heute" /> </a> </li> </ul> <div id="chart" style="padding: 80px 0 0 40px;"> <div style="position: relative; width: 530px; height: 360px; background:#f9f9f9 url(kacobgch.jpg) no-repeat center center;" id="chartContainer"> </div> <div id="axisLabel" style="text-align:center"></div> <h3 id="outOfBoundInfo" style="color:red; padding:5px; text-align:center"> <!-- There is no data for the selected time range.<br/> The next possible data set is shown. --> </h3> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Real time data + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="contentRight"> <div id="performanceDataBox" class="greyBox"> <h3 id="lblValueState"></h3> <div id="nowValueState"></div> <hr id="hr1"/> <h3 id="lblLiveValues"></h3> <table class="ertragswerte"> <tr> <th id="lblValueGen"></th> <td id="nowValueGen"></td> </tr> <tr> <th id="lblValueIn"></th> <td id="nowValueIn"></td> </tr> </table> <hr id="hr2"/> <h3 id="lblYields"></h3> <table class="ertragswerte"> <tr> <th id="dayLabel"></th> <td id="dayValue"></td> </tr> </table> </div> <div id="graphselectorBox" class="greyBox"> <form id="graphselector"> <h3 id="lblChooseView"></h3> <table> <tr> <td id="lblGridPower" colspan="3" style="width:150px"></td> <td><input type="radio" value="showPreset1" class="preset" id="showPreset1" checked="checked" /></td> </tr> <tr> <td id="lblGenPower" colspan="3"></td> <td><input type="radio" value="showPreset2" class="preset" id="showPreset2" /></td> </tr> <tr> <td id="lblGenVolt" colspan="3"></td> <td><input type="radio" value="showPreset3" class="preset" id="showPreset3" /></td> </tr> <tr> <td colspan="4"></td> </tr> <tr> <td colspan="4"><a href="javascript:void(0)" id="toggleAdvanced"></a></td> </tr> </table> <div id="extendTable"> <table> <tr> <td> </td> <td style="text-align:center" id="textLabel1">1</td> <td style="text-align:center" id="textLabel2">2</td> <td style="text-align:center" id="textLabel3">3</td> </tr> <tr> <td style="width:150px;"><label id="lblSelGenVolt" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvsp1" id="pvsp1" /></td> <td><input type="checkbox" class="detail d2" value="pvsp2" id="pvsp2" /></td> <td><input type="checkbox" class="detail d3" value="pvsp3" id="pvsp3" /></td> </tr> <tr> <td><label id="lblSelGenCurr" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvst1" id="pvst1" /></td> <td><input type="checkbox" class="detail d2" value="pvst2" id="pvst2" /></td> <td><input type="checkbox" class="detail d3" value="pvst3" id="pvst3" /></td> </tr> <tr> <td><label id="lblSelGenPow" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvl1" id="pvl1" /></td> <td><input type="checkbox" class="detail d2" value="pvl2" id="pvl2" /></td> <td><input type="checkbox" class="detail d3" value="pvl3" id="pvl3" /></td> </tr> <tr> <td><label id="lblSelGridVolt" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nsp1" /></td> <td><input type="checkbox" class="detail aVolt2" value="nsp2" /></td> <td><input type="checkbox" class="detail aVolt3" value="nsp3" /></td> </tr> <tr> <td><label id="lblSelGridCurr" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nst1" /></td> <td><input type="checkbox" class="detail aCurr2" value="nst2" /></td> <td><input type="checkbox" class="detail aCurr3" value="nst3" /></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td><label id="lblSelGridPow" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nl" checked="checked" id="pac" /></td> <td> </td> <td> </td> </tr> <tr> <td><label id="lblSelDevTemp" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="temp" /></td> <td> </td> <td> </td> </tr> </table> </div> </form> <br /> <a href="#" id="downloadLink"><span id="dlLinkSpan"></span></a> </div> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configuration of inverter + + menu tree and input masks + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="tool" style="position:absolute; left:0; top:200"> <div id="tree"> <table class="maskTable" style="height:360px"> <tr> <td style="vertical-align:top"> <!-- Menu tree --> <div id="scrollbar1"> <div class="scrollbar"> <div class="track"> <div class="thumb"> <div class="end"> </div> </div> </div> </div> <div class="viewport"> <div class="overview" id="treeDiv"> </div> </div> </div> <div id="installButtonDiv" style="text-align:left"> <input type="button" id="installButton" class="maskCtrlButton" onclick="cfgInstall();" value="Install assistent"> <input type="button" id="updateButton" class="maskCtrlButton" onclick="switchToSWUpdateMask();" value="SW-Update"> </div> </td> <td style="vertical-align:top"> <div id="logoutButtonDiv" style="text-align:right"> <input type="button" id="logoutButton" class="maskCtrlButton" onclick="cfgLogout(true);" value="Logout"> </div> </td> </tr> </table> </div> <div id="paraInput" style="width:580px"> <!-- Table for Input masks--> </div> <div> <textarea id="result-text" class="resultLabel" style="width:880px; height:45px;"> </textarea> </div> <div> <!-- preload images for the menu tree ivisible --> <img style="width:0px; height:0px; display:none;" src="foldclos.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="foldopen.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="pag16x16.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="pluslast.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plltnoro.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plnoroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plnoline.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="minulast.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnltnroo.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnnoroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnnoline.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="t_noroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plusDis.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="foldclDs.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="line.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="t.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="lastnode.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="minus.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plus.gif" border="0" alt=""> </div> </div> </div> <div> <input type="checkbox" id="rtDbgMsg" class="cfgDebugCheckbox" checked="checked" value="Debug-message realtime.csv" style="position:absolute; bottom:214px; left:0px;"> <label for="rtDbgMsg" id="rtDbgMsgLbl" class="cbLabel" style="position:absolute; bottom:210px; left:15px;">Debug-message realtime.csv</label> <input type="checkbox" id="cbRules" class="cfgDebugCheckbox" checked="checked" value="Switch ON/OFF Rule checking P(f) and RPC characteristics" style="position:absolute; bottom:214px; left:485px;"> <label for="cbRules" id="cbRulesLbl" class="cbLabel" style="position:absolute; bottom:210px; left:500px;">Switch ON/OFF Rule checking P(f) and RPC characteristics</label> <textarea id="dbg-text" class="cbLabel" style="position:absolute; bottom:0px; left:0px; width:900px; height:200px;"> </textarea> </div> <!-- modal content --> <div class="winTable" id="basic-modal-content"> <div id="winParaInput"> <!-- Table for Input masks --> </div> </div> <!-- +++++ js +++++ --> <!-- JQuery --> <script src="jquery.js" type="text/javascript"></script> <script src="jqueryui.js" type="text/javascript"></script> <script src="canvas.js" type="text/javascript"></script> <script src="flot.js" type="text/javascript"></script> <!-- Trobber --> <script src="throbber.js" type="text/javascript"></script> <script src="hilight.js" type="text/javascript"></script> <!-- SimpleModal --> <script src="simplMod.js" type="text/javascript"></script> <!-- Mask --> <script type="text/javascript" language="JavaScript" src="MaskApp.js"></script> <!-- NanoTree Lib --> <script type="text/javascript" language="JavaScript" src="nanotree.js"></script> <!-- NanoTree App --> <script type="text/javascript" language="JavaScript" src="TreeApp.js"></script> <script type="text/javascript" src="jq_tn_sb.js"></script> <!-- Encryption --> <script language="JavaScript" type="text/javascript" src="jsbn.js"></script> <script language="JavaScript" type="text/javascript" src="prng4.js"></script> <script language="JavaScript" type="text/javascript" src="rng.js"></script> <script language="JavaScript" type="text/javascript" src="rsa.js"></script> <!-- Config/Webserver --> <script src="webConf.js" type="text/javascript"></script> <!-- KACO inverter web site --> <script src="main.js" type="text/javascript"></script> </body> </html>Der für mich interessante Wert ist m. M nach in Zeile 188.
Wenn ich die Website untersuche erscheint bei der Leistung z. B. dieser Wert:
<td id="nowValueIn">6,55 kW</td>Wenn ich obige Zeile zusammen mit meiner Regex in regex101 prüfe, wird auch der Zahlenwert als Group1 ausgegeben.
Welchen Fehler mache ich?
-
Hallo,
hänge daran, den aktuellen Leistungswert meines Kaco-Wechselrichters auszulesen:

Parser-Adapter ist installiert, IP-Adresse des WR auch eingegeben, s. h. Screenshot:

Mein Regex lautet:
<td id="nowValueIn">([0-9,]+) kWIm Objekt wird allerdings immer nur "Null" angezeigt.
Hier der Seitenquelltext des WR:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>KACO new energy</title> <!--KACO inverter web page with web browser based configuration of inverters--> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--[if IE]> <link id="favicon" rel="shortcut icon" type="image/vnd.microsoft.icon" href="favicon.ico> <![endif]--> <![if !IE]> <link id="favicon" rel="shortcut icon" type="image/x-icon"> <![endif]> <!-- +++++ css +++++ --> <!-- JQuery --> <link rel="stylesheet" href="jqueryui.css" type="text/css"> <!-- SimpleModal CSS files --> <link type='text/css' href='modal.css' rel='stylesheet' media='screen' /> <!-- Mask --> <link rel="stylesheet" href="chBStyle.css" type="text/css"> <link rel="stylesheet" href="MaskApp.css" type="text/css"> <!-- NanoTree Lib --> <link rel="stylesheet" type="text/css" href="treelook.css"> <!-- NanoTree App --> <link rel="stylesheet" type="text/css" href="TreeApp.css"> <!-- Config/Webserver --> <link rel="stylesheet" href="webConf.css" type="text/css"> <!-- KACO inverter web site --> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body onload="kaco.start();"> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Header with logo and device information of inverter + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="container" style="display: none; height:700px"> <div id="headerBox"> <!-- logo --> <div id="logoBox"> <img alt="Logo" id="logo"/> </div> <!-- device information of inverter --> <div id="header"> <table id="hardFacts"> <tr> <th id="devName"></th> <th id="devTyp"></th> <th id="devMon"></th> <th> </th> </tr> <tr> <td id="name"></td> <td id="type"></td> <td id="mon"></td> <td> </td> </tr> <tr> <th id="devAddr"></th> <th id="devNetAddr"></th> <th id="devMacAddr"></th> <th> </th> </tr> <tr> <td id="rsid"></td> <td id="network"></td> <td id="mac"></td> <td> </td> </tr> <tr> <th id="devSerNo"></th> <th id="pktVersion"></th> <th id="dataRev"></th> </tr> <tr> <td id="serial"></td> <td id="pktVer"></td> <td id="today"></td> </tr> </table> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Navigation bar + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="naviBox"> <ul id="navi"> <li> <a href="#" class="naviItem itemDay" id="viewDay" onclick="kaco.switchToDayView(true);" title="Ansicht pro Tag"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemMonth" id="viewMonth" onclick="kaco.switchToMonthView();" title="Ansicht pro Monat"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemYear" id="viewYear" onclick="kaco.switchToYearView();" title="Ansicht pro Jahr"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemEternal" id="viewEternal" onclick="kaco.switchToEternalView();" title="Gesamtansicht"></a> </li> <li class="naviSpacer" id="viewConfigSpacer">|</li> <li> <a href="#" class="naviItem itemTool" id="viewConfig" onclick="kaco.switchToToolView();" title="Konfiguration">Konfiguration</a> </li> </ul> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Grafical display of logged data + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="content" class="clearfix"> <div id="contentLeft"> <ul id="chartBarNavi"> <li class="chartBarButtons fback"> <a id="lblHrefGoToFirst" class="fastfwd" href="#" onclick="kaco.goFastBack();" title="Zum ersten Eintrag"> <img id="lblAltfGoToFirst" src="btn_fpre.gif" alt="Zum ersten Eintrag"/> </a> <a id="lblHrefGoOneBack" href="#" onclick="kaco.goBack();" title="Ein Eintrag zurück"> <img id="lblAltGoOneBack" src="btn_prev.gif" alt="zurück"/> </a> </li> <li class="currentScreen" id="currentScreenTitle">...</li> <li class="chartBarButtons next"> <a id="lblHrefGoOneFwd" href="#" onclick="kaco.goForward();" title="Ein Eintrag weiter"> <img id="lblAltGoOneFwd" src="btn_next.gif" alt="weiter"/> </a> <a id="lblHrefGoToLast" class="fastfwd" href="#" onclick="kaco.goFastForward();" title="Zum letzten Eintrag"> <img id="lblAltGoTolast" src="btn_fne.gif" alt="weiter"/> </a> <input type="hidden" id="calendar" /> <a class="today" id="toTodayLink" href="#" onclick="kaco.goToToday();" title="Heute"> <img id="lblAltGoToday" src="btn_2day.gif" alt="Heute" /> </a> </li> </ul> <div id="chart" style="padding: 80px 0 0 40px;"> <div style="position: relative; width: 530px; height: 360px; background:#f9f9f9 url(kacobgch.jpg) no-repeat center center;" id="chartContainer"> </div> <div id="axisLabel" style="text-align:center"></div> <h3 id="outOfBoundInfo" style="color:red; padding:5px; text-align:center"> <!-- There is no data for the selected time range.<br/> The next possible data set is shown. --> </h3> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Real time data + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="contentRight"> <div id="performanceDataBox" class="greyBox"> <h3 id="lblValueState"></h3> <div id="nowValueState"></div> <hr id="hr1"/> <h3 id="lblLiveValues"></h3> <table class="ertragswerte"> <tr> <th id="lblValueGen"></th> <td id="nowValueGen"></td> </tr> <tr> <th id="lblValueIn"></th> <td id="nowValueIn"></td> </tr> </table> <hr id="hr2"/> <h3 id="lblYields"></h3> <table class="ertragswerte"> <tr> <th id="dayLabel"></th> <td id="dayValue"></td> </tr> </table> </div> <div id="graphselectorBox" class="greyBox"> <form id="graphselector"> <h3 id="lblChooseView"></h3> <table> <tr> <td id="lblGridPower" colspan="3" style="width:150px"></td> <td><input type="radio" value="showPreset1" class="preset" id="showPreset1" checked="checked" /></td> </tr> <tr> <td id="lblGenPower" colspan="3"></td> <td><input type="radio" value="showPreset2" class="preset" id="showPreset2" /></td> </tr> <tr> <td id="lblGenVolt" colspan="3"></td> <td><input type="radio" value="showPreset3" class="preset" id="showPreset3" /></td> </tr> <tr> <td colspan="4"></td> </tr> <tr> <td colspan="4"><a href="javascript:void(0)" id="toggleAdvanced"></a></td> </tr> </table> <div id="extendTable"> <table> <tr> <td> </td> <td style="text-align:center" id="textLabel1">1</td> <td style="text-align:center" id="textLabel2">2</td> <td style="text-align:center" id="textLabel3">3</td> </tr> <tr> <td style="width:150px;"><label id="lblSelGenVolt" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvsp1" id="pvsp1" /></td> <td><input type="checkbox" class="detail d2" value="pvsp2" id="pvsp2" /></td> <td><input type="checkbox" class="detail d3" value="pvsp3" id="pvsp3" /></td> </tr> <tr> <td><label id="lblSelGenCurr" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvst1" id="pvst1" /></td> <td><input type="checkbox" class="detail d2" value="pvst2" id="pvst2" /></td> <td><input type="checkbox" class="detail d3" value="pvst3" id="pvst3" /></td> </tr> <tr> <td><label id="lblSelGenPow" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvl1" id="pvl1" /></td> <td><input type="checkbox" class="detail d2" value="pvl2" id="pvl2" /></td> <td><input type="checkbox" class="detail d3" value="pvl3" id="pvl3" /></td> </tr> <tr> <td><label id="lblSelGridVolt" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nsp1" /></td> <td><input type="checkbox" class="detail aVolt2" value="nsp2" /></td> <td><input type="checkbox" class="detail aVolt3" value="nsp3" /></td> </tr> <tr> <td><label id="lblSelGridCurr" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nst1" /></td> <td><input type="checkbox" class="detail aCurr2" value="nst2" /></td> <td><input type="checkbox" class="detail aCurr3" value="nst3" /></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td><label id="lblSelGridPow" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nl" checked="checked" id="pac" /></td> <td> </td> <td> </td> </tr> <tr> <td><label id="lblSelDevTemp" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="temp" /></td> <td> </td> <td> </td> </tr> </table> </div> </form> <br /> <a href="#" id="downloadLink"><span id="dlLinkSpan"></span></a> </div> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configuration of inverter + + menu tree and input masks + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="tool" style="position:absolute; left:0; top:200"> <div id="tree"> <table class="maskTable" style="height:360px"> <tr> <td style="vertical-align:top"> <!-- Menu tree --> <div id="scrollbar1"> <div class="scrollbar"> <div class="track"> <div class="thumb"> <div class="end"> </div> </div> </div> </div> <div class="viewport"> <div class="overview" id="treeDiv"> </div> </div> </div> <div id="installButtonDiv" style="text-align:left"> <input type="button" id="installButton" class="maskCtrlButton" onclick="cfgInstall();" value="Install assistent"> <input type="button" id="updateButton" class="maskCtrlButton" onclick="switchToSWUpdateMask();" value="SW-Update"> </div> </td> <td style="vertical-align:top"> <div id="logoutButtonDiv" style="text-align:right"> <input type="button" id="logoutButton" class="maskCtrlButton" onclick="cfgLogout(true);" value="Logout"> </div> </td> </tr> </table> </div> <div id="paraInput" style="width:580px"> <!-- Table for Input masks--> </div> <div> <textarea id="result-text" class="resultLabel" style="width:880px; height:45px;"> </textarea> </div> <div> <!-- preload images for the menu tree ivisible --> <img style="width:0px; height:0px; display:none;" src="foldclos.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="foldopen.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="pag16x16.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="pluslast.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plltnoro.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plnoroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plnoline.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="minulast.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnltnroo.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnnoroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnnoline.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="t_noroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plusDis.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="foldclDs.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="line.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="t.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="lastnode.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="minus.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plus.gif" border="0" alt=""> </div> </div> </div> <div> <input type="checkbox" id="rtDbgMsg" class="cfgDebugCheckbox" checked="checked" value="Debug-message realtime.csv" style="position:absolute; bottom:214px; left:0px;"> <label for="rtDbgMsg" id="rtDbgMsgLbl" class="cbLabel" style="position:absolute; bottom:210px; left:15px;">Debug-message realtime.csv</label> <input type="checkbox" id="cbRules" class="cfgDebugCheckbox" checked="checked" value="Switch ON/OFF Rule checking P(f) and RPC characteristics" style="position:absolute; bottom:214px; left:485px;"> <label for="cbRules" id="cbRulesLbl" class="cbLabel" style="position:absolute; bottom:210px; left:500px;">Switch ON/OFF Rule checking P(f) and RPC characteristics</label> <textarea id="dbg-text" class="cbLabel" style="position:absolute; bottom:0px; left:0px; width:900px; height:200px;"> </textarea> </div> <!-- modal content --> <div class="winTable" id="basic-modal-content"> <div id="winParaInput"> <!-- Table for Input masks --> </div> </div> <!-- +++++ js +++++ --> <!-- JQuery --> <script src="jquery.js" type="text/javascript"></script> <script src="jqueryui.js" type="text/javascript"></script> <script src="canvas.js" type="text/javascript"></script> <script src="flot.js" type="text/javascript"></script> <!-- Trobber --> <script src="throbber.js" type="text/javascript"></script> <script src="hilight.js" type="text/javascript"></script> <!-- SimpleModal --> <script src="simplMod.js" type="text/javascript"></script> <!-- Mask --> <script type="text/javascript" language="JavaScript" src="MaskApp.js"></script> <!-- NanoTree Lib --> <script type="text/javascript" language="JavaScript" src="nanotree.js"></script> <!-- NanoTree App --> <script type="text/javascript" language="JavaScript" src="TreeApp.js"></script> <script type="text/javascript" src="jq_tn_sb.js"></script> <!-- Encryption --> <script language="JavaScript" type="text/javascript" src="jsbn.js"></script> <script language="JavaScript" type="text/javascript" src="prng4.js"></script> <script language="JavaScript" type="text/javascript" src="rng.js"></script> <script language="JavaScript" type="text/javascript" src="rsa.js"></script> <!-- Config/Webserver --> <script src="webConf.js" type="text/javascript"></script> <!-- KACO inverter web site --> <script src="main.js" type="text/javascript"></script> </body> </html>Der für mich interessante Wert ist m. M nach in Zeile 188.
Wenn ich die Website untersuche erscheint bei der Leistung z. B. dieser Wert:
<td id="nowValueIn">6,55 kW</td>Wenn ich obige Zeile zusammen mit meiner Regex in regex101 prüfe, wird auch der Zahlenwert als Group1 ausgegeben.
Welchen Fehler mache ich?
@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
Der für mich interessante Wert ist m. M nach in Zeile 188.
ich sehe in Zeile 188 keinen Wert.
Dann sieht der Parser da auch nichts.Andererseits wundert es mich,
@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
Wenn ich obige Zeile zusammen mit meiner Regex in regex101 prüfe, wird auch der Zahlenwert als Group1 ausgegeben.
dann kann die Lösung nicht in Zeile 188 stehen
-
@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
Der für mich interessante Wert ist m. M nach in Zeile 188.
ich sehe in Zeile 188 keinen Wert.
Dann sieht der Parser da auch nichts.Andererseits wundert es mich,
@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
Wenn ich obige Zeile zusammen mit meiner Regex in regex101 prüfe, wird auch der Zahlenwert als Group1 ausgegeben.
dann kann die Lösung nicht in Zeile 188 stehen
@homoran Danke, einen Wert sehe ich in Zeile 188 auch nicht, aber ich dachte, dass die Variable "nowValueIn" den Wert der aktuellen Leistung enthält.
Bzgl. regex101 hab ich jetzt noch einen Screenshot angehängt:
Und hier der Screenshot von regex101:

Ich befürchte fast, dass ich ein kapitales Verständnisproblem habe...
-
@homoran Danke, einen Wert sehe ich in Zeile 188 auch nicht, aber ich dachte, dass die Variable "nowValueIn" den Wert der aktuellen Leistung enthält.
Bzgl. regex101 hab ich jetzt noch einen Screenshot angehängt:
Und hier der Screenshot von regex101:

Ich befürchte fast, dass ich ein kapitales Verständnisproblem habe...
@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
aber ich dachte, dass die Variable "nowValueIn" den Wert der aktuellen Leistung enthält.
das kann gut sein.
nur das nutzt dem Parser nichts.Wenn da kein Wert steht, kann der auch nichts auslesen.
@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
Und hier der Screenshot von regex101:
Ich befürchte fast, dass ich ein kapitales Verständnisproblem habe...
dann hast du wohl das aufgearbeitete HTML der Website genommen, in dem die Variable gegen deren Wert getauscht wurde.
Da kommt der Parser aber icht dran, der kommt nur an den echten Quelltext.
@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
Wenn ich die Website untersuche erscheint bei der Leistung z. B. dieser Wert:
das ist nicht der Quelltext!!
den erhältman mit der rechten Maustaste und "Quelltext anzeigen" -
Hallo,
hänge daran, den aktuellen Leistungswert meines Kaco-Wechselrichters auszulesen:

Parser-Adapter ist installiert, IP-Adresse des WR auch eingegeben, s. h. Screenshot:

Mein Regex lautet:
<td id="nowValueIn">([0-9,]+) kWIm Objekt wird allerdings immer nur "Null" angezeigt.
Hier der Seitenquelltext des WR:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>KACO new energy</title> <!--KACO inverter web page with web browser based configuration of inverters--> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--[if IE]> <link id="favicon" rel="shortcut icon" type="image/vnd.microsoft.icon" href="favicon.ico> <![endif]--> <![if !IE]> <link id="favicon" rel="shortcut icon" type="image/x-icon"> <![endif]> <!-- +++++ css +++++ --> <!-- JQuery --> <link rel="stylesheet" href="jqueryui.css" type="text/css"> <!-- SimpleModal CSS files --> <link type='text/css' href='modal.css' rel='stylesheet' media='screen' /> <!-- Mask --> <link rel="stylesheet" href="chBStyle.css" type="text/css"> <link rel="stylesheet" href="MaskApp.css" type="text/css"> <!-- NanoTree Lib --> <link rel="stylesheet" type="text/css" href="treelook.css"> <!-- NanoTree App --> <link rel="stylesheet" type="text/css" href="TreeApp.css"> <!-- Config/Webserver --> <link rel="stylesheet" href="webConf.css" type="text/css"> <!-- KACO inverter web site --> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body onload="kaco.start();"> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Header with logo and device information of inverter + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="container" style="display: none; height:700px"> <div id="headerBox"> <!-- logo --> <div id="logoBox"> <img alt="Logo" id="logo"/> </div> <!-- device information of inverter --> <div id="header"> <table id="hardFacts"> <tr> <th id="devName"></th> <th id="devTyp"></th> <th id="devMon"></th> <th> </th> </tr> <tr> <td id="name"></td> <td id="type"></td> <td id="mon"></td> <td> </td> </tr> <tr> <th id="devAddr"></th> <th id="devNetAddr"></th> <th id="devMacAddr"></th> <th> </th> </tr> <tr> <td id="rsid"></td> <td id="network"></td> <td id="mac"></td> <td> </td> </tr> <tr> <th id="devSerNo"></th> <th id="pktVersion"></th> <th id="dataRev"></th> </tr> <tr> <td id="serial"></td> <td id="pktVer"></td> <td id="today"></td> </tr> </table> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Navigation bar + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="naviBox"> <ul id="navi"> <li> <a href="#" class="naviItem itemDay" id="viewDay" onclick="kaco.switchToDayView(true);" title="Ansicht pro Tag"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemMonth" id="viewMonth" onclick="kaco.switchToMonthView();" title="Ansicht pro Monat"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemYear" id="viewYear" onclick="kaco.switchToYearView();" title="Ansicht pro Jahr"></a> </li> <li class="naviSpacer">|</li> <li> <a href="#" class="naviItem itemEternal" id="viewEternal" onclick="kaco.switchToEternalView();" title="Gesamtansicht"></a> </li> <li class="naviSpacer" id="viewConfigSpacer">|</li> <li> <a href="#" class="naviItem itemTool" id="viewConfig" onclick="kaco.switchToToolView();" title="Konfiguration">Konfiguration</a> </li> </ul> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Grafical display of logged data + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="content" class="clearfix"> <div id="contentLeft"> <ul id="chartBarNavi"> <li class="chartBarButtons fback"> <a id="lblHrefGoToFirst" class="fastfwd" href="#" onclick="kaco.goFastBack();" title="Zum ersten Eintrag"> <img id="lblAltfGoToFirst" src="btn_fpre.gif" alt="Zum ersten Eintrag"/> </a> <a id="lblHrefGoOneBack" href="#" onclick="kaco.goBack();" title="Ein Eintrag zurück"> <img id="lblAltGoOneBack" src="btn_prev.gif" alt="zurück"/> </a> </li> <li class="currentScreen" id="currentScreenTitle">...</li> <li class="chartBarButtons next"> <a id="lblHrefGoOneFwd" href="#" onclick="kaco.goForward();" title="Ein Eintrag weiter"> <img id="lblAltGoOneFwd" src="btn_next.gif" alt="weiter"/> </a> <a id="lblHrefGoToLast" class="fastfwd" href="#" onclick="kaco.goFastForward();" title="Zum letzten Eintrag"> <img id="lblAltGoTolast" src="btn_fne.gif" alt="weiter"/> </a> <input type="hidden" id="calendar" /> <a class="today" id="toTodayLink" href="#" onclick="kaco.goToToday();" title="Heute"> <img id="lblAltGoToday" src="btn_2day.gif" alt="Heute" /> </a> </li> </ul> <div id="chart" style="padding: 80px 0 0 40px;"> <div style="position: relative; width: 530px; height: 360px; background:#f9f9f9 url(kacobgch.jpg) no-repeat center center;" id="chartContainer"> </div> <div id="axisLabel" style="text-align:center"></div> <h3 id="outOfBoundInfo" style="color:red; padding:5px; text-align:center"> <!-- There is no data for the selected time range.<br/> The next possible data set is shown. --> </h3> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Real time data + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="contentRight"> <div id="performanceDataBox" class="greyBox"> <h3 id="lblValueState"></h3> <div id="nowValueState"></div> <hr id="hr1"/> <h3 id="lblLiveValues"></h3> <table class="ertragswerte"> <tr> <th id="lblValueGen"></th> <td id="nowValueGen"></td> </tr> <tr> <th id="lblValueIn"></th> <td id="nowValueIn"></td> </tr> </table> <hr id="hr2"/> <h3 id="lblYields"></h3> <table class="ertragswerte"> <tr> <th id="dayLabel"></th> <td id="dayValue"></td> </tr> </table> </div> <div id="graphselectorBox" class="greyBox"> <form id="graphselector"> <h3 id="lblChooseView"></h3> <table> <tr> <td id="lblGridPower" colspan="3" style="width:150px"></td> <td><input type="radio" value="showPreset1" class="preset" id="showPreset1" checked="checked" /></td> </tr> <tr> <td id="lblGenPower" colspan="3"></td> <td><input type="radio" value="showPreset2" class="preset" id="showPreset2" /></td> </tr> <tr> <td id="lblGenVolt" colspan="3"></td> <td><input type="radio" value="showPreset3" class="preset" id="showPreset3" /></td> </tr> <tr> <td colspan="4"></td> </tr> <tr> <td colspan="4"><a href="javascript:void(0)" id="toggleAdvanced"></a></td> </tr> </table> <div id="extendTable"> <table> <tr> <td> </td> <td style="text-align:center" id="textLabel1">1</td> <td style="text-align:center" id="textLabel2">2</td> <td style="text-align:center" id="textLabel3">3</td> </tr> <tr> <td style="width:150px;"><label id="lblSelGenVolt" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvsp1" id="pvsp1" /></td> <td><input type="checkbox" class="detail d2" value="pvsp2" id="pvsp2" /></td> <td><input type="checkbox" class="detail d3" value="pvsp3" id="pvsp3" /></td> </tr> <tr> <td><label id="lblSelGenCurr" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvst1" id="pvst1" /></td> <td><input type="checkbox" class="detail d2" value="pvst2" id="pvst2" /></td> <td><input type="checkbox" class="detail d3" value="pvst3" id="pvst3" /></td> </tr> <tr> <td><label id="lblSelGenPow" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="pvl1" id="pvl1" /></td> <td><input type="checkbox" class="detail d2" value="pvl2" id="pvl2" /></td> <td><input type="checkbox" class="detail d3" value="pvl3" id="pvl3" /></td> </tr> <tr> <td><label id="lblSelGridVolt" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nsp1" /></td> <td><input type="checkbox" class="detail aVolt2" value="nsp2" /></td> <td><input type="checkbox" class="detail aVolt3" value="nsp3" /></td> </tr> <tr> <td><label id="lblSelGridCurr" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nst1" /></td> <td><input type="checkbox" class="detail aCurr2" value="nst2" /></td> <td><input type="checkbox" class="detail aCurr3" value="nst3" /></td> </tr> <tr> <td colspan="4"> </td> </tr> <tr> <td><label id="lblSelGridPow" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="nl" checked="checked" id="pac" /></td> <td> </td> <td> </td> </tr> <tr> <td><label id="lblSelDevTemp" class="selector_label"></label></td> <td><input type="checkbox" class="detail" value="temp" /></td> <td> </td> <td> </td> </tr> </table> </div> </form> <br /> <a href="#" id="downloadLink"><span id="dlLinkSpan"></span></a> </div> </div> </div> <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + configuration of inverter + + menu tree and input masks + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ --> <div id="tool" style="position:absolute; left:0; top:200"> <div id="tree"> <table class="maskTable" style="height:360px"> <tr> <td style="vertical-align:top"> <!-- Menu tree --> <div id="scrollbar1"> <div class="scrollbar"> <div class="track"> <div class="thumb"> <div class="end"> </div> </div> </div> </div> <div class="viewport"> <div class="overview" id="treeDiv"> </div> </div> </div> <div id="installButtonDiv" style="text-align:left"> <input type="button" id="installButton" class="maskCtrlButton" onclick="cfgInstall();" value="Install assistent"> <input type="button" id="updateButton" class="maskCtrlButton" onclick="switchToSWUpdateMask();" value="SW-Update"> </div> </td> <td style="vertical-align:top"> <div id="logoutButtonDiv" style="text-align:right"> <input type="button" id="logoutButton" class="maskCtrlButton" onclick="cfgLogout(true);" value="Logout"> </div> </td> </tr> </table> </div> <div id="paraInput" style="width:580px"> <!-- Table for Input masks--> </div> <div> <textarea id="result-text" class="resultLabel" style="width:880px; height:45px;"> </textarea> </div> <div> <!-- preload images for the menu tree ivisible --> <img style="width:0px; height:0px; display:none;" src="foldclos.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="foldopen.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="pag16x16.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="pluslast.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plltnoro.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plnoroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plnoline.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="minulast.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnltnroo.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnnoroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="mnnoline.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="t_noroot.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plusDis.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="foldclDs.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="line.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="t.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="lastnode.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="minus.gif" border="0" alt=""> <img style="width:0px; height:0px; display:none;" src="plus.gif" border="0" alt=""> </div> </div> </div> <div> <input type="checkbox" id="rtDbgMsg" class="cfgDebugCheckbox" checked="checked" value="Debug-message realtime.csv" style="position:absolute; bottom:214px; left:0px;"> <label for="rtDbgMsg" id="rtDbgMsgLbl" class="cbLabel" style="position:absolute; bottom:210px; left:15px;">Debug-message realtime.csv</label> <input type="checkbox" id="cbRules" class="cfgDebugCheckbox" checked="checked" value="Switch ON/OFF Rule checking P(f) and RPC characteristics" style="position:absolute; bottom:214px; left:485px;"> <label for="cbRules" id="cbRulesLbl" class="cbLabel" style="position:absolute; bottom:210px; left:500px;">Switch ON/OFF Rule checking P(f) and RPC characteristics</label> <textarea id="dbg-text" class="cbLabel" style="position:absolute; bottom:0px; left:0px; width:900px; height:200px;"> </textarea> </div> <!-- modal content --> <div class="winTable" id="basic-modal-content"> <div id="winParaInput"> <!-- Table for Input masks --> </div> </div> <!-- +++++ js +++++ --> <!-- JQuery --> <script src="jquery.js" type="text/javascript"></script> <script src="jqueryui.js" type="text/javascript"></script> <script src="canvas.js" type="text/javascript"></script> <script src="flot.js" type="text/javascript"></script> <!-- Trobber --> <script src="throbber.js" type="text/javascript"></script> <script src="hilight.js" type="text/javascript"></script> <!-- SimpleModal --> <script src="simplMod.js" type="text/javascript"></script> <!-- Mask --> <script type="text/javascript" language="JavaScript" src="MaskApp.js"></script> <!-- NanoTree Lib --> <script type="text/javascript" language="JavaScript" src="nanotree.js"></script> <!-- NanoTree App --> <script type="text/javascript" language="JavaScript" src="TreeApp.js"></script> <script type="text/javascript" src="jq_tn_sb.js"></script> <!-- Encryption --> <script language="JavaScript" type="text/javascript" src="jsbn.js"></script> <script language="JavaScript" type="text/javascript" src="prng4.js"></script> <script language="JavaScript" type="text/javascript" src="rng.js"></script> <script language="JavaScript" type="text/javascript" src="rsa.js"></script> <!-- Config/Webserver --> <script src="webConf.js" type="text/javascript"></script> <!-- KACO inverter web site --> <script src="main.js" type="text/javascript"></script> </body> </html>Der für mich interessante Wert ist m. M nach in Zeile 188.
Wenn ich die Website untersuche erscheint bei der Leistung z. B. dieser Wert:
<td id="nowValueIn">6,55 kW</td>Wenn ich obige Zeile zusammen mit meiner Regex in regex101 prüfe, wird auch der Zahlenwert als Group1 ausgegeben.
Welchen Fehler mache ich?
Da wird eine Menge Java Skript geladen.
Wahrscheinlich werden die Werte auf anderem Wege abgerufen und dann live in den HTML Text eingetragen.
Du kannst mal eins machen, mit den Web Developer Tools von Chrome oder Edge schauen, welche Daten noch da abgerufen werden und in diesem suchen.
Wenn du Glück hast, werden die Daten als Json oder XML angeliefert. Das wäre dann viel einfacher diese Daten zu extrahieren. -
@oliverio Vielen Dank, auch an @Homoran für die Unterstützung.
Nur nochmals für mein Verständnis, der Parser kann nur Werte auslesen, welche im Quelltext (ich nenne es jetzt mal) im Klartext als z. B. Zahlenwerte etc. zu finden sind, also nicht die evtl. Variablen dafür?Ich habe jetzte versucht mit Edge weiterzukommen, hab aber nur das hier im Tab "Quellen" unter jquery.js gefunden, aber ich denke, dies hilft auch nicht wirklich weiter:
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW'); -
@oliverio Vielen Dank, auch an @Homoran für die Unterstützung.
Nur nochmals für mein Verständnis, der Parser kann nur Werte auslesen, welche im Quelltext (ich nenne es jetzt mal) im Klartext als z. B. Zahlenwerte etc. zu finden sind, also nicht die evtl. Variablen dafür?Ich habe jetzte versucht mit Edge weiterzukommen, hab aber nur das hier im Tab "Quellen" unter jquery.js gefunden, aber ich denke, dies hilft auch nicht wirklich weiter:
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
der Parser kann nur Werte auslesen, welche im Quelltext (ich nenne es jetzt mal) im Klartext als z. B. Zahlenwerte etc. zu finden sind
korrekt!
ansonsten musst du versuchen, wie @OliverIO schrieb, die javascripte zu analysieren um zu sehen, woher die Werte kommen, und dann diese auch dort abholen, wo das js sie holt.
-
@oliverio Vielen Dank, auch an @Homoran für die Unterstützung.
Nur nochmals für mein Verständnis, der Parser kann nur Werte auslesen, welche im Quelltext (ich nenne es jetzt mal) im Klartext als z. B. Zahlenwerte etc. zu finden sind, also nicht die evtl. Variablen dafür?Ich habe jetzte versucht mit Edge weiterzukommen, hab aber nur das hier im Tab "Quellen" unter jquery.js gefunden, aber ich denke, dies hilft auch nicht wirklich weiter:
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');Ne anders.
Du öffnest ein neues tab im Browser
Dann öffnEst du die developer Tools
Dann rufst du die Seite auf
Dann gehst du in den Developer Tools auf den netzwerk tab
(Dort sind alle einzelnen Dateien aufgezählt die die Seite lädt.
Der Quelltext ist idr nur der allererste request. Danach kommen css, JavaScript, fonts und auch Daten.)
Dann suchst du den Wert auf der Seite heraus der dich interessiert.https://developer.chrome.com/docs/devtools/search/
Dann rufst du in den Developer Tools die Suche auf und gibst den Wert dort ein. Diese versucht dann in allen einzelnen Dateien nach dem Wert. Hoffe darauf, das der Wert nicht zu oft vorkommt und er nicht verschlüsselt übertragen wird.
Denke auch daran, das Zahlenwerte bei denen der Bruch mit Komma getrennt ist, das hier mit einem Punkt zu suchen ist.
Die Datei die den Wert enthält ist oft ein json oder XML.
Oft stehen in dieser Datei auch die anderen Werte der Seite mit drin.
Um die richtige Datei zu erkennen gehört ein bisschen Kreativität und ist nicht einfach. -
@oliverio Vielen Dank, auch an @Homoran für die Unterstützung.
Nur nochmals für mein Verständnis, der Parser kann nur Werte auslesen, welche im Quelltext (ich nenne es jetzt mal) im Klartext als z. B. Zahlenwerte etc. zu finden sind, also nicht die evtl. Variablen dafür?Ich habe jetzte versucht mit Edge weiterzukommen, hab aber nur das hier im Tab "Quellen" unter jquery.js gefunden, aber ich denke, dies hilft auch nicht wirklich weiter:
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');@don_hasso sagte in Regex: Kaco-WR-Daten mit Parser-App auslesen:
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');Die Zeile, die du hier gefunden hast, scheint tatsächlich den Wert in die HTML Seite einzutragen. Allerdings macht mir die Berechnung etwas Sorge hinsichtlich deiner Suche in den Quelldaten.
Du siehst, der Inhalt des Wertes scheint Aus dem Array fields zukommen. Natürlich weiß ich nicht, was da für eine vor Verarbeitung noch stattfindet. Allerdings sieht man an der Berechnung, dass der Wert wohl nicht genau so vorliegt, wie er nachher angezeigt wird.
Auf jeden Fall scheint der erste mal nicht mit irgendeiner Nachkommastellen notiert zu werden und als Vielfaches von 65.535.
Das solltest du eventuell bei deiner Suche mit berücksichtigen.
Also ein Wert von 2 müsste dann in den Grunddaten mit der folgenden Zahl notiert sein2 * 65.535 * 100.000 * 1.000 = 13.107.000.000.000 -
@oliverio Vielen Dank, auch an @Homoran für die Unterstützung.
Nur nochmals für mein Verständnis, der Parser kann nur Werte auslesen, welche im Quelltext (ich nenne es jetzt mal) im Klartext als z. B. Zahlenwerte etc. zu finden sind, also nicht die evtl. Variablen dafür?Ich habe jetzte versucht mit Edge weiterzukommen, hab aber nur das hier im Tab "Quellen" unter jquery.js gefunden, aber ich denke, dies hilft auch nicht wirklich weiter:
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');Ich habe auf github noch was gefunden.
Schau mal im netzwerktab ob du eine Datei namens realtime.csv findest.
Poste diese bitte hier und nenne den gesuchten Wert, der auf der Seite in dem Moment angezeigt wird.
Da diese Datei wahrscheinlich kontinuierlich abgerufen wird, dann immer die neueste bitte. Also von ganz unten aufwärts suchen. -
Ich habe auf github noch was gefunden.
Schau mal im netzwerktab ob du eine Datei namens realtime.csv findest.
Poste diese bitte hier und nenne den gesuchten Wert, der auf der Seite in dem Moment angezeigt wird.
Da diese Datei wahrscheinlich kontinuierlich abgerufen wird, dann immer die neueste bitte. Also von ganz unten aufwärts suchen.@oliverio Super! Also die realtime.csv hab ich gefunden und die enhält folgende Werte, der für mich wichtige Wert lautet 7,23 kW.
1685884437;19012;22289;9351;9882;9552;2797;2036;3464;3278;3391;4746;5207;4Hab es nochmals durchgeführt und für unten Stand die Leistung bei 7,17 kW:
1685884842;19499;22392;9698;9793;9344;2658;1991;3271;3239;3395;4647;5168;4 -
@oliverio Super! Also die realtime.csv hab ich gefunden und die enhält folgende Werte, der für mich wichtige Wert lautet 7,23 kW.
1685884437;19012;22289;9351;9882;9552;2797;2036;3464;3278;3391;4746;5207;4Hab es nochmals durchgeführt und für unten Stand die Leistung bei 7,17 kW:
1685884842;19499;22392;9698;9793;9344;2658;1991;3271;3239;3395;4647;5168;4leider habe ich den wert noch nicht gefunden

in der github datei werden manche werte durch 1600 und manche durch 200 geteilt.
bei deinem javascript beispiel wird nur durch 1000 geteilt.kannst du mir mal den inhalt der datei senden wo du diese Zeile gefunden hast?
ich vermute es ist die main.js
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');was einigermaßen in die Nähe kommt wäre Wert nr 10
da wäre das Ergebnis dann gerundet bei den ersten Daten =7,09 und beim 2.=7,24
Nicht das du nicht schnell geschaut hast, falls sich der wert mehrmals pro sekunde ändert -
leider habe ich den wert noch nicht gefunden

in der github datei werden manche werte durch 1600 und manche durch 200 geteilt.
bei deinem javascript beispiel wird nur durch 1000 geteilt.kannst du mir mal den inhalt der datei senden wo du diese Zeile gefunden hast?
ich vermute es ist die main.js
$('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');was einigermaßen in die Nähe kommt wäre Wert nr 10
da wäre das Ergebnis dann gerundet bei den ersten Daten =7,09 und beim 2.=7,24
Nicht das du nicht schnell geschaut hast, falls sich der wert mehrmals pro sekunde ändert@oliverio Ja, ich hab auch schon mein Glück mit Excel (und einer weiteren Abfrage bei 6,94 kW) versucht um damit einen Faktor zu identifizieren. Aber der Himmel ist relativ wolkenlos und somit die Werte auch immer sehr ähnlich. Ich werde es später nochmals bei 3 kW rum versuchen. Hier im Spoiler noch die main.js von welcher der Auszug stammt, 6,84 kW und die csv-Werte:
1685886282;18685;22257;9915;9738;9577;2822;1881;3145;3202;3256;4569;5179;4 -
Bitte noch die code Tags setzen
Sonst werden uU Teile verschlucktKennst du das?
https://forum.iobroker.net/topic/42163/kaco-wechselrichter-und-modbus -
Bitte noch die code Tags setzen
Sonst werden uU Teile verschlucktKennst du das?
https://forum.iobroker.net/topic/42163/kaco-wechselrichter-und-modbus