UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[DISKUSSION] [V3.5.1] Kostal-Wechselrichter per http-API ansprechen

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Benutzeravatar

Ersteller
Eraser
Reactions:
Beiträge: 646
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 205 Mal
Danksagung erhalten: 275 Mal

[V3.5.1] Kostal-Wechselrichter per http-API ansprechen

#1

Beitrag von Eraser »

Ich möchte bei mir gerne ein paar Werte vom PV-Wechselrichter auslesen.
Dieser ist ein Kostal Piko 4.2 (altes Modell).
kostal.jpg

Auf der HTTP-Seite des Wechselrichters bekommt man ohne Einloggen bereits die aktuellen Leistungswerte angezeigt.
Web.png
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 &lt;&gt; 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(&quot;EXT_CURRENT_SENS&quot;)">
         <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>
Mir geht es dabei um die zwei Leistungswerte in Watt und den aktuellen Betriebsmodus:
Unbenannt.png

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.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Mibr85 am Do Dez 21, 2023 5:25 pm, insgesamt 3-mal geändert.
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

ms20de
Elaborated Networks
Reactions:
Beiträge: 974
Registriert: Sa Aug 11, 2018 9:14 pm
Hat sich bedankt: 280 Mal
Danksagung erhalten: 498 Mal

#2

Beitrag von ms20de »

Hallo Wolfgang,

kann der nichts mit JSON? Das HTML auswerten ist immer unschön.
In Internet habe ich was mit
http://${HOSTNAME}/api/dxs.json gefunden.

Viele Grüße,
Matthias
[ Timberwolf Entwicklung ]

TWS 2400 ID:102 VPN offen, Reboot auf Nachfrage
Benutzeravatar

Ersteller
Eraser
Reactions:
Beiträge: 646
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 205 Mal
Danksagung erhalten: 275 Mal

#3

Beitrag von Eraser »

Hallo Matthias

Der Beitrag von mir ist schon etwas älter, habe es nun seit ein paar Monaten eh per JSON in NodeRed gemacht und funktioniert einwandfrei.
Danke für deine Antwort.
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7632 Mal
Kontaktdaten:

#4

Beitrag von StefanW »

Hallo Wolfgang,

Am Thema Web-API mit JSON arbeiten wir und daher wäreN Details interessant für uns gewesen

Lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Benutzeravatar

Ersteller
Eraser
Reactions:
Beiträge: 646
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 205 Mal
Danksagung erhalten: 275 Mal

#5

Beitrag von Eraser »

Hallo Stefan,

folgend die Infos zur Abfrage:

URL:

Code: Alles auswählen

http://192.168.1.30/api/dxs.json?&dxsEntries=33555202&dxsEntries=33555201&dxsEntries=33555203&dxsEntries=33555458&dxsEntries=33555457&dxsEntries=33555459&dxsEntries=33556736&dxsEntries=67109378&dxsEntries=67109377&dxsEntries=67109379&dxsEntries=67109634&dxsEntries=67109633&dxsEntries=67109635&dxsEntries=67109890&dxsEntries=67109889&dxsEntries=67109891&dxsEntries=67109120&dxsEntries=67110400&dxsEntries=67110656&dxsEntries=67110144&dxsEntries=251658754&dxsEntries=251658753&dxsEntries=251658496&dxsEntries=16780032

Mit den verschiedenen dxsEntries definiert man welche Werte man erhalten möchte.

Das bekommt man dann zurück:

Code: Alles auswählen

{"dxsEntries":[{"dxsId":33555202,"value":0.000000},{"dxsId":33555201,"value":0.000000},{"dxsId":33555203,"value":0.000000},{"dxsId":33555458,"value":0.000000},{"dxsId":33555457,"value":0.000000},{"dxsId":33555459,"value":0.000000},{"dxsId":33556736,"value":0.000000},{"dxsId":67109378,"value":0.000000},{"dxsId":67109377,"value":0.000000},{"dxsId":67109379,"value":0.000000},{"dxsId":67109634,"value":0.000000},{"dxsId":67109633,"value":0.000000},{"dxsId":67109635,"value":0.000000},{"dxsId":67109890,"value":0.000000},{"dxsId":67109889,"value":0.000000},{"dxsId":67109891,"value":0.000000},{"dxsId":67109120,"value":0.000000},{"dxsId":67110400,"value":0.000000},{"dxsId":67110656,"value":1.000000},{"dxsId":67110144,"value":100.000000},{"dxsId":251658754,"value":15442.085938},{"dxsId":251658753,"value":2904.166016},{"dxsId":251658496,"value":2808},{"dxsId":16780032,"value":0}],"session":{"sessionId":0,"roleId":0},"status":{"code":0}}
Ich hoffe das hilft euch.
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

hans4711
Reactions:
Beiträge: 97
Registriert: Mi Nov 08, 2023 4:24 pm
Hat sich bedankt: 34 Mal
Danksagung erhalten: 56 Mal

#6

Beitrag von hans4711 »

Könntest du bitte mal Screenshots einstellen wie du das im Timberwolf Server eingestellt hast? Ich habe die Abfrage so im TWS eingestellt, es kommt aber kein Rückgabewert, bin aber leider kein HTTP-API Profi. Vielen Dank und viele Grüße
3500 XL ID:1339

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7632 Mal
Kontaktdaten:

#7

Beitrag von StefanW »

Hallo Mods,

bitte den Betreff des Treads bearbeiten, das ist kein Titel, bei dem jemand was später wiederfindet

Merci

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

hans4711
Reactions:
Beiträge: 97
Registriert: Mi Nov 08, 2023 4:24 pm
Hat sich bedankt: 34 Mal
Danksagung erhalten: 56 Mal

#8

Beitrag von hans4711 »

Mein Fehler war die https Voreinstellung. Mit http bekomme ich eine Rückmeldung:
Bild
Leider bin ich jetzt völlig überfragt wie ich z.b. folgenden Wert auslesen kann und z.B. in eine Zeitserie speichern kann:
"dxsId": 251658753,
"value": 55616.855469

Kann mir hier bitte jemand weiterhelfen? Vielen Dank und viele Grüße
3500 XL ID:1339

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#9

Beitrag von gbglace »

ist diese dxsId immer konstant und immer an der gleichen relativen Position zu den anderen?

In Dem JSON ist es ein Array in den [] da suchst Du also den 22. Wert und davon den Parameter value.
Wenn die Position bei jedem Abruf eine andere ist, dann wird es hässlich das zu selektieren.

Bei konstanter Anordnung nimm den JSON kopiere den bei BING ins Suchfeld zusammen mit der Frage wie selektiere ich den value zur dxsld 251658753 aus dem obigen JSON. In der Chat-Funktion antwortet Dir dann das Chat-GPT mit der fertigen Code-Zeile für den Selektor.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

hans4711
Reactions:
Beiträge: 97
Registriert: Mi Nov 08, 2023 4:24 pm
Hat sich bedankt: 34 Mal
Danksagung erhalten: 56 Mal

#10

Beitrag von hans4711 »

Danke für deine Hilfe, jetzt klappt es. Bing und http://jsonselector.com/process sagt folgende Schreibweise: ['dxsEntries'][20]['value']
Die TWS Hilfe sagt folgende: dxsEntries[20].value. Diese funktioniert auch, bei o.g. kommt eine Fehlermeldung.

Ist das ein Bug? Ich kann die Objekteinheit und das Format im Nachgang nicht mehr ändern:
Bild

Weiß jemand wann die Sendefilter und die Manipulation der Werte kommt? Ich würde gerne den Wattstundenwert in kwh ausgeben und abspeichern.
3500 XL ID:1339
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“