Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Gelöst (mit modbus) Regex: Kaco-WR mit Parser auslesen

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Gelöst (mit modbus) Regex: Kaco-WR mit Parser auslesen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
15 Beiträge 3 Kommentatoren 1.3k Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    Don_Hasso
    schrieb am zuletzt editiert von Don_Hasso
    #1

    Hallo,

    hänge daran, den aktuellen Leistungswert meines Kaco-Wechselrichters auszulesen:
    Screenshot 2023-06-03 125652.png
    Parser-Adapter ist installiert, IP-Adresse des WR auch eingegeben, s. h. Screenshot:
    Screenshot 2023-06-03 130931.png

    Mein Regex lautet:

    <td id="nowValueIn">([0-9,]+) kW
    

    Im 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>&#160;</th>
                            </tr>
                            <tr>
                                <td id="name"></td>
                                <td id="type"></td>
                                <td id="mon"></td>
                                <td>&#160;</td>              
                            </tr>
                            <tr>
                                <th id="devAddr"></th>
                                <th id="devNetAddr"></th>
                                <th id="devMacAddr"></th>
                                <th>&#160;</th>
                            </tr>
                            <tr>
                                <td id="rsid"></td>
                                <td id="network"></td>
                                <td id="mac"></td>
                                <td>&#160;</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>&#160;</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">&#160;</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>&#160;</td>
                                            <td>&#160;</td>
                                        </tr>
                                        <tr>
                                            <td><label id="lblSelDevTemp" class="selector_label"></label></td>
                                            <td><input type="checkbox" class="detail" value="temp" /></td>
                                            <td>&#160;</td>
                                            <td>&#160;</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?

    HomoranH OliverIOO 2 Antworten Letzte Antwort
    0
    • D Don_Hasso

      Hallo,

      hänge daran, den aktuellen Leistungswert meines Kaco-Wechselrichters auszulesen:
      Screenshot 2023-06-03 125652.png
      Parser-Adapter ist installiert, IP-Adresse des WR auch eingegeben, s. h. Screenshot:
      Screenshot 2023-06-03 130931.png

      Mein Regex lautet:

      <td id="nowValueIn">([0-9,]+) kW
      

      Im 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>&#160;</th>
                              </tr>
                              <tr>
                                  <td id="name"></td>
                                  <td id="type"></td>
                                  <td id="mon"></td>
                                  <td>&#160;</td>              
                              </tr>
                              <tr>
                                  <th id="devAddr"></th>
                                  <th id="devNetAddr"></th>
                                  <th id="devMacAddr"></th>
                                  <th>&#160;</th>
                              </tr>
                              <tr>
                                  <td id="rsid"></td>
                                  <td id="network"></td>
                                  <td id="mac"></td>
                                  <td>&#160;</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>&#160;</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">&#160;</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>&#160;</td>
                                              <td>&#160;</td>
                                          </tr>
                                          <tr>
                                              <td><label id="lblSelDevTemp" class="selector_label"></label></td>
                                              <td><input type="checkbox" class="detail" value="temp" /></td>
                                              <td>&#160;</td>
                                              <td>&#160;</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?

      HomoranH Offline
      HomoranH Offline
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @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

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      D 1 Antwort Letzte Antwort
      0
      • HomoranH Homoran

        @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

        D Offline
        D Offline
        Don_Hasso
        schrieb am zuletzt editiert von Don_Hasso
        #3

        @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:

        Screenshot 2023-06-03 193328.png

        Und hier der Screenshot von regex101:
        Screenshot 2023-06-03 194604.png

        Ich befürchte fast, dass ich ein kapitales Verständnisproblem habe...

        HomoranH 1 Antwort Letzte Antwort
        0
        • D Don_Hasso

          @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:

          Screenshot 2023-06-03 193328.png

          Und hier der Screenshot von regex101:
          Screenshot 2023-06-03 194604.png

          Ich befürchte fast, dass ich ein kapitales Verständnisproblem habe...

          HomoranH Offline
          HomoranH Offline
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von Homoran
          #4

          @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"

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          1
          • D Don_Hasso

            Hallo,

            hänge daran, den aktuellen Leistungswert meines Kaco-Wechselrichters auszulesen:
            Screenshot 2023-06-03 125652.png
            Parser-Adapter ist installiert, IP-Adresse des WR auch eingegeben, s. h. Screenshot:
            Screenshot 2023-06-03 130931.png

            Mein Regex lautet:

            <td id="nowValueIn">([0-9,]+) kW
            

            Im 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>&#160;</th>
                                    </tr>
                                    <tr>
                                        <td id="name"></td>
                                        <td id="type"></td>
                                        <td id="mon"></td>
                                        <td>&#160;</td>              
                                    </tr>
                                    <tr>
                                        <th id="devAddr"></th>
                                        <th id="devNetAddr"></th>
                                        <th id="devMacAddr"></th>
                                        <th>&#160;</th>
                                    </tr>
                                    <tr>
                                        <td id="rsid"></td>
                                        <td id="network"></td>
                                        <td id="mac"></td>
                                        <td>&#160;</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>&#160;</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">&#160;</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>&#160;</td>
                                                    <td>&#160;</td>
                                                </tr>
                                                <tr>
                                                    <td><label id="lblSelDevTemp" class="selector_label"></label></td>
                                                    <td><input type="checkbox" class="detail" value="temp" /></td>
                                                    <td>&#160;</td>
                                                    <td>&#160;</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?

            OliverIOO Offline
            OliverIOO Offline
            OliverIO
            schrieb am zuletzt editiert von
            #5

            @don_hasso

            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.

            Meine Adapter und Widgets
            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
            Links im Profil

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              Don_Hasso
              schrieb am zuletzt editiert von
              #6

              @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');
              
              HomoranH OliverIOO 4 Antworten Letzte Antwort
              0
              • D Don_Hasso

                @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');
                
                HomoranH Offline
                HomoranH Offline
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #7

                @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.

                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                1 Antwort Letzte Antwort
                0
                • D Don_Hasso

                  @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');
                  
                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von OliverIO
                  #8

                  @don_hasso

                  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.

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  1 Antwort Letzte Antwort
                  0
                  • D Don_Hasso

                    @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');
                    
                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #9

                    @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 sein

                    2 * 65.535 * 100.000 * 1.000 = 13.107.000.000.000
                    

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    0
                    • D Don_Hasso

                      @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');
                      
                      OliverIOO Offline
                      OliverIOO Offline
                      OliverIO
                      schrieb am zuletzt editiert von
                      #10

                      @don_hasso

                      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.

                      Meine Adapter und Widgets
                      TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                      Links im Profil

                      D 1 Antwort Letzte Antwort
                      1
                      • OliverIOO OliverIO

                        @don_hasso

                        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.

                        D Offline
                        D Offline
                        Don_Hasso
                        schrieb am zuletzt editiert von
                        #11

                        @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;4
                        

                        Hab 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
                        
                        OliverIOO 1 Antwort Letzte Antwort
                        0
                        • D Don_Hasso

                          @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;4
                          

                          Hab 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
                          
                          OliverIOO Offline
                          OliverIOO Offline
                          OliverIO
                          schrieb am zuletzt editiert von
                          #12

                          @don_hasso

                          leider habe ich den wert noch nicht gefunden
                          8fb20fd8-7d43-4c69-9a6c-e209286981c6-image.png

                          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

                          Meine Adapter und Widgets
                          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                          Links im Profil

                          D 1 Antwort Letzte Antwort
                          0
                          • OliverIOO OliverIO

                            @don_hasso

                            leider habe ich den wert noch nicht gefunden
                            8fb20fd8-7d43-4c69-9a6c-e209286981c6-image.png

                            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

                            D Offline
                            D Offline
                            Don_Hasso
                            schrieb am zuletzt editiert von Don_Hasso
                            #13

                            @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
                            

                            // Configuration of the web GUI
                            var confMode = true;	// true = with config button
                            						// false = without config button
                            var docReady = false;                        
                            
                            var langList = 'DEDE,ENUS,ITIT,ESES,FRFR,PTPT,NLNL,CSCZ,TRTR,HUHU,PLPL,RORO,SLSI';
                            
                            var monthNameList  = [ '', '', '', '', '', '', '', '', '', '', '', '' ];
                            var dayNameMinList = [ '', '', '', '', '', '', '' ]; 
                            var nennleistung = '';
                            var unbekannt = '';
                            var heute = '';
                            var dieserMonat = '';
                            var diesesJahr = '';
                            var uhrzeit = '';
                            var tag = '';
                            var monat = '';
                            var jahr = '';
                            var keineDaten = '';
                            var pvsp1 = '';
                            var pvsp2 = '';
                            var pvsp3 = '';
                            var pvst1 = '';
                            var pvst2 = '';
                            var pvst3 = '';
                            var nsp1 = '';
                            var nsp2 = '';
                            var nsp3 = '';
                            var nst1 = '';
                            var nst2 = '';
                            var nst3 = '';
                            var pvl1 = '';
                            var pvl2 = '';
                            var pvl3 = '';
                            var temperatur = '';
                            var nl = '';
                            var gesamtUebersicht = '';
                            var gesamtAnsicht = '';
                            var jahresAnsicht = '';
                            var monatsAnsicht = '';
                            var tagesAnsicht = '';
                            var toolAnsicht = '';
                            var einPhasig = '';
                            var dreiPhasig = '';
                            var datumsFormat = 'd.m.y, h:i:s'; // d = day, m = month, y = year, h = hours (24h), H = hours (12h), i = minutes, s = seconds, n = AM/PM
                            var containerOn = false; // Is webpage shown?
                            var startCount = 1;
                            var secCnt = 29;
                            var pauseRealtime = false;
                            var loadingTxt = 'Loading...';
                            var realTimeReq = false;
                            var realTimeReqCnt = 0;
                            var totalYieldFromCsvHeader = 0;
                            var firstLoadData = true;
                            
                            if (!String.pad) 
                            {
                                String.prototype.pad = function(l, s, t) 
                                {
                                    return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length) + 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2)) + this + s.substr(0, l - t) : this;
                                };
                            }
                            if (!String.trim) 
                            {
                                String.prototype.trim = function() 
                                {
                                    return this.replace(/^\s*/, "").replace(/\s*$/, "");
                                }
                            }
                            
                            // ----------- change fav icon ---------------
                            document.head = document.head || document.getElementsByTagName('head')[0];
                            
                            function changeFavicon(src) 
                            {
                                var link = document.createElement('link'), oldLink = document.getElementById('favicon');
                                link.id = 'favicon';
                                link.rel = 'shortcut icon';
                                link.href = src;
                                if (oldLink) 
                                {
                                    document.head.removeChild(oldLink);
                                }
                                document.head.appendChild(link);
                            }
                            // ------------------------------------------
                            
                            // ----------- disable href ---------------
                            function disableAnchor(objId, disable) 
                            { 
                            	var obj = document.getElementById(objId); 
                            	if(obj != null) 
                            	{ 
                                    if(disable) 
                                    { 
                                        var href = obj.getAttribute("href"); 
                                        var onclick = obj.getAttribute("onclick"); 
                                        //First we store previous value in a new attribute 
                                        if(href && href != "" && href != null) 
                                        { 
                                            obj.setAttribute('href_bak', href); 
                                        } 
                                        if(onclick != null) 
                                        { 
                                            obj.setAttribute('onclick_back', onclick); 
                                            obj.setAttribute('onclick', "void(0);"); 
                                        } 
                                        obj.removeAttribute('href'); 
                                        obj.style.color="gray";
                                        //obj.style.addClass('naviItemDisabled');
                                        //obj.style.textDecoration="none";
                                    } 
                                    else 
                                    { 
                                        var hrefBack = obj.getAttribute("href_bak"); 
                                        var onclickBack = obj.getAttribute("onclick_back"); 
                                        if(onclickBack !=null ) 
                                        { 
                                            obj.setAttribute('onclick', onclickBack); 
                                            obj.removeAttribute('onclick_back'); 
                                        } 
                                        if(hrefBack !=null ) 
                                        { 
                                            obj.setAttribute('href', hrefBack); 
                                            obj.removeAttribute('href_bak'); 
                                            obj.style.color="#ffffff";
                                            //obj.style.removeClass('naviItemDisabled');
                                            //obj.style.textDecoration="underline";
                                        } 
                                    } 
                            	} 
                            }
                            // ------------------------------------------
                            
                            function getRect (o)
                            { 
                                var r = { top:0, left:0, width:0, height:0 }; 
                                
                            	if(!o) 
                            		return r; 
                                else 
                            		if(typeof o == 'string' ) o = document.getElementById(o);
                            		
                                if( typeof o != 'object' ) 
                            		return r; 
                            		
                                if(typeof o.offsetTop != 'undefined')    
                            	{ 
                            		r.height = o.offsetHeight; 
                                    r.width = o.offsetWidth; 
                                    r.left = r.top = 0; 
                                    while (o && o.tagName != 'BODY')         
                            		{ 
                                        r.top  += parseInt( o.offsetTop ); 
                                        r.left += parseInt( o.offsetLeft ); 
                                        o = o.offsetParent; 
                                    } 
                                } 
                                return r; 
                            } 
                            
                            function moveDivTo(o, x, y) 
                            {
                            	if( !o ) 
                            		return -1;
                            	
                            	if( o.style ) 
                            	{ 
                            		o = o.style; 
                            	}
                            	var noPx = document.childNodes ? 'px' : 0;
                            	o.left = x + noPx;
                            	o.top = y + noPx;
                            	return 0;
                            }
                            
                            function str_replace(find, replace, src) 
                            {
                                return src.split(find).join(replace);
                            }
                            
                            function getFloatVal(str) 
                            {
                                return str_replace(",", ".", str);
                            }
                            
                            function createVersionNumber(number) 
                            {
                                var n = number.toString();
                                n = "V" + n.substring(0,n.length-2) + "." + n.substring(n.length-2,n.length);
                                return n;
                            }
                            
                            function roundCommaSeparated(x, n) 
                            {
                                var k = (Math.round(x * 100) / 100).toString();
                                var p = 0;
                                if (n == 2)
                                {
                                    k += (k.indexOf('.') == -1)? '.00' : '00';
                                    var p = k.indexOf('.');
                                    return k.substring(0, p) + ',' + k.substring(p+1, p+3);
                                }
                                else if (n = 1)
                                {
                                    k += (k.indexOf('.') == -1)? '.0' : '0';
                                    var p = k.indexOf('.');
                                    return k.substring(0, p) + ',' + k.substring(p+1, p+2);
                                }   
                            }
                            
                            function num_format(num, prec) 
                            {
                            	var n = num.toString();
                            	var nums = n.split('.');
                            	var newNum = "";
                            
                            	if (nums.length > 1) 
                            	{
                            		var dec = nums[1].substring(0, prec);
                            		newNum = nums[0] + "," + dec + (nums[1].length < prec ? "0" : "");
                            	} 
                            	else 
                            	{
                            		newNum = num;
                            	}
                            
                            	return newNum;
                            }
                            
                            function inList(psString, psList) 
                            {
                                var laList = psList.split(',');
                            
                                var i = laList.length;
                                while (i--) {
                                    if (laList[i] === psString) return true;
                                }
                                return false;
                            }
                            
                            $( document ).ready(function() {
                                docReady = true;
                            })
                            
                            var kaco = {
                                csv : '',
                            
                                initCount : 0,
                            
                                mode : '',
                                view : null,
                                tstamp : null,
                            
                                dcCount : 0,
                                acCount : 0,
                                acVoltPhaseMon : 0,
                                acCurrPhaseMon : 0,
                                showAcPhaseMonMode : 0,
                                
                                initDate : new Date(2011, 0, 1, 0, 0, 0),
                            
                                langId : '',
                                pktVer : '',
                                armVersion : '',
                                armChecksum : '',
                                cfgVersion : '',
                                cfgChecksum : '',
                                dspVersion : '',
                                dspChecksum : '',
                                picVersion : '',
                                picChecksum : '',
                                vendorName : '',
                            
                                override : false,
                            
                                dataIndex : null,
                                data : {},
                                state : {},
                                langText : {},
                            
                                noDataMode : false,
                                
                                switchConfMode : function(confMd)
                                {   
                                    if (confMd == true)
                            		{   // Navigation bar with "Config" button
                            			$("ul#navi").css({
                            				"left" : 30 + "px"
                            			});
                            			$("ul#navi li.naviSpacer").css({
                            				"line-height" : 10 + "px",
                            				"margin" : 0 + " " + 35 + "px"
                            			});			
                            			$("#viewConfig").show();
                            			$("#viewConfigSpacer").show();
                            			$("#navi").trigger("create");
                            			$("#navi").show();
                            		}
                            		else
                            		{   // Navigation bar without "Config" button
                            			$("ul#navi").css({
                            				"left" : 50 + "px"
                            			});
                            			$("ul#navi li.naviSpacer").css({
                            				"line-height" : 15 + "px",
                            				"margin" : 0 + " " + 50 + "px"
                            			});
                            			$("#viewConfig").hide();
                            			$("#viewConfigSpacer").hide();
                            			$("#navi").trigger("create");
                            			$("#navi").show();
                            		}
                                },
                            
                                start : function() 
                                {	
                            		// Disbable cache for all jQuery AJAX requests
                            		//$.ajaxSetup({ cache: false });
                            		
                            		/* Errorhandler
                            		$(document).ajaxError(function(e, xhr, opts, err){
                            			var status = (xhr || {}).status;
                            			xhr = null;
                            			setTimeout(function(){
                            				throw(e.type +' | '+ status +' | '+ opts.url);
                            			}, 0);
                            		});
                            		*/
                            
                                    $('#updateButton').hide();
                                    
                                    $('#toggleAdvanced').live('click',function(){
                                        if ($('#extendTable').css('display')=='none') 
                                        {
                                            $('#extendTable').css({'display':'block'});
                                        } 
                                        else 
                                        {
                                            $('#extendTable').css({'display':'none'});
                                        }
                                    });
                            
                                    $('#showPreset1').live('click',function(){
                                        if ($(this).attr('checked')) 
                                        {
                                            $('input').removeAttr('checked');
                                            $('#pac').attr('checked','checked');
                                            $(this).attr('checked','checked');
                                        } 
                                        else 
                                        {
                                            $('input').removeAttr('checked');
                                        }
                                        kaco.updateVisibleDayGraphs();
                                    });
                                    
                                    $('#showPreset2').live('click',function() 
                                    {
                                        if ($(this).attr('checked')) 
                                        {
                                            $('input').removeAttr('checked');
                                            $('#pvl1').attr('checked','checked');
                                            if (kaco.dcCount == 2) 
                                            {
                                                $('#pvl2').attr('checked','checked');
                                            }
                                            if (kaco.dcCount == 3) 
                                            {
                                                $('#pvl2, #pvl3').attr('checked','checked');
                                            }
                                            $(this).attr('checked','checked');
                                        } 
                                        else 
                                        {
                                            $('input').removeAttr('checked');
                                        }
                                        kaco.updateVisibleDayGraphs();
                                    });
                                    
                                    $('#showPreset3').live('click',function(){
                                        if ($(this).attr('checked')) 
                                        {
                                            $('input').removeAttr('checked');
                                            $('#pvsp1').attr('checked','checked');
                                            if(kaco.dcCount == 2) 
                                            {
                                                $('#pvsp2').attr('checked','checked');
                                            }
                                            if(kaco.dcCount == 3) 
                                            {
                                                $('#pvsp2, #pvsp3').attr('checked','checked');
                                            }
                                            $(this).attr('checked','checked');
                                        } 
                                        else 
                                        {
                                            $('input').removeAttr('checked');
                                        }
                                        kaco.updateVisibleDayGraphs();
                                    });
                                    
                                    $('.detail').live('click',function(){
                                        $('.preset').removeAttr('checked');
                                        kaco.updateVisibleDayGraphs();
                                    });
                                    
                                    $.ajax({
                                        cache: false,
                                        url : this.csv + '/initlog.txt',
                                        //async : false,
                                        context : this,
                                        success : kaco.parseInitlog
                                    });
                                    
                                    $.ajax({
                                        cache: false,
                                        url : this.csv + '/meta.csv',
                                        //async : false,
                                        context : this,
                                        success : kaco.parseMeta
                                    });
                            
                                    this.tstamp = new Date();
                            
                                    $("#chartContainer").bind("plotclick", function(event, pos, item){
                                        if (item) 
                                        {
                                            var val = item.datapoint[0];
                                            switch (kaco.mode) 
                                            {
                                                case 'ETERNAL': 
                                                {
                                                    kaco.tstamp.setYear(val);
                                                    kaco.switchToYearView();
                                                    break;
                                                }
                                                case 'YEAR': 
                                                {
                                                    kaco.tstamp.setMonth(val - 1);
                                                    kaco.switchToMonthView();
                                                    break;
                                                }
                                                case 'MONTH': 
                                                {
                                                    kaco.tstamp.setDate(val);
                                                    kaco.switchToDayView(true);
                                                    break;
                                                }
                                            }
                                        }
                                    });
                            
                                    $("#chartContainer").bind("plothover", function(event, pos, item){
                                        if (item) 
                                        {
                                            kaco.showHover(item);
                                        } 
                                        else 
                                        {
                                            $("#tooltip").remove();
                                            kaco.dataIndex = null;
                                        }
                                    });
                            		             
                                    // Start updater thread
                                    //setInterval(function() { kaco.triggerRealtimeUpdate(); }, 30000);
                                    setInterval(function() { kaco.triggerRealtimeUpdate(); }, 1000);
                                    
                                    // Timer for web config 500ms
                                    setInterval(function() { kaco.triggerWebConfig(); }, 500);
                            
                                    // Timer for web config 1 Min
                                    setInterval(function() { kaco.trigger1MinTimerWebConfig(); }, 60000);
                                    
                                    // Init graph without loading of data
                                    this.switchToDayView(false);
                            			  	
                                    //this.switchConfMode(confMode);
                                    
                                    paraData[paraIndexWebgui][PARA_OFFS] = DEBUG;
                                    switchDebug(paraData[paraIndexWebgui][PARA_OFFS]);
                                },
                                
                                showHover : function(item) 
                                {
                                    var x = item.pageX + 10;
                                    var y = item.pageY + 10;
                                    var contents = item.datapoint[1].toFixed(2);
                                    if (this.dataIndex != item.dataIndex) 
                                    {
                                        this.dataIndex = item.dataIndex;
                                        $("#tooltip").remove();
                                        $('<div id="tooltip">' + contents + '</div>').css({
                                            position : 'absolute',
                                            display : 'none',
                                            top : y,
                                            left : x,
                                            border : '1px solid #fdd',
                                            padding : '2px',
                                            'background-color' : '#ccc',
                                            opacity : 0.9
                                        }).appendTo("body").fadeIn(200);
                                    }
                                },
                            
                                parseInitlog: function(data) 
                                {
                                    var fields = data.split(';');
                                    kaco.initCount++;
                                },
                            
                                parseStatus : function(data) 
                                {
                                    var lines = data.split('\r');
                                    for (var x = 0; x < lines.length; x++) 
                                    {
                                        var entry = lines[x].split('  ');
                                        this.state[entry[0].trim()] = entry[1].trim();
                                    }
                                    if (kaco.initCount < 4)
                                        kaco.initCount++;
                                },
                            
                                parseLangText : function(data) 
                                {
                                    var lines = data.split('\r');
                                    for (var x = 0; x < lines.length; x++) 
                                    {
                                        var entry = lines[x].split('  ');
                                        this.langText[entry[0].trim()] = entry[1].trim();
                                    }
                            
                                    for (var i=0; i<12; i++)
                                    {
                                        monthNameList[i] = this.langText[i];
                                    }
                            
                                    unbekannt = this.langText[13];
                                    heute = this.langText[14];
                                    dieserMonat = this.langText[15];
                                    diesesJahr = this.langText[16];
                                    uhrzeit = this.langText[17];
                                    $('#axisLabel').html(uhrzeit);
                                    tag = this.langText[18];
                                    monat = this.langText[19];
                                    jahr = this.langText[20];
                                    keineDaten = this.langText[21];
                                    pvsp1 = this.langText[22];
                                    pvsp2 = this.langText[23];
                                    pvsp3 = this.langText[24];
                                    pvst1 = this.langText[25];
                                    pvst2 = this.langText[26];
                                    pvst3 = this.langText[27];
                                    nsp1 = this.langText[28];
                                    nsp2 = this.langText[29];
                                    nsp3 = this.langText[30];
                                    nst1 = this.langText[31];
                                    nst2 = this.langText[32];
                                    nst3 = this.langText[33];
                                    pvl1 = this.langText[34];
                                    pvl2 = this.langText[35];
                                    pvl3 = this.langText[36];
                                    temperatur = this.langText[37];
                                    nl = this.langText[38];
                            		parameter = this.langText[39];
                                    gesamtAnsicht = this.langText[41];
                                    jahresAnsicht = this.langText[42];
                                    monatsAnsicht = this.langText[43];
                                    tagesAnsicht = this.langText[44];
                                    toolAnsicht = this.langText[39];
                                    $('#viewDay').attr('title',this.langText[44]);
                                    $('a#viewDay').text(this.langText[44]);
                                    $('#viewMonth').attr('title',this.langText[43]);
                                    $('a#viewMonth').text(this.langText[43]);
                                    $('#viewYear').attr('title',this.langText[42]);
                                    $('a#viewYear').text(this.langText[42]);
                                    $('#viewEternal').attr('title',this.langText[41]);
                                    $('a#viewEternal').text(this.langText[41]);
                                    $('#viewConfig').attr('title',this.langText[39]);
                                    $('a#viewConfig').text(this.langText[39]);
                                    $('#currentScreenTitle').html(this.view.getTitle(this.tstamp));
                                    
                                    nennleistung = this.langText[12];
                                    dreiPhasig = this.langText[46];
                                    einPhasig = this.langText[45];
                                    var type = roundCommaSeparated((this.acPower / 1000), 2) + ' kW ' + nennleistung + ', ';
                            
                                    if (this.acCount == 3) 
                                    {
                                        type += dreiPhasig;
                                        $("input.a3").css( {
                                            display : 'block'
                                        });
                                    } 
                                    else 
                                    {
                                        type += einPhasig;		 
                                    }
                                    $('#type').html(type);
                                        
                                    $('th#devName').text(this.langText[48]);
                                    $('th#devAddr').text(this.langText[49]);
                                    $('th#devTyp').text(this.langText[50]);
                                    $('th#devNetAddr').text(this.langText[51]);
                                    $('th#devSerNo').text(this.langText[52]);
                                    $('th#devMacAddr').text(this.langText[53]);
                                    $('th#dataRev').text(this.langText[54]);
                            
                                    $('#lblHrefGoToFirst').attr('title',this.langText[63]);
                                    $('#lblAltGoToFirst').attr('alt',this.langText[64]);
                                    $('#lblHrefGoOneBack').attr('title',this.langText[65]);
                                    $('#lblAltGoOneBack').attr('alt',this.langText[66]);
                                    $('#lblHrefGoOneFwd').attr('title',this.langText[67]);
                                    $('#lblAltGoOneFwd').attr('alt',this.langText[68]);
                                    $('#lblHrefGoToLast').attr('title',this.langText[69]);
                                    $('#lblAltGoToLast').attr('alt',this.langText[70]);
                                    $('#toTodayLink').attr('title',this.langText[71]);
                                    $('#lblAltGoToday').attr('alt',this.langText[72]);
                            
                                    $('h3#lblValueState').text(this.langText[73]);
                                    $('h3#lblLiveValues').text(this.langText[74]);
                                    $('th#lblValueGen').text(this.langText[75]);
                                    $('th#lblValueIn').text(this.langText[76]);
                                    $('h3#lblYields').text(this.langText[77]);
                                    $('h3#lblChooseView').text(this.langText[78]);
                                    $('td#lblGridPower').text(this.langText[79]);
                                    $('td#lblGenPower').text(this.langText[80]);
                                    $('td#lblGenVolt').text(this.langText[81]);
                                    $('a#toggleAdvanced').text(this.langText[82]);
                                    $('label#lblSelGenVolt').text(this.langText[83]);
                                    $('label#lblSelGenCurr').text(this.langText[84]);
                                    $('label#lblSelGenPow').text(this.langText[85]);
                                    $('label#lblSelGridVolt').text(this.langText[86]);
                                    $('label#lblSelGridCurr').text(this.langText[87]);
                                    $('label#lblSelGridPow').text(this.langText[88]);
                                    $('label#lblSelDevTemp').text(this.langText[89]);
                                    document.getElementById("dlLinkSpan").innerHTML=this.langText[90];
                            
                                    var mon;
                                    if (this.acVoltPhaseMon == 3) 
                                    {
                                        mon = dreiPhasig;
                                    } 
                                    else 
                                    {
                                        mon = einPhasig;		 
                                    }
                                    $('#mon').html(mon);
                                    
                                    $('th#devMon').text(this.langText[91]);
                                    $('th#cntryGrid').text(this.langText[92]);
                                    $('th#pktVersion').text(this.langText[93]);
                                    loadingTxt = this.langText[94];
                                    
                                    for (var i=0; i<7; i++)
                                    {
                                        dayNameMinList[i] = this.langText[95+i];
                                    }       
                                    
                                    if ((this.mode != 'TOOL') && (this.mode != 'PARAINPUT'))
                                    {
                                        /*
                                        // Refresh date and time
                                        $.ajax({
                                            url : this.csv + '/realtime.csv',
                                            context : this,
                                            success : kaco.refreshStatus
                                        });
                                        
                                        logAddMsg('<-:  # URL: /realtime.csv');
                                        */
                                        // Show webpage
                                        if (containerOn == false)
                                        {
                                            containerOn = true;
                                            $("#container").show();
                                        }            
                                        
                                        // refresh the chart with loading of the data
                                        this.switchToDayView(true);
                                    }
                                    else
                                        kaco.updateCurrentLabel('DAY');
                                       
                                    $("#calendar").datepicker({
                                        buttonImage : 'btn_cal.gif',
                                        buttonImageOnly : true,
                                        gotoCurrent : true,
                                        showOn : 'button',
                                        changeYear : true,
                                        maxDate : new Date(),
                                        minDate : this.initDate,
                                        monthNames: monthNameList,
                                        dayNamesMin: dayNameMinList,
                                        
                                        beforeShow : function(input, inst) 
                                        {
                                            $("#calendar").datepicker("setDate", kaco.tstamp);
                                        },
                                        
                                        onSelect : function() 
                                        {
                                            var tmpDate = new Date();
                                            var pickedDate = $('#calendar').attr('value');
                                            tmpDate.setFullYear(pickedDate.substring(6,10));
                                            tmpDate.setDate(pickedDate.substring(3,5));
                                            tmpDate.setMonth((pickedDate.substring(0,2)-1));
                                            kaco.tstamp = tmpDate;
                                            kaco.switchToDayView(true);
                                        }
                                    });
                                    
                                    if (kaco.initCount < 4)
                                        kaco.initCount++;
                                },
                            	
                                loadLang : function(langName)
                                {
                                    $.ajax({
                                        url : kaco.csv + 'psta' + langName + '.txt',
                                        context : kaco,
                                        success : kaco.parseStatus
                                    });
                                    
                                    $.ajax({
                                        url : kaco.csv + 'lang' + langName + '.txt',
                                        context : kaco,
                                        success : kaco.parseLangText
                                    });
                                },
                                
                                changeLangTo : function(langName)
                                {
                                    var tmpLangName = langName.toUpperCase();
                                    if (inList(tmpLangName,langList) == false)
                                        langName = "enUS";
                                    
                                    if (langName != lang.gui1)
                                    {
                                        lang.gui1 = langName;
                                        kaco.langId = langName;
                                         
                                        this.loadLang(langName);
                                    }
                                },
                                
                                parseMeta : function(data) 
                                {
                                    /*
                                    0.)     Serial
                                    1.)     Device type
                                    2.)     MAC address
                                    3.)     IP address                      (IPv4)
                                    4.)     Inverter RS485 address          (Range 1-31)
                                    5.)     Anzahl AC-Phasen                (Range 1-3)
                                    6.)     DC entries                      (Range 1-3)
                                    7.)     AC nominal power                [W]
                                    8.)     AC voltage phases monitoring    (1: Show 1 phase voltage; 3: Show 3 phase voltages)
                                    9.)     AC current phases monitoring    (1: Show 1 phase current; 3: Show 3 phase currents)
                                    10.)    Show AC phases monitoring mode  (0: Hide; 1: Show)        
                                    11.)    Language ID                     (ISO 639)
                                    12.)    SW packet version               (for example 101 for 1.01)
                                    13.)    ARM SW-Version                  (for example 101 for 1.01)
                                    14.)    ARM SW-Version checksum
                                    15.)    CFG SW-Version                  (for example 10001 for 1.0001)
                                    16.)    CFG SW-Version checksum       
                                    17.)    DSP SW-Version                  (for example 123 for 1.23)
                                    18.)    DSP SW-Version checksum
                                    19.)    PIC SW-Version                  (for example 123 for 1.23)
                                    20.)    PIC SW-Version checksum
                                    21.)    Vendor name                     (for example 'KACO', 'SCHUECO', ...)
                                    22.)    WebConfig active/inactive
                                    */
                            
                                    var fields = data.split(';');
                                    $('#serial').html(fields[0]);
                                    $('#name').html(fields[1]);
                                    $('#mac').html(fields[2]);
                                    $('#network').html(fields[3]);
                                    $('#rsid').html(fields[4]);
                                    this.acCount = parseInt(fields[5]);       
                                    this.dcCount = parseInt(fields[6]);
                                    this.acPower = parseInt(fields[7]);           
                                    this.acVoltPhaseMon = parseInt(fields[8]);
                                    this.acCurrPhaseMon = parseInt(fields[9]);
                                    this.showAcPhaseMonMode = parseInt(fields[10]);
                                    if (this.showAcPhaseMonMode == 1)
                                    {
                                        $("#devMon").show();
                                        $("#mon").show();
                                    }
                                    else
                                    {
                                        $("#devMon").hide();
                                        $("#mon").hide();
                                    }
                                    this.langId = fields[11];
                                    lang.inverterOrg = this.langId;
                                    
                                    $('#pktVer').html(createVersionNumber(fields[12]));
                                    this.armVersion = parseInt(fields[13]);
                                    this.armChecksum = parseInt(fields[14]);
                                    this.cfgVersion = parseInt(fields[15]);
                                    this.cfgChecksum = parseInt(fields[16]);
                                    this.dspVersion = parseInt(fields[17]);
                                    this.dspChecksum = parseInt(fields[18]);
                                    this.picVersion = parseInt(fields[19]);
                                    this.picChecksum = parseInt(fields[20]);      
                                    this.vendorName = fields[21].toUpperCase();
                                    confMode = (Number(fields[22]) == 0) ? false : true;
                                    this.switchConfMode(confMode);
                                    
                                    this.changeLangTo(kaco.langId);
                                    
                                    var type = roundCommaSeparated((this.acPower / 1000), 2) + ' kW ' + nennleistung + ', ';
                                      
                                    if (this.acVoltPhaseMon == 3)
                                    {
                                        $("input.aVolt2, input.aVolt3").css({
                                            display : 'inline'
                                        });
                                    }
                                    if (this.acCurrPhaseMon == 3) 
                                    {
                                        $("input.aCurr2, input.aCurr3").css({
                                            display : 'inline'
                                        });
                                    }
                                    $('#type').html(type);
                            
                                    if (this.dcCount == 2) 
                                    {
                                        $("input.d2").css({
                                            display : 'inline'
                                        });
                                    }
                                    if (this.dcCount == 3) 
                                    {
                                        $("input.d2, input.d3").css({
                                            display : 'inline'
                                        });
                                    }
                                            
                                    // Set Vendor specific display
                                    if ((this.vendorName == 'KACO') || (this.vendorName == 'SUNPOWER') || (this.vendorName == 'BLUEPLANET'))
                                    {
                                        document.getElementById("logo").src = 'kacologo.gif';
                                        document.getElementById("logo").alt = 'KACO new energy Logo';
                                        document.title = 'KACO new energy';
                                        document.getElementById("hr1").style.background = '#D0D6D8';
                                        document.getElementById("hr1").style.color = '#D0D6D8';
                                        document.getElementById("hr2").style.background = '#D0D6D8';
                                        document.getElementById("hr2").style.color = '#D0D6D8';
                                        document.getElementById("headerBox").style.background = "#e9eaec url(kacobggr.gif) bottom left repeat-x";
                                        document.getElementById("logoBox").style.background = '#ffffff';
                                        document.getElementsByClassName("greyBox")[0].style.background = "#e9eaec url(kacobggr.gif) bottom left repeat-x";
                                        document.getElementsByClassName("greyBox")[1].style.background = "#e9eaec url(kacobggr.gif) bottom left repeat-x";
                                        document.getElementById("chartContainer").style.background = '#f9f9f9 url(kacobgch.jpg) no-repeat center center';
                                        changeFavicon('kacofavi.ico');
                                    }
                                    else if (this.vendorName == 'SCHUECO')
                                    {
                                        document.getElementById("logo").src = 'schulogo.gif';
                                        document.getElementById("logo").alt = 'Schüco International Logo';
                                        document.title = 'Schüco International';
                                        document.getElementById('hr1').style.background = '#40464b';
                                        document.getElementById('hr1').style.color = '#40464b';
                                        document.getElementById('hr2').style.background = '#40464b';
                                        document.getElementById('hr2').style.color = '#40464b';
                                        document.getElementById("headerBox").style.background = '#cccccc';
                                        document.getElementById("logoBox").style.background = '#40464b';
                                        document.getElementsByClassName("greyBox")[0].style.background = "#cccccc";
                                        document.getElementsByClassName("greyBox")[1].style.background = "#cccccc";
                                        document.getElementById("chartContainer").style.background = '#f9f9f9 url(schubgch.jpg) no-repeat center center';
                                        changeFavicon('kacofavi.ico');
                                    }
                                    else if (this.vendorName == 'INVENTUX')
                                    {
                                        document.getElementById("logo").src = 'invelogo.gif';
                                        document.getElementById("logo").alt = 'Inventux Technologies AG Logo';
                                        document.title = 'Inventux Technologies AG';
                                        document.getElementById("hr1").style.background = '#D0D6D8';
                                        document.getElementById("hr1").style.color = '#D0D6D8';
                                        document.getElementById("hr2").style.background = '#D0D6D8';
                                        document.getElementById("hr2").style.color = '#D0D6D8';
                                        document.getElementById("headerBox").style.background = "#e9eaec url(kacobggr.gif) bottom left repeat-x";
                                        document.getElementById("logoBox").style.background = '#ffffff';
                                        document.getElementsByClassName("greyBox")[0].style.background = "#e9eaec url(invebggr.gif) bottom left repeat-x";
                                        document.getElementsByClassName("greyBox")[1].style.background = "#e9eaec url(invebggr.gif) bottom left repeat-x";
                                        document.getElementById("chartContainer").style.background = '#f9f9f9 url(invebgch.jpg) no-repeat center center';
                                        changeFavicon('invefavi.ico');
                                    }
                                    else if (this.vendorName == 'WUERTH')
                                    {
                                        document.getElementById("logo").src = 'wuerlogo.gif';
                                        document.getElementById("logo").alt = 'Würth Solar Logo';
                                        document.title = 'Würth Solar';	
                                        document.getElementById("hr1").style.background = '#b9b9a0';
                                        document.getElementById("hr1").style.color = '#b9b9a0';
                                        document.getElementById("hr2").style.background = '#b9b9a0';
                                        document.getElementById("hr2").style.color = '#b9b9a0';
                                        document.getElementById("headerBox").style.background = "#d8d7cc";
                                        document.getElementById("logoBox").style.background = '#ffffff';
                                        document.getElementsByClassName("greyBox")[0].style.background = "#d8d7cc";
                                        document.getElementsByClassName("greyBox")[1].style.background = "#d8d7cc";
                                        document.getElementById("chartContainer").style.background = '#f9f9f9 url(wuerbgch.jpg) no-repeat center center';
                                        changeFavicon('kacofavi.ico');
                                    }
                            
                                    if ((this.dcCount > 2) || (this.acVoltPhaseMon > 2))
                            		{
                                        $("#textLabel1").show();
                                        $("#textLabel2").show();
                                        $("#textLabel3").show();
                                    }
                                    else if (this.dcCount > 1 || this.acVoltPhaseMon > 1) 
                            		{
                                        $("#textLabel1").show();
                                        $("#textLabel2").show();
                                        $("#textLabel3").hide();
                                    }
                                    else 
                            		{
                                        $("#textLabel1").show();
                                        $("#textLabel2").hide();
                                        $("#textLabel3").hide();
                                    }
                                    
                                    // Initialization of the language for webConfig here already necessary 
                                    // for correct display of the time-out dialog box
                                    initCfgLang();
                                    
                                    if (confMode)
                                        sendSetPara(99);
                                        
                                    $('#logo').load(function()
                                    {
                                        kaco.initCount++;
                                    });
                                    
                                    if (firstLoadData == true)
                                    {
                                        setTimeout(function(){
                                            $.ajax({
                                                cache: false,
                                                url : kaco.csv + '/realtime.csv',
                                                //async : false,
                                                context : kaco,
                                                success:function(data){
                                                    kaco.refreshStatus(data);
                                                },
                                            });
                                        }, 500);
                                        firstLoadData = false;
                                    }
                                },
                                
                                parseMetaLang : function(data) 
                                {
                                    /*
                                    11.)    Language ID                     (ISO 639)
                                    */
                                    var fields = data.split(';');
                                    this.langId = fields[11];
                                    this.changeLangTo(kaco.langId);
                                    changeCfgLangTo(kaco.langId);
                                },
                                
                                triggerRealtimeUpdate : function() 
                                {
                                    if ((this.initCount < 4) || (docReady == false))
                                        return;
                                    
                                    if (pauseRealtime == false)
                                    {
                                        if (secCnt > 0)
                                        {
                                            if ((autoRefresh == true) && ((secCnt == 4) || (secCnt == 14) || (secCnt == 24)) && (quitCfg == false))
                                                maskRefresh(true);
                                            secCnt--;
                                        }
                                        else
                                        {
                                            secCnt = 29;
                            
                                            if (startCount > 0)
                                            {
                                                startCount--;
                                            }
                                            else
                                            {
                                                $.ajax({
                                                    cache: false,
                                                    url : this.csv + '/realtime.csv',
                                                    context : this,
                                                    success : kaco.refreshStatus
                                                });
                                                if ($('#rtDbgMsg').attr('checked'))
                                                    logAddMsg('<-:  # URL: /realtime.csv');
                                                
                                                triggerTimeout(0,answerTimeout);
                                                realTimeReq = true;
                                            }
                                        }
                                    }
                                    /* Debug
                                    else
                                    {
                                        if ($('#rtDbgMsg').attr('checked'))
                                            logAddMsg('+++ Realtime Pause');
                                    }
                                    */
                                },
                                
                                triggerWebConfig : function() 
                                {
                                    if ((this.initCount < 4) || (docReady == false))
                                        return;
                                        
                                    zyclicTimerWebConfig();
                                },
                                
                                trigger1MinTimerWebConfig : function() 
                                {
                                    if ((this.initCount < 4) || (docReady == false))
                                        return;
                                        
                                    zyclic1MinTimerWebConfig();
                                },
                            
                                refreshStatus : function(data) 
                                {
                                    var fields = data.split(';');
                                    var tDate = new Date(fields[0]*1000);
                            
                                    var tmpMonth = (tDate.getUTCMonth() + 1);
                                    var tmpAMPM = 'AM';
                            
                                    var tmpHours24 = (tDate.getUTCHours());
                                    var tmpHours12 = tmpHours24;
                                    
                                    if ($('#rtDbgMsg').attr('checked'))
                                        logAddMsg("->: " + data);
                                    
                                    if (tmpHours12>12) 
                                    {
                                        tmpHours12 = tmpHours12-12;
                                        tmpAMPM = 'PM';
                                    }
                            
                                    var dateString = datumsFormat.replace('d', String(tDate.getUTCDate()).pad(2,'0'))
                                                                 .replace('m', String(tmpMonth).pad(2,'0'))
                                                                 .replace('y', tDate.getUTCFullYear())
                                                                 .replace('h', String(tmpHours24).pad(2,'0'))
                                                                 .replace('H', String(tmpHours12).pad(2,'0'))
                                                                 .replace('i', String(tDate.getUTCMinutes()).pad(2,'0'))
                                                                 .replace('s', String(tDate.getUTCSeconds()).pad(2,'0'))
                                                                 .replace('n', tmpAMPM);
                                    $('#today').html(dateString);
                            
                                    var gen = [];
                                    for (var t = 1; t <= this.dcCount; t++) 
                                    {
                                        gen.push(roundCommaSeparated(((fields[t] / (65535.0 / 1600.0)) * ((fields[t + this.dcCount + this.acCount]) / (65535.0 / 200.0)) / 1000.0), 2));
                                    }
                                    $('#nowValueGen').html(gen.join(' kW<br/>') + ' kW');
                                    $('#nowValueIn').html(roundCommaSeparated((fields[fields.length - 3] / (65535.0 / 100000.0) / 1000.0), 2) + ' kW');
                            
                                    var st = fields[fields.length - 1].trim();
                            
                                    if (this.state[st]) 
                                    {
                                        $('#nowValueState').html(this.state[st]);
                                    } 
                                    else 
                                    {
                                        $('#nowValueState').html(unbekannt);
                                    }
                                            
                                    // Show webpage
                                    if (containerOn == false)
                                    {
                                        containerOn = true;
                                        $("#container").show();
                                    }  
                                    
                                    stopTimeout(0);
                                    
                                    if (realTimeReq == true)
                                    {
                                        realTimeReq = false;
                                        if (realTimeReqCnt > 0)
                                            realTimeReqCnt--;
                                    }
                                    
                                    if ((timeoutDlgActive) && (activeMaskIndex != 0))
                                    {
                                        closeDlgBox();
                                    }
                                },
                            
                                goToToday : function() 
                                {
                                    this.loadData(this.view.getToday(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                },
                            
                                goBack : function() 
                                {
                                    this.loadData(this.view.getPrevious(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                },
                            
                                goForward : function() 
                                {
                                    this.loadData(this.view.getNext(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                },
                            
                                goFastForward : function() 
                                {
                                    this.loadData(this.view.getNextFast(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                },
                            
                                goFastBack : function() 
                                {
                                    this.loadData(this.view.getPreviousFast(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                },
                            
                                updateCurrentLabel : function(dataViewMode) 
                                {
                                    var label;
                                    switch (dataViewMode) 
                                    {
                                        case 'DAY': 
                                        {
                                            label = heute;
                                            if ((new Date).getMonth() != this.tstamp.getMonth() || (new Date).getFullYear() != this.tstamp.getFullYear() || (new Date).getDate() != this.tstamp.getDate()) 
                                            {
                                                label = this.tstamp.getDate() + '. ' + monthNameList[this.tstamp.getMonth()] + ' ' + this.tstamp.getFullYear();
                                            }
                                            break;
                                        }
                            
                                        case 'MONTH': 
                                        {
                                            label = dieserMonat;
                                            if ((new Date).getMonth() != this.tstamp.getMonth() || (new Date).getFullYear() != this.tstamp.getFullYear()) 
                                            {
                                                label = monthNameList[this.tstamp.getMonth()] + ' ' + this.tstamp.getFullYear();
                                            }
                                            break;
                                        }
                            
                                        case 'YEAR': 
                                        {
                                            label = diesesJahr;
                                            if ((new Date).getFullYear() != this.tstamp.getFullYear()) 
                                            {
                                                label = this.tstamp.getFullYear();
                                            }
                                            break;
                                        }
                                    }
                                    $('#dayLabel').html(label);
                                },
                            
                                switchToDayView : function(with_load) 
                                {
                                    pauseRealtime = false;
                                    if (this.mode == 'TOOL')
                                        sendSetPara(99);
                                    this.mode = 'DAY';
                                    this.view = dayView;
                                    this.view.range.min = (this.initDate);
                                    $("#chart").show();
                                    $('#axisLabel').html(uhrzeit);
                                    $('#chartBarNavi').show();
                                    $('#graphselector').show();
                                    $('#calenderLink').show();
                                    $('.fastfwd').show();
                                    if (with_load == true)
                                        this.loadData(this.view.getCurrent(this.tstamp));
                                    else
                                        $('#currentScreenTitle').html(this.view.getTitle(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                    $('#toTodayLink').css('visibility','visible');
                            		$("#tool").hide();
                            		$("#paraInput").hide();
                                    disableAnchor('viewConfig', false);
                                },
                            
                                switchToMonthView : function() 
                                {
                                    pauseRealtime = false;
                                    if (this.mode == 'TOOL')
                                        sendSetPara(99);
                                    this.mode = 'MONTH';
                                    this.view = monthView;
                                    this.view.range.min = (this.initDate);
                                    $("#chart").show();
                                    $('#axisLabel').html(tag);
                                    $('#chartBarNavi').show();
                                    $('.fastfwd').show();
                                    $('#graphselector').hide();
                                    $('#calenderLink').hide();
                                    this.loadData(this.view.getCurrent(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                    $('#toTodayLink').css('visibility','hidden');
                            		$("#tool").hide();
                            		$("#paraInput").hide();
                                    disableAnchor('viewConfig', false);
                                },
                            
                                switchToYearView : function() 
                                {
                                    pauseRealtime = false;
                                    if (this.mode == 'TOOL')
                                        sendSetPara(99);
                                    this.mode = 'YEAR';
                                    this.view = yearView;
                                    this.view.range.min = (this.initDate);
                                    $("#chart").show();
                                    $('#axisLabel').html(monat);
                                    $('#chartBarNavi').show();
                                    $('#calenderLink').hide();
                                    $('#graphselector').hide();
                                    $('.fastfwd').hide();
                                    this.loadData(this.view.getCurrent(this.tstamp));
                                    this.updateCurrentLabel(this.mode);
                                    $('#toTodayLink').css('visibility','hidden');
                            		$("#tool").hide();
                            		$("#paraInput").hide();
                                    disableAnchor('viewConfig', false);
                                },
                            
                                switchToEternalView : function() 
                                {
                                    pauseRealtime = false;
                                    if (this.mode == 'TOOL')
                                        sendSetPara(99);
                                    this.mode = 'ETERNAL';
                                    this.view = eternalView;
                                    this.view.range.min = (this.initDate);
                                    $("#chart").show();
                                    $('#axisLabel').html(jahr);
                                    $('#dayLabel').html(gesamtUebersicht);
                                    $('#graphselector').hide();
                                    $('#chartBarNavi').hide();
                                    this.loadData('eternal');
                                    $('#toTodayLink').css('visibility','hidden');
                            		$("#tool").hide();
                            		$("#paraInput").hide();
                                    disableAnchor('viewConfig', false);
                                },
                            	
                                switchToToolView : function() 
                            	{
                            		if (this.mode != 'TOOL')
                            		{
                            			this.mode = 'TOOL';
                            			$("#chart").show();
                            			rect = getRect (document.getElementById('chart'));
                            			$("#chart").hide();
                            			retval = moveDivTo (document.getElementById('tool'), rect.left + 20, rect.top + 10);
                            			this.view = toolView;
                                        
                            			$('#graphselector').hide();
                            			$('#chartBarNavi').hide();
                            			$('#calenderLink').hide();
                            			$('#toTodayLink').css('visibility','hidden');
                            
                                        if (dataViewDisabled == false)
                                        {
                                            disableAnchor('viewDay', true);
                                            disableAnchor('viewMonth', true);
                                            disableAnchor('viewYear', true);
                                            disableAnchor('viewEternal', true);
                                            disableAnchor('viewConfig', true);
                                            dataViewDisabled = true;
                                        }
                                        
                                        waitMsgStat = 0;
                                        testCnt = 0;
                                        treeActive = false;
                                        
                            			$("#tool").show();
                                        
                                        $("#tree").hide();
                                        initMask();
                                        $("#paraInput").show();
                                        $("#result-text").html('');
                                        $("#result-text").css({'background-color' : 'white'});     
                                        $("#result-text").show();
                                        
                                        if (paraData[paraIndexWebgui][PARA_OFFS] == true)
                                        {
                                            $("#dbg-text").show(); 
                                        }
                            		}
                            	},
                            	
                                updateVisibleDayGraphs : function() 
                                {
                                    if ((this.mode != 'TOOL') && (this.mode != 'PARAINPUT'))
                                        this.drawGraph(this.data);
                                },
                            
                                loadData : function(src) 
                                {
                                    pauseRealtime = true;
                                    this.showLoading();
                                    openThrobberBox(); // load data in standard data view
                            
                                    try 
                                    {
                                        var path = this.csv + '/' + src + '.CSV';
                            
                                        $('#currentScreenTitle').html(this.view.getTitle(this.tstamp));
                                        $.ajax( {
                                            cache: false,
                                            url : path,
                                            context : this,
                                            /*success : kaco.parseData,
                                            error : kaco.noData*/
                                            success:function(data){
                                                kaco.parseData(data);
                                                closeThrobberBox();
                                            },
                                            timeout: 120000,    /* 120 s = 2 Min */
                                            error: function(jqXHR, textStatus, errorThrown)
                                            {
                                                closeThrobberBox();
                                                if(textStatus==="timeout") 
                                                {
                                                    //do something on timeout
                                                    this.dataTimeOut();
                                                    return false;
                                                }
                                                else
                                                {   
                                                    this.noData();
                                                    return false;
                                                }
                                            }
                                        });         
                                        $('#downloadLink').attr('href', this.csv + '/' + src + '.CSV');
                                        return true;
                                    } 
                                    catch (e) 
                                    {
                                        closeThrobberBox();
                                        this.noData();
                                        return false;
                                    }
                                },
                            
                                noData : function() 
                                {
                                    kaco.noDataMode = true;
                                    $("#tooltip").remove();
                                    $('#downloadLink').attr('href', 'javascript:alert("'+keineDaten+'");');
                                    $('#graphselector').hide();
                                    $('#axisLabel').hide();
                                    $('#chartContainer').html('<p class="nodata">'+keineDaten+'</p>');
                                    $('#dayValue').html('');
                                    $('#dayLabel').html('');
                                    pauseRealtime = false;
                                },
                                
                                dataTimeOut : function() 
                                {
                                    kaco.noDataMode = true;
                                    $("#tooltip").remove();
                                    $('#downloadLink').attr('href', 'javascript:alert("load data timeout");');
                                    $('#graphselector').hide();
                                    $('#axisLabel').hide();
                                    $('#chartContainer').html('<p class="nodata">load data timeout</p>');
                                    $('#dayValue').html('');
                                    $('#dayLabel').html('');
                                    pauseRealtime = false;
                                },
                                
                                showLoading : function() 
                                {
                                    $("#tooltip").remove();
                                    $('#downloadLink').attr('href', 'javascript:alert(" '+loadingTxt+' ");');
                                    $('#graphselector').hide();
                                    $('#axisLabel').hide();
                                    $('#chartContainer').html('<p class="loading">'+loadingTxt+' </p>');
                                    $('#dayValue').html('');
                                    $('#dayLabel').html('');
                                },
                            
                                parseData : function(res) 
                                {
                                    var lines = res.split('\r');
                                    var values = [];
                            
                                    // Read the total yield value from the CSV header
                                    totalYieldFromCsvHeader = getFloatVal(lines[1].split(';')[4]);
                                    
                                    // Skip the first 3 lines (contain meta data and column headers)
                                    for (var t = 3; t < lines.length; t++) 
                                    {
                                        values[t - 3] = lines[t].split(';');
                                    }
                                    
                                    if ((values.length == 0) ||
                                        ((values.length == 1) && (values[0] == "")))
                                    {
                                        this.noData();
                                    }
                                    else
                                    {
                                        switch (this.mode) 
                                        {
                                            case 'ETERNAL':
                                            case 'MONTH':
                                            case 'YEAR': 
                                            {
                                                this.data = this.parseGrouped(values);
                                                break;
                                            }
                                            case 'DAY': 
                                            {
                                                this.data = this.parseDay(values);
                                                $('#graphselector').show();
                                                break;
                                            }
                                        }
                            
                                        this.drawGraph(this.data);
                            
                                        if (this.noDataMode) 
                                        {
                                            this.noDataMode = false;
                                            switch (this.mode) 
                                            {
                                                case 'ETERNAL': 
                                                    this.switchToEternalView();
                                                    break;
                                                case 'YEAR': 
                                                    this.switchToMonthView();
                                                    break;
                                                case 'MONTH': 
                                                    this.switchToMonthView();
                                                    break;
                                                case 'DAY':
                                                    this.switchToDayView(true);
                                                    break;
                                            }
                                        }
                                    }
                                        
                                    pauseRealtime = false;
                                },
                            
                                parseGrouped : function(values) 
                                {
                                    var curValue = 0;
                                    var flag = false;
                                    var tmp = [];
                            
                                    for (var x = 0; x < values.length - 1; x++) 
                                    {
                                        var data = values[x];
                                        var time = data[0].split("/");
                                        var day = 1, month = 0, year = 0;
                            
                                        if (time.length == 3) 
                                        {
                                            day = time[0];
                                            month = time[1] - 1;
                                            year = time[2];
                                        } 
                                        else if (time.length == 2) 
                                        {
                                            month = time[0] - 1;
                                            year = time[1];
                                        } 
                                        else 
                                        {
                                            year = data[0];
                                        }
                            
                                        var d = new Date(year, month, day, 0, 0, 0);
                            
                                        curValue += parseInt(data[1]);
                                        var tick;
                                        switch (this.mode) 
                                        {
                                            case 'YEAR': 
                                            {
                                                tick = d.getMonth() + 1;
                                                break;
                                            }
                                            case 'MONTH': 
                                            {
                                                tick = d.getDate();
                                                break;
                                            }
                                            case 'ETERNAL': 
                                            {
                                                tick = d.getFullYear();
                                                break;
                                            }
                                            default: 
                                            {
                                                tick = d;
                                            }
                                        }
                            
                                        tmp.push([tick, (data[1]/1000)]);
                                        if (flag)
                                            break;
                                    }
                            
                                    var curValueCalculated = 0
                            
                                    if (parseInt(curValue) > 0) 
                                    {
                                        curValueCalculated = curValue / 1000;
                                    }
                                    //$('#dayValue').html(roundCommaSeparated(curValueCalculated, 1) + ' kWh');
                                    
                                    // use the total yield value from the CSV header not the calculated value fron this JS-Script
                                    $('#dayValue').html(roundCommaSeparated(totalYieldFromCsvHeader, 1) + ' kWh');
                                    return tmp;
                                },
                            
                                parseDay : function(values) 
                                {
                                    var tmp = {
                                        'pvsp1' : {
                                            label : pvsp1,
                                            data : [],
                                            yaxis : 1,
                                            color : 'rgb(255,0,0)'
                                        },
                                        'pvsp2' : {
                                            label : pvsp2,
                                            data : [],
                                            yaxis : 1,
                                            color : 'rgb(255,128,128)'
                                        },
                                        'pvsp3' : {
                                            label : pvsp3,
                                            data : [],
                                            yaxis : 1,
                                            color : 'rgb(255,192,192)'
                                        },
                                        'pvst1' : {
                                            label: pvst1,
                                            data : [],
                                            yaxis : 2,
                                            color : 'rgb(0,255,0)'
                                        },
                                        'pvst2' : {
                                            label: pvst2,
                                            data : [],
                                            yaxis : 2,
                                            color : 'rgb(128,255,128)'
                                        },
                                        'pvst3' : {
                                            label: pvst3,
                                            data : [],
                                            yaxis : 2,
                                            color : 'rgb(192,255,192)'
                                        },
                                        'nsp1' : {
                                            label : nsp1,
                                            data : [],
                                            yaxis : 3,
                                            color : 'rgb(0,0,255)'
                                        },
                                        'nsp2' : {
                                            label : nsp2,
                                            data : [],
                                            yaxis : 3,
                                            color : 'rgb(128,128,255)'
                                        },
                                        'nsp3' : {
                                            label : nsp3,
                                            data : [],
                                            yaxis : 3,
                                            color : 'rgb(192,192,255)'
                                        },
                                        'nst1' : {
                                            label : nst1,
                                            data : [],
                                            yaxis : 9,
                                            color: 'rgb(255,255,0)'
                                        },
                                        'nst2' : {
                                            label : nst2,
                                            data : [],
                                            yaxis : 9,
                                            color: 'rgb(255,255,128)'
                                        },
                                        'nst3' : {
                                            label : nst3,
                                            data : [],
                                            yaxis : 9,
                                            color: 'rgb(255,255,192)'
                                        },
                                        'pvl1' : {
                                            label : pvl1,
                                            data : [],
                                            yaxis : 5,
                                            color : 'rgb(255,128,0)'
                                        },
                                        'pvl2' : {
                                            label : pvl2,
                                            data : [],
                                            yaxis : 5,
                                            color : 'rgb(255,192,64)'
                                        },
                                        'pvl3' : {
                                            label : pvl3,
                                            data : [],
                                            yaxis : 5,
                                            color : 'rgb(255,255,0)'
                                        },
                                        'temp' : {
                                            label : temperatur,
                                            data : [],
                                            yaxis : 6,
                                            color : 'rgb(0,0,0)'
                                        },
                                        'nl' : {
                                            label : nl,
                                            data : [],
                                            yaxis : 7,
                                            color : 'rgb(0,255,255)'
                                        }
                                    };
                            
                                    for (var x = 0; x < values.length - 1; x++) 
                                    {
                                        var data = values[x];
                            
                                        if (data[0] == 0)
                                            continue;
                            
                                        // Zeitstempel
                                        var time = data[0].split(":"); // data[0]     Time (07:31:13)
                                        var tstamp = new Date(this.tstamp.getFullYear(),this.tstamp.getMonth(),this.tstamp.getDate(),time[0],time[1],time[2]);
                                        tstamp.setHours(tstamp.getHours() - (tstamp.getTimezoneOffset() / 60));
                            
                                        if ((this.dcCount == 1) && (this.acVoltPhaseMon == 3))
                                        {
                                            /*
                                            data[1]     UDC1 (12345.6) - DC-Voltage 1, MPPT1 [V]
                                            data[2]     IDC1 (123.45) - DC-Current 1, MPPT1 [A]
                                            data[3]     PDC1 (123456) - DC-Power 1, MPPT1 [W]
                                            data[4]     UAC1 (12345.6) - AC-Voltage 1, Phase 1 [V]
                                            data[5]     IAC1 (123.45) - AC-Current 1, Phase 1 [A]
                                            data[6]     UAC2 (12345.6) - AC-Voltage 2, Phase 2 [V]
                                            data[7]     IAC2 (123.45) - AC-Current 2, Phase 2 [A]
                                            data[8]     UAC3 (12345.6) - AC-Voltage 3, Phase 3 [V]
                                            data[9]     IAC3 (123.45) - AC-Current 3, Phase 3 [A]
                                            data[10]    PDC (12345) - DC-Power total [W]
                                            data[11]    PAC (12345) - AC-Power total [W]
                                            data[12]    T (123.45) - Circuit board temperatur
                                            */
                                            // DC Spannung
                                            tmp.pvsp1.data.push([tstamp, getFloatVal(data[1])]);
                            
                                            // DC Strom
                                            tmp.pvst1.data.push([tstamp, getFloatVal(data[2])]);
                            
                                            // AC Spannung
                                            tmp.nsp1.data.push([tstamp, getFloatVal(data[4])]);
                                            tmp.nsp2.data.push([tstamp, getFloatVal(data[6])]);
                                            tmp.nsp3.data.push([tstamp, getFloatVal(data[8])]);
                            
                                            // AC Strom
                                            tmp.nst1.data.push([tstamp, getFloatVal(data[5])]);
                                            if (this.acCount != 1)
                                            {
                                                tmp.nst2.data.push([ tstamp, getFloatVal(data[7])]);
                                                tmp.nst3.data.push([ tstamp, getFloatVal(data[9])]);
                                            }
                            
                                            // DC Leistung
                                            tmp.pvl1.data.push([tstamp, getFloatVal(data[3]) / 1000]);
                            
                                            // AC Leistung
                                            tmp.nl.data.push([tstamp, getFloatVal(data[11]) / 1000]);
                            
                                            // Gerätetemperatur
                                            tmp.temp.data.push([tstamp, getFloatVal(data[12])]);
                                        }
                                        else if ((this.dcCount == 2) && (this.acVoltPhaseMon == 3))
                                        {
                                            /*
                                            data[1]     UDC1 (12345.6) - DC-Voltage 1, MPPT1 [V]
                                            data[2]     IDC1 (123.45) - DC-Current 1, MPPT1 [A]
                                            data[3]     PDC1 (123456) - DC-Power 1, MPPT1 [W]
                                            data[4]     UDC2 (12345.6) - DC-Voltage 2, MPPT2 [V]
                                            data[5]     IDC2 (123.45) - DC-Current 2, MPPT2 [A]
                                            data[6]     PDC2 (123456) - DC-Power 2, MPPT2 [W]
                                            data[7]     UAC1 (12345.6) - AC-Voltage 1, Phase 1 [V]
                                            data[8]     IAC1 (123.45) - AC-Current 1, Phase 1 [A]
                                            data[9]     UAC2 (12345.6) - AC-Voltage 2, Phase 2 [V]
                                            data[10]    IAC2 (123.45) - AC-Current 2, Phase 2 [A]
                                            data[11]    UAC3 (12345.6) - AC-Voltage 3, Phase 3 [V]
                                            data[12]    IAC3 (123.45) - AC-Current 3, Phase 3 [A]
                                            data[13]    PDC (12345) - DC-Power total [W]
                                            data[14]    PAC (12345) - AC-Power total [W]
                                            data[15]    T (123.45) - Circuit board temperatur
                                            */
                                            // DC Spannung
                                            tmp.pvsp1.data.push([tstamp, getFloatVal(data[1])]);
                                            tmp.pvsp2.data.push([tstamp, getFloatVal(data[4])]);
                            
                                            // DC Strom
                                            tmp.pvst1.data.push([tstamp, getFloatVal(data[2])] );
                                            tmp.pvst2.data.push([tstamp, getFloatVal(data[5])] );
                            
                                            // AC Spannung
                                            tmp.nsp1.data.push([tstamp, getFloatVal(data[7])]);
                                            tmp.nsp2.data.push([tstamp, getFloatVal(data[9])]);
                                            tmp.nsp3.data.push([tstamp, getFloatVal(data[11])]);
                            
                                            // AC Strom
                                            tmp.nst1.data.push([tstamp, getFloatVal(data[8])]);
                                            if (this.acCount != 1)
                                            {
                                                tmp.nst2.data.push( [ tstamp, getFloatVal(data[10]) ]);
                                                tmp.nst3.data.push( [ tstamp, getFloatVal(data[12]) ]);
                                            }
                            
                                            // DC Leistung
                                            tmp.pvl1.data.push([tstamp, getFloatVal(data[3]) / 1000]);
                                            tmp.pvl2.data.push([tstamp, getFloatVal(data[6]) / 1000]);
                            
                                            // AC Leistung
                                            tmp.nl.data.push([tstamp, getFloatVal(data[14]) / 1000]);
                            
                                            // Gerätetemperatur
                                            tmp.temp.data.push([tstamp, getFloatVal(data[15])]);
                                        }
                                        else if ((this.dcCount == 3) && (this.acVoltPhaseMon == 3)) 
                                        {
                                            /*
                                            data[0]     Time (07:31:13)
                                            data[1]     UDC1 (12345.6) - DC-Voltage 1, MPPT1 [V]
                                            data[2]     IDC1 (123.45) - DC-Current 1, MPPT1 [A]
                                            data[3]     PDC1 (123456) - DC-Power 1, MPPT1 [W]
                                            data[4]     UDC2 (12345.6) - DC-Voltage 2, MPPT2 [V]
                                            data[5]     IDC2 (123.45) - DC-Current 2, MPPT2 [A]
                                            data[6]     PDC2 (123456) - DC-Power 2, MPPT2 [W]
                                            data[7]     UDC3 (12345.6) - DC-Voltage 3, MPPT3 [V]
                                            data[8]     IDC3 (123.45) - DC-Current 3, MPPT3 [A]
                                            data[9]     PDC3 (123456) - DC-Power 3, MPPT3 [W]
                                            data[10]    UAC1 (12345.6) - AC-Voltage 1, Phase 1 [V]
                                            data[11]    IAC1 (123.45) - AC-Current 1, Phase 1 [A]
                                            data[12]    UAC2 (12345.6) - AC-Voltage 2, Phase 2 [V]
                                            data[13]    IAC2 (123.45) - AC-Current 2, Phase 2 [A]
                                            data[14]    UAC3 (12345.6) - AC-Voltage 3, Phase 3 [V]
                                            data[15]    IAC3 (123.45) - AC-Current 3, Phase 3 [A]
                                            data[16]    PDC (12345) - DC-Power total [W]
                                            data[17]    PAC (12345) - AC-Power total [W]
                                            data[18]    T (123.45) - Circuit board temperatur
                                            */
                                            // DC Spannung
                                            tmp.pvsp1.data.push([tstamp, getFloatVal(data[1])]);
                                            tmp.pvsp2.data.push([tstamp, getFloatVal(data[4])]);
                                            tmp.pvsp3.data.push([tstamp, getFloatVal(data[7])]);
                            
                                            // DC Strom
                                            tmp.pvst1.data.push([tstamp, getFloatVal(data[2])]);
                                            tmp.pvst2.data.push([tstamp, getFloatVal(data[5])]);
                                            tmp.pvst3.data.push([tstamp, getFloatVal(data[8])]);
                            
                                            // AC Spannung
                                            tmp.nsp1.data.push([tstamp, getFloatVal(data[10])]);
                                            tmp.nsp2.data.push([tstamp, getFloatVal(data[12])]);
                                            tmp.nsp3.data.push([tstamp, getFloatVal(data[14])]);
                            
                                            // AC Strom
                                            tmp.nst1.data.push([tstamp, getFloatVal(data[11])]);
                                            tmp.nst2.data.push([tstamp, getFloatVal(data[13])]);
                                            tmp.nst3.data.push([tstamp, getFloatVal(data[15])]);
                            
                                            // DC Leistung
                                            tmp.pvl1.data.push([tstamp, getFloatVal(data[3]) / 1000]);
                                            tmp.pvl2.data.push([tstamp, getFloatVal(data[6]) / 1000]);
                                            tmp.pvl3.data.push([tstamp, getFloatVal(data[9]) / 1000]);
                            
                                            // AC Leistung
                                            tmp.nl.data.push([tstamp, getFloatVal(data[17]) / 1000]);
                            
                                            // Gerätetemperatur
                                            tmp.temp.data.push([tstamp, getFloatVal(data[18])]);
                                        }
                                        else if ((this.dcCount == 1) && (this.acVoltPhaseMon == 1)) 
                                        {
                                            /*
                                            data[0]     Time (07:31:13)
                                            data[1]     UDC1 (12345.6) - DC-Voltage 1, MPPT1 [V]
                                            data[2]     IDC1 (123.45) - DC-Current 1, MPPT1 [A]
                                            data[3]     PDC1 (123456) - DC-Power 1, MPPT1 [W]
                                            data[4]     UAC1 (12345.6) - AC-Voltage 1, Phase 1 [V]
                                            data[5]     IAC1 (123.45) - AC-Current 1, Phase 1 [A]
                                            data[6]     PDC (12345) - DC-Power total [W]
                                            data[7]     PAC (12345) - AC-Power total [W]
                                            data[8]     T (123.45) - Circuit board temperatur
                                            */
                                            // DC Spannung
                                            tmp.pvsp1.data.push([tstamp, getFloatVal(data[1])]);
                            
                                            // DC Strom
                                            tmp.pvst1.data.push([tstamp, getFloatVal(data[2])]);
                            
                                            // AC Spannung
                                            tmp.nsp1.data.push([tstamp, getFloatVal(data[4])]);
                            
                                            // AC Strom
                                            tmp.nst1.data.push([tstamp, getFloatVal(data[5])]);
                            
                                            // DC Leistung
                                            tmp.pvl1.data.push([tstamp, getFloatVal(data[3]) / 1000]);
                            
                                            // AC Leistung
                                            tmp.nl.data.push([tstamp, getFloatVal(data[7]) / 1000]);
                            
                                            // Gerätetemperatur
                                            tmp.temp.data.push([tstamp, getFloatVal(data[8])]);
                                        }
                                        else if ((this.dcCount == 2) && (this.acVoltPhaseMon == 1)) 
                                        {
                                            /*
                                            data[0]     Time (07:31:13)
                                            data[1]     UDC1 (12345.6) - DC-Voltage 1, MPPT1 [V]
                                            data[2]     IDC1 (123.45) - DC-Current 1, MPPT1 [A]
                                            data[3]     PDC1 (123456) - DC-Power 1, MPPT1 [W]
                                            data[4]     UDC2 (12345.6) - DC-Voltage 2, MPPT2 [V]
                                            data[5]     IDC2 (123.45) - DC-Current 2, MPPT2 [A]
                                            data[6]     PDC2 (123456) - DC-Power 2, MPPT2 [W]
                                            data[7]     UAC1 (12345.6) - AC-Voltage 1, Phase 1 [V]
                                            data[8]     IAC1 (123.45) - AC-Current 1, Phase 1 [A]
                                            data[9]     PDC (12345) - DC-Power total [W]
                                            data[10]    PAC (12345) - AC-Power total [W]
                                            data[11]    T (123.45) - Circuit board temperatur
                                            */
                                            // DC Spannung
                                            tmp.pvsp1.data.push([tstamp, getFloatVal(data[1])]);
                                            tmp.pvsp2.data.push([tstamp, getFloatVal(data[4])]);
                            
                                            // DC Strom
                                            tmp.pvst1.data.push([tstamp, getFloatVal(data[2])]);
                                            tmp.pvst2.data.push([tstamp, getFloatVal(data[5])]);
                            
                                            // AC Spannung
                                            tmp.nsp1.data.push([tstamp, getFloatVal(data[7])]);
                            
                                            // AC Strom
                                            tmp.nst1.data.push([tstamp, getFloatVal(data[8])]);
                            
                                            // DC Leistung
                                            tmp.pvl1.data.push([tstamp, getFloatVal(data[3]) / 1000]);
                                            tmp.pvl2.data.push([tstamp, getFloatVal(data[6]) / 1000]);
                            
                                            // AC Leistung
                                            tmp.nl.data.push([tstamp, getFloatVal(data[10]) / 1000]);
                            
                                            // Gerätetemperatur
                                            tmp.temp.data.push([tstamp, getFloatVal(data[11])]);
                                        }
                                        else if ((this.dcCount == 3) && (this.acVoltPhaseMon == 1)) 
                                        {
                                            /*
                                            data[0]     Time (07:31:13)
                                            data[1]     UDC1 (12345.6) - DC-Voltage 1, MPPT1 [V]
                                            data[2]     IDC1 (123.45) - DC-Current 1, MPPT1 [A]
                                            data[3]     PDC1 (123456) - DC-Power 1, MPPT1 [W]
                                            data[4]     UDC2 (12345.6) - DC-Voltage 2, MPPT2 [V]
                                            data[5]     IDC2 (123.45) - DC-Current 2, MPPT2 [A]
                                            data[6]     PDC2 (123456) - DC-Power 2, MPPT2 [W]
                                            data[7]     UDC3 (12345.6) - DC-Voltage 3, MPPT3 [V]
                                            data[8]     IDC3 (123.45) - DC-Current 3, MPPT3 [A]
                                            data[9]     PDC3 (123456) - DC-Power 3, MPPT3 [W]
                                            data[10]    UAC1 (12345.6) - AC-Voltage 1, Phase 1 [V]
                                            data[11]    IAC1 (123.45) - AC-Current 1, Phase 1 [A]
                                            data[12]    PDC (12345) - DC-Power total [W]
                                            data[13]    PAC (12345) - AC-Power total [W]
                                            data[14]    T (123.45) - Circuit board temperatur
                                            */
                                            // DC Spannung
                                            tmp.pvsp1.data.push([tstamp, getFloatVal(data[1])]);
                                            tmp.pvsp2.data.push([tstamp, getFloatVal(data[4])]);
                                            tmp.pvsp3.data.push([tstamp, getFloatVal(data[7])]);
                            
                                            // DC Strom
                                            tmp.pvst1.data.push([tstamp, getFloatVal(data[2])]);
                                            tmp.pvst2.data.push([tstamp, getFloatVal(data[5])]);
                                            tmp.pvst3.data.push([tstamp, getFloatVal(data[8])]);
                            
                                            // AC Spannung
                                            tmp.nsp1.data.push([tstamp, getFloatVal(data[10])]);
                            
                                            // AC Strom
                                            tmp.nst1.data.push([tstamp, getFloatVal(data[11])]);
                            
                                            // DC Leistung
                                            tmp.pvl1.data.push([tstamp, getFloatVal(data[3]) / 1000]);
                                            tmp.pvl2.data.push([tstamp, getFloatVal(data[6]) / 1000]);
                                            tmp.pvl3.data.push([tstamp, getFloatVal(data[9]) / 1000]);
                            
                                            // AC Leistung
                                            tmp.nl.data.push([tstamp, getFloatVal(data[13]) / 1000]);
                            
                                            // Gerätetemperatur
                                            tmp.temp.data.push([tstamp, getFloatVal(data[14])]);
                                        }
                                    }
                                    
                                    var curValue = 0;
                                    var diff = 5;
                                  
                                    for (var xx = 0; xx < tmp.nl.data.length; xx++) 
                                    {
                                        if (xx > 0) 
                                        {
                                            diff = ((tmp.nl.data[xx][0].getTime() - tmp.nl.data[xx-1][0].getTime())/60000);
                                        }
                                        curValue += tmp.nl.data[xx][1] * diff;
                                    }
                            
                                    var curValueCalculated = 0;
                            
                                    if (parseInt(curValue) > 0)
                                    {
                                        curValueCalculated = curValue / 60.0;
                                    }
                            
                                    //$('#dayValue').html(roundCommaSeparated(curValueCalculated, 1) + ' kWh');
                                    
                                    // use the total yield value from the CSV header not the calculated value fron this JS-Script
                                    $('#dayValue').html(roundCommaSeparated(totalYieldFromCsvHeader, 1) + ' kWh');
                            
                                    return tmp;
                                },
                            
                                drawGraph : function(data) 
                                {
                                    if (this.override) 
                                    {
                                        $("outOfBoundInfo").show();
                                    } 
                                    else 
                                    {
                                        $("outOfBoundInfo").hide();
                                    }
                                    this.override = false;
                                    var config = this.view.getChartConfig(data);
                                    if (config != undefined)
                                    {
                                        $.plot($("#chartContainer"), config.chart, config.options);
                                        $('#axisLabel').show();
                                    }
                                }
                            }
                            
                            var toolView = 
                            {
                            	getTitle : function(tstamp) 
                            	{
                            		return toolAnsicht;
                            	}
                            }
                            
                            var eternalView = {
                                range : {
                                    min : (new Date(2006, 0, 1, 0, 0, 0)).getTime(),
                                    max : (new Date()).getTime()
                                },
                            
                                getTitle : function(tstamp) 
                                {
                                    return gesamtAnsicht;
                                },
                            
                                getChartConfig : function(data) 
                                {
                                    var ticks = [];
                                    var min = 0;
                                    var max = 25000;
                            
                                    if (data.length > 0)
                                    {
                                        for(var xyz = 0; xyz < data.length; ++xyz) 
                                        {
                                            ticks.push(data[xyz][0]);
                                        }
                            
                                        return {
                                            chart : [ {
                                                label : 'E [kWh]',
                                                data : data,
                                                bars : {
                                                    show : true,
                                                    barWidth : 0.5,
                                                    align : 'center'
                                                }
                                            } ],
                                            options : {
                                                grid : {
                                                    clickable : true,
                                                    hoverable : true,
                                                    autoHighlight : true
                                                },
                                                legend : {
                                                    position : 'nw'
                                                },
                                                xaxis : {
                                                    ticks : ticks,
                                                    tickDecimals : 0,
                                                    max : data[data.length-1][0] + 1,
                                                    min : data[0][0] - 1
                                                },
                                                colors : [ "#003871" ]
                                            }
                                        };
                                    }
                                },
                                getCurrent : function(tstamp) 
                                {
                                    if (tstamp.getTime() < this.range.min) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.min);
                                    }
                                    if (tstamp.getTime() > this.range.max) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.max);
                                    }
                                    return tstamp.getFullYear();
                                },
                            
                                getPrevious : function(tstamp) 
                                {
                                    tstamp.setFullYear(tstamp.getFullYear() - 1);
                                    return this.getCurrent(tstamp);
                                },
                            
                                getNext : function(tstamp) 
                                {
                                    tstamp.setFullYear(tstamp.getFullYear() + 1);
                                    return this.getCurrent(tstamp);
                                }
                            }
                            
                            var yearView = {
                                range : {
                                    min : (new Date(2008, 0, 1, 0, 0, 0)).getTime(),
                                    max : (new Date()).getTime()
                                },
                            
                                getTitle : function(tstamp) 
                                {
                                    return jahresAnsicht + ' ' + tstamp.getFullYear();
                                },
                            
                                getChartConfig : function(data) 
                                {
                                    return {
                                        chart : [ {
                                            label : 'E [kWh]',
                                            data : data,
                                            bars : {
                                                show : true,
                                                barWidth : 0.5,
                                                align : 'center'
                                            }
                                        } ],
                                        options : {
                                            grid : {
                                                clickable : true,
                                                hoverable : true,
                                                autoHighlight : true
                                            },
                                            legend : {
                                                position : 'nw',
                                                opacity : 0.4,
                                                style : 'bar'
                                            },
                                            xaxis : {
                                                ticks : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ],
                                                tickDecimals : 0,
                                                max : 13,
                                                min : 0
                                            },
                                            colors : [ "#003871" ]
                                        }
                                    };
                                },
                            
                                getCurrent : function(tstamp) 
                                {
                                    if (tstamp.getTime() < this.range.min) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.min);
                                    }
                                    if (tstamp.getTime() > this.range.max) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.max);
                                    }
                                    return tstamp.getFullYear();
                                },
                            
                                getPrevious : function(tstamp) 
                                {
                                    tstamp.setFullYear(tstamp.getFullYear() - 1);
                                    return this.getCurrent(tstamp);
                                },
                            
                                getNext : function(tstamp) 
                                {
                                    tstamp.setFullYear(tstamp.getFullYear() + 1);
                                    return this.getCurrent(tstamp);
                                }
                            }
                            
                            var monthView = {
                                range : {
                                    min : (new Date(2009, 0, 1, 0, 0, 0)).getTime(),
                                    max : (new Date()).getTime()
                                },
                            
                                getTitle : function(tstamp) 
                                {
                                    return monatsAnsicht + ' ' + monthNameList[tstamp.getMonth()] + ' ' + tstamp.getFullYear();
                                },
                            
                                getChartConfig : function(data) 
                                {
                                    var tmp = yearView.getChartConfig(data);
                                    tmp.options.xaxis = {
                                        ticks : [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 ],
                                        tickDecimals : 0,
                                        max : 32,
                                        min : 0
                                    }
                                    return tmp;
                                },
                            
                                getCurrent : function(tstamp) 
                                {
                                    if (tstamp.getTime() < this.range.min) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.min);
                                    }
                                    if (tstamp.getTime() > this.range.max) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.max);
                                    }
                                    var m = (tstamp.getMonth() + 1) + '';
                                    return tstamp.getFullYear() + '' + m.pad(2, '0');
                                },
                            
                                getPrevious : function(tstamp) 
                                {
                                    tstamp.setMonth(tstamp.getMonth() - 1);
                                    return this.getCurrent(tstamp);
                                },
                            
                                getNext : function(tstamp) 
                                {
                                    tstamp.setMonth(tstamp.getMonth() + 1);
                                    return this.getCurrent(tstamp);
                                },
                            
                                getPreviousFast : function(tstamp) 
                                {
                                    tstamp.setYear(tstamp.getFullYear() - 1);
                                    return this.getCurrent(tstamp);
                                },
                            
                                getNextFast : function(tstamp) 
                                {
                                    tstamp.setYear(tstamp.getFullYear() + 1);
                                    return this.getCurrent(tstamp);
                                }
                            };
                            
                            var dayView = {
                                range : {
                                    min : (new Date(2012, 1, 1, 0, 0, 0)).getTime(),
                                    max : (new Date()).getTime()
                                },
                            
                                getTitle : function(tstamp) 
                                {
                                    return tagesAnsicht + ' ' + tstamp.getDate() + '. ' + monthNameList[tstamp.getMonth()] + ' ' + tstamp.getFullYear();
                                },
                            
                                getChartConfig : function(data) 
                                {
                                    /*
                                    * var label; switch (kaco.dayGraph) { case 'pvsp1': case 'pvsp2': case
                                    * 'pvsp3': { label = 'U [V]'; break; }
                                    * 
                                    * case 'pvst1': case 'pvst2': case 'pvst3': { label = 'I [A]'; break; }
                                    * 
                                    * case 'nsp1': case 'nsp2': case 'nsp3': { label = 'U [V]'; break; }
                                    * 
                                    * case 'nst1': case 'nst2': case 'nst3': { label = 'I [A]'; break; }
                                    * 
                                    * case 'nfr': { label = 'F [Hz]'; break; } case 'temp': { label = 'T
                                    * [°C]'; break; } case 'nl': { label = "P [kW]"; break; } }
                                    */
                            
                                    var showData = [];
                                    $('#graphselector').find("input:checked").each(function() {
                                        var key = $(this).attr("value");
                                        if (key && data[key])
                                            showData.push(data[key]);
                                    });
                            
                                    return {
                                        chart : showData,
                                        /*
                                        * { label: label, data: data, lines: { show: true } },
                                        */
                                        options : {
                                            grid : {
                                                clickable : true,
                                                hoverable : true,
                                                autoHighlight : true
                                            },
                                            legend : {
                                                position : 'nw'
                                            },
                                            xaxis : {
                                                mode : 'time',
                                                timeformat : '%h:%M'
                                            },
                                            yaxis : {
                                                position : "left",
                                                min : 0,
                                                max : null                   
                                            },
                                        }
                                    };
                                },
                            
                                getCurrent : function(tstamp) 
                                {
                                    if (tstamp.getTime() < this.range.min) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.min);
                                    }
                                    if (tstamp.getTime() > this.range.max) 
                                    {
                                        kaco.override = true;
                                        tstamp.setTime(this.range.max);
                                    }
                                    var m = (tstamp.getMonth() + 1) + '';
                                    var d = tstamp.getDate() + '';
                                    return tstamp.getFullYear() + '' + m.pad(2, '0') + d.pad(2, '0');
                                },
                            
                                getPrevious : function(tstamp) 
                                {
                                    tstamp.setDate(tstamp.getDate() - 1);
                                    return this.getCurrent(tstamp);
                                },
                            
                                getNext : function(tstamp) 
                                {
                                    tstamp.setDate(tstamp.getDate() + 1);
                                    return this.getCurrent(tstamp);
                                },
                            
                                getPreviousFast : function(tstamp) 
                                {
                                    tstamp.setMonth(tstamp.getMonth() - 1);
                                    return this.getCurrent(tstamp);
                                },
                                
                                getToday : function(tstamp) 
                                {
                                    tstamp = new Date();
                                    kaco.tstamp = tstamp;
                                    return this.getCurrent(tstamp);
                                },
                            
                                getNextFast : function(tstamp) 
                                {
                                    tstamp.setMonth(tstamp.getMonth() + 1);
                                    return this.getCurrent(tstamp);
                                }
                            };
                            

                            1 Antwort Letzte Antwort
                            0
                            • OliverIOO Offline
                              OliverIOO Offline
                              OliverIO
                              schrieb am zuletzt editiert von
                              #14

                              @don_hasso

                              Bitte noch die code Tags setzen
                              Sonst werden uU Teile verschluckt

                              Kennst du das?
                              https://forum.iobroker.net/topic/42163/kaco-wechselrichter-und-modbus

                              Meine Adapter und Widgets
                              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                              Links im Profil

                              D 1 Antwort Letzte Antwort
                              0
                              • OliverIOO OliverIO

                                @don_hasso

                                Bitte noch die code Tags setzen
                                Sonst werden uU Teile verschluckt

                                Kennst du das?
                                https://forum.iobroker.net/topic/42163/kaco-wechselrichter-und-modbus

                                D Offline
                                D Offline
                                Don_Hasso
                                schrieb am zuletzt editiert von
                                #15

                                @oliverio :-) :man-facepalming: Nein, den Thread kannte ich nicht. Aber jetzt läuft es über modbus. Nochmals vielen Dank!

                                1 Antwort Letzte Antwort
                                0
                                Antworten
                                • In einem neuen Thema antworten
                                Anmelden zum Antworten
                                • Älteste zuerst
                                • Neuste zuerst
                                • Meiste Stimmen


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                712

                                Online

                                32.4k

                                Benutzer

                                81.5k

                                Themen

                                1.3m

                                Beiträge
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                ioBroker Community 2014-2025
                                logo
                                • Anmelden

                                • Du hast noch kein Konto? Registrieren

                                • Anmelden oder registrieren, um zu suchen
                                • Erster Beitrag
                                  Letzter Beitrag
                                0
                                • Home
                                • Aktuell
                                • Tags
                                • Ungelesen 0
                                • Kategorien
                                • Unreplied
                                • Beliebt
                                • GitHub
                                • Docu
                                • Hilfe