[V3.5.1] Kostal-Wechselrichter per http-API ansprechen
Verfasst: Di Jun 09, 2020 2:11 pm
Ich möchte bei mir gerne ein paar Werte vom PV-Wechselrichter auslesen.
Dieser ist ein Kostal Piko 4.2 (altes Modell).
Auf der HTTP-Seite des Wechselrichters bekommt man ohne Einloggen bereits die aktuellen Leistungswerte angezeigt. Diese möchte ich nun aus dieser Seite extrahieren.
HTTP-Seite:
Mir geht es dabei um die zwei Leistungswerte in Watt und den aktuellen Betriebsmodus:
Ein direkter Login mit http://user:password@192.168.1.30 ist bei dieser Seite anscheinend nicht möglich, was toll wäre, denn man würde dann noch mehr Daten rausbekommen. Aber die aktuellen Werte wäre schon mal ein guter Anfang.
Dieser ist ein Kostal Piko 4.2 (altes Modell).
Auf der HTTP-Seite des Wechselrichters bekommt man ohne Einloggen bereits die aktuellen Leistungswerte angezeigt. Diese möchte ich nun aus dieser Seite extrahieren.
HTTP-Seite:
Code: Alles auswählen
<head><style type="text/css">@charset "UTF-8";[ng\:cloak],[ng-cloak],[data-ng-cloak],[x-ng-cloak],.ng-cloak,.x-ng-cloak,.ng-hide:not(.ng-hide-animate){display:none !important;}ng\:form{display:block;}.ng-animate-shim{visibility:hidden;}.ng-anchor{position:absolute;}</style>
<link rel="icon" href="/assets/favicon.ico">
<title ng-bind="inverterTypeName + ' <> ' + inverterName" class="ng-binding">PIKO 4.2 <> Photovoltaik</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<!--Deaktivate Chaching to avoid problems-->
<meta http-equiv="cache-control: private, max-age=0, no-cache" content="no-store">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
<!-- compiled CSS -->
<link rel="stylesheet" type="text/css" href="assets/kbApp-1.1.4.css">
</head>
<body>
<!-- Loading -->
<div kb-hide-after-init="" class="loader" style="z-index: 3000; display: none;">
<div class="loader-inner-big">
<i class="icon-spinner animate-spin"></i>
<div id="errorMsg"></div>
</div>
</div>
<!-- Page -->
<div class="kbContainer">
<div class="kbBanner">
<div class="kbLogoPrim"></div>
<div class="kbLogoSec"></div>
<div class="kbLanguageSelectBar ng-scope" ng-controller="languageSelCtrl">
<!-- ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)" class="active">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_de_DE"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_en_GB"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_es_ES"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_it_IT"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_fr_FR"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_el_GR"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_pt_PT"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_nl_NL"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_cs_CZ"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_hu_HU"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_zh_HANS"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages --><div ng-repeat="language in languages" class="ng-scope">
<div kb-language-select-item=""><div id="languageSelectItem">
<a href="" ng-click="selectLanguage(language)">
<div ng-class="'img_language_flags_f_' + language" class="img_language_flags_f_pl_PL"></div>
</a>
</div></div>
</div><!-- end ngRepeat: language in languages -->
</div>
</div>
<div class="kbPage">
<div class="kbDivider"></div>
<div class="kbNav ng-scope" ng-controller="navigationCtrl">
<kb-navigation nodes="menu" class="ng-isolate-scope"><ul class="ng-scope">
<!-- ngRepeat: node in nodes --><kb-navigation-node ng-repeat="node in nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/home" ng-class="{'active':isActive()}" class="active">
<!-- ngIf: node.icon != '' --><i ng-if="node.icon != ''" class="icon-house"></i><!-- end ngIf: node.icon != '' -->
<div translate="ID_289" class="ng-scope">Home</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in nodes --><kb-navigation-node ng-repeat="node in nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 --><div ng-if="node.nodes.length > 0" class="ng-scope">
<a ng-click="toggleCollapse()">
<!-- ngIf: node.icon != '' --><i ng-if="node.icon != ''" class="icon-gauge"></i><!-- end ngIf: node.icon != '' -->
<div translate="ID_290" class="ng-scope">Momentanwerte</div>
</a>
</div><!-- end ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 --><ul ng-if="node.nodes.length > 0" class="ng-scope" style="display: none;">
<!-- ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/current-values/pv-generator" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_291" class="ng-scope">PV-Generator</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/current-values/battery" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_200" class="ng-scope">Batterie</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/current-values/home" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_292" class="ng-scope">Haus</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/current-values/grid" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_202" class="ng-scope">Netz</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/current-values/analog-inputs" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_293" class="ng-scope">Analogeingänge</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/current-values/s0-in" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_351" class="ng-scope">S0-Eingang</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --></ul><!-- end ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in nodes --><kb-navigation-node ng-repeat="node in nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 --><div ng-if="node.nodes.length > 0" class="ng-scope">
<a ng-click="toggleCollapse()">
<!-- ngIf: node.icon != '' --><i ng-if="node.icon != ''" class="icon-graph-bar"></i><!-- end ngIf: node.icon != '' -->
<div translate="ID_294" class="ng-scope">Statistik</div>
</a>
</div><!-- end ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 --><ul ng-if="node.nodes.length > 0" class="ng-scope" style="display: none;">
<!-- ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/statistics/day" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_311" class="ng-scope">Tag</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/statistics/total" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_312" class="ng-scope">Gesamt</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/statistics/log-data" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_372" class="ng-scope">Logdaten</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --></ul><!-- end ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in nodes --><kb-navigation-node ng-repeat="node in nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 --><div ng-if="node.nodes.length > 0" class="ng-scope">
<a ng-click="toggleCollapse()">
<!-- ngIf: node.icon != '' --><i ng-if="node.icon != ''" class="icon-cog"></i><!-- end ngIf: node.icon != '' -->
<div translate="ID_6" class="ng-scope">Einstellungen</div>
</a>
</div><!-- end ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 --><ul ng-if="node.nodes.length > 0" class="ng-scope" style="display: none;">
<!-- ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 --><div ng-if="node.nodes.length > 0" class="ng-scope">
<a ng-click="toggleCollapse()">
<!-- ngIf: node.icon != '' -->
<div translate="ID_295" class="ng-scope">Allgemein</div>
</a>
</div><!-- end ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 --><ul ng-if="node.nodes.length > 0" class="ng-scope" style="display: none;">
<!-- ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/general/inverter-name" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_9" class="ng-scope">Wechselrichtername</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/general/date-time" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_11" class="ng-scope">Datum/Uhrzeit</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/general/login" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_315" class="ng-scope">Login</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --></ul><!-- end ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 --><div ng-if="node.nodes.length > 0" class="ng-scope">
<a ng-click="toggleCollapse()">
<!-- ngIf: node.icon != '' -->
<div translate="ID_12" class="ng-scope">Kommunikation</div>
</a>
</div><!-- end ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 --><ul ng-if="node.nodes.length > 0" class="ng-scope" style="display: none;">
<!-- ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/communication/inverter-address" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_319" class="ng-scope">Wechselrichter Adresse</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/communication/network" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_320" class="ng-scope">Netzwerk (TCP/IP)</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/communication/rs485" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_321" class="ng-scope">RS485</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/communication/modem" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_373" class="ng-scope">Modem</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --></ul><!-- end ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/portal-configuration" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_15" class="ng-scope">Portalkonfiguration</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/data-logger" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_296" class="ng-scope">Datenlogger</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/overvoltage-protection" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_443" class="ng-scope">Überspannungsschutz</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/generator-configuration" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_421" class="ng-scope">Generatorkonfiguration</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/battery-configuration" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_297" class="ng-scope">Batteriekonfiguration</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/switching-output" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_298" class="ng-scope">Schaltausgang</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/settings/analog-inputs" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_293" class="ng-scope">Analogeingänge</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --></ul><!-- end ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in nodes --><kb-navigation-node ng-repeat="node in nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope">
<!-- ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 --><div ng-if="node.nodes.length > 0" class="ng-scope">
<a ng-click="toggleCollapse()">
<!-- ngIf: node.icon != '' --><i ng-if="node.icon != ''" class="icon-lightbulb"></i><!-- end ngIf: node.icon != '' -->
<div translate="ID_300" class="ng-scope">Info</div>
</a>
</div><!-- end ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 --><ul ng-if="node.nodes.length > 0" class="ng-scope" style="display: none;">
<!-- ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/info/events" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_301" class="ng-scope">Ereignisse</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --><kb-navigation-node ng-repeat="node in node.nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/info/versions" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' -->
<div translate="ID_302" class="ng-scope">Versionen</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in node.nodes --></ul><!-- end ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in nodes --><kb-navigation-node ng-repeat="node in nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope separation">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/login" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' --><i ng-if="node.icon != ''" class="icon-login"></i><!-- end ngIf: node.icon != '' -->
<div translate="ID_315" class="ng-scope">Login</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in nodes --><kb-navigation-node ng-repeat="node in nodes" node="node" class="ng-scope ng-isolate-scope"><li ng-show="showNode(node.options)" ng-class="{separation: node.options.separation}" class="ng-scope ng-hide separation">
<!-- ngIf: node.nodes.length <= 0 --><div ng-if="node.nodes.length <= 0" class="ng-scope">
<a href="#/logout" ng-class="{'active':isActive()}">
<!-- ngIf: node.icon != '' --><i ng-if="node.icon != ''" class="icon-logout"></i><!-- end ngIf: node.icon != '' -->
<div translate="ID_364" class="ng-scope">Logout</div>
</a>
</div><!-- end ngIf: node.nodes.length <= 0 -->
<!-- ngIf: node.nodes.length > 0 -->
<!-- ngIf: node.nodes.length > 0 -->
</li></kb-navigation-node><!-- end ngRepeat: node in nodes -->
</ul></kb-navigation>
<div class="kbLogoSlogan"></div>
</div>
<div class="kbContent">
<div class="kbContentHeading">
<div class="kbInfo">
<div class="kbInverter">
<span class="inverterType ng-binding"> PIKO 4.2</span>
<span class="inverterName ng-binding"> (Photovoltaik)</span>
</div>
<div class="kbUserAndDate">
<div><i class="icon-calendar"><span class="ng-binding">09.06.20 13:17</span></i></div>
<div><i class="icon-user"><span class="ng-binding">Gast</span></i></div>
</div>
</div>
<div class="kbNavTitle ng-scope" ng-controller="navigationCtrl">
<kb-navigation-breadcrumb breadcrumbs="breadcrumbs" class="ng-isolate-scope"><div class="breadcrumb">
<div class="breadcrumbAnchor"></div>
<!-- ngRepeat: node in breadcrumbs --><div ng-repeat="node in breadcrumbs" class="ng-scope">
<p class="breadcrumbItem ng-scope" translate="ID_289">Home</p>
<div ng-class="{'breadcrumbSeparator':!$last}"></div>
</div><!-- end ngRepeat: node in breadcrumbs -->
</div></kb-navigation-breadcrumb>
</div>
</div>
<div class="kbContentView">
<div ng-show="appPageInfo.loadingInProgress" class="loader ng-hide" style="z-index: 2000">
<div class="loader-inner">
<i class="icon-spinner animate-spin"></i>
</div>
</div>
<div ng-show="appPageInfo.loadingFailed" class="loader ng-hide" style="z-index: 2000">
<div class="loader-inner">
<i class="icon-error"></i>
</div>
</div>
<div ng-show="appPageInfo.submitInProgress" class="loader-transparent ng-hide" style="z-index: 2000">
<div class="loader-inner">
<i class="icon-spinner animate-spin"></i>
</div>
</div>
<!-- ngView: --><div class="kbView ng-scope" ng-view=""><form name="form" novalidate="" class="ng-pristine ng-valid ng-scope">
<fieldset>
<legend translate="ID_31" class="ng-scope">Leistungswerte</legend>
<div class="row">
<label translate="ID_1" class="ng-scope">DC-Eingang Gesamt</label><div class="value ng-binding">781,4W</div>
</div>
<div class="row">
<label translate="ID_34" class="ng-scope">Ausgangsleistung</label><div class="value ng-binding">733,5W</div>
</div>
<!-- ngIf: appIsMatchingProperties("EXT_CURRENT_SENS") --><div class="row ng-scope" ng-if="appIsMatchingProperties("EXT_CURRENT_SENS")">
<label translate="ID_273" class="ng-scope">Eigenverbrauch</label><div class="value ng-binding">0,3W</div>
</div><!-- end ngIf: appIsMatchingProperties("EXT_CURRENT_SENS") -->
</fieldset>
<!-- ngIf: appIsMatchingProperties("BATTERY") -->
<fieldset>
<legend translate="ID_49" class="ng-scope">Status</legend>
<div class="row">
<label translate="ID_388" class="ng-scope">Betriebsstatus</label><div class="value ng-binding">Einspeisen (MPP)</div>
</div>
</fieldset>
</form></div>
<div class="kbViewInfo ng-hide" ng-show="appPageInfo.submitSuccessful || appPageInfo.submitFailed">
<div ng-show="appPageInfo.submitSuccessful" class="ng-hide">
<i class="icon-ok info-ok ng-binding"></i>
</div>
<div ng-show="appPageInfo.submitFailed" class="ng-hide">
<i class="icon-error info-error ng-binding"></i>
</div>
</div>
</div>
</div>
</div>
<div class="kbFooter">
<div class="kbWebversion">v1.1.4</div>
</div>
</div>
<!-- compiled JavaScript -->
<script type="text/javascript" src="assets/kbApp-1.1.4.js"></script>
</body>
Ein direkter Login mit http://user:password@192.168.1.30 ist bei dieser Seite anscheinend nicht möglich, was toll wäre, denn man würde dann noch mehr Daten rausbekommen. Aber die aktuellen Werte wäre schon mal ein guter Anfang.