Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. IOBroker Parser Daten auslesen

    NEWS

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    • Save The Date: ioBroker@Smart Living Forum Solingen, 14.06.

    IOBroker Parser Daten auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      w_stefan last edited by

      Hallo an Alle,

      Ich beschäftige mich schon einige Zeit mit IOBroker und ich finde es einfach nur toll.
      Da ich kein Programmiere bin und fast keine Kenntnisse darüber besitze finde ich es super wie einfach zum Teil IOBroker ist und wie toll einem die Community helfen kann, meistens 😉

      Ich habe ein kleines Problem mit dem Parser Adapter, ich möchte Daten von einer Internen Webseite auslesen und komme da nicht weiter.
      Ich habe den Quellcode schon in https://regex101.com/ kopiert und habe auch einen Full match aber ich bekomme das mit der Group nicht hin.

      Den Wert den ich auslesen möchte ist
      Production today:

      auf der Webseite wird es so dargestellt, da ist ein Leerzeichen nach dem :
      Production_today.JPG
      Wer kann mir denn da helfen ?
      bzw gibt's da eine Dokumentation ?

      Danke für die Hilfe,

      mfg Stefan

      Der Quellcode sieht so aus:

      <!doctype html>
      <html ng-app="smartpi">
      
      <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700' rel='stylesheet' type='text/css'>
          <link rel="stylesheet" href="css/reset.css">
          <!-- CSS reset -->
          <link rel="stylesheet" href="vendor/font-awesome/css/font-awesome.min.css" />
          <link href="vendor/metisMenu/metisMenu.min.css" rel="stylesheet">
          <!-- MetisMenu CSS -->
          <link rel="stylesheet" href="bower_components/nvd3/build/nv.d3.css">
          <link rel="stylesheet" href="css/stretchy.css">
      
          <link href="vendor/md-data-table/dist/md-data-table.min.css" rel="stylesheet" type="text/css" />
          <!-- Resource style -->
          <link rel="stylesheet" href="css/styles.css?v=1" />
          <!-- Custom CSS -->
          <link href="css/sb-admin-2.css" rel="stylesheet">
          <!-- <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.css"> -->
          <script>
              document.write("<link rel='stylesheet' href='css/angular-material.min.css?v=" + Date.now() + "'/>");
          </script>
          <script>
              document.write(" <script type = 'text/javascript' src='vendor/md-data-table/dist/md-data-table.min.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!--<link rel="stylesheet" href="css/smartpi.css?v=1" /> -->
          <script>
              document.write("<link rel='stylesheet' href='css/smartpi.css?v=" + Date.now() + "'/>");
          </script>
          <script src="js/modernizr.js"></script>
          <!-- Modernizr -->
          <script src="bower_components/angular/angular.js"></script>
          <script src="bower_components/d3/d3.js"></script>
          <script src="bower_components/nvd3/build/nv.d3.js"></script>
          <!-- or use another assembly -->
          <script src="bower_components/angular-nvd3/dist/angular-nvd3.js"></script>
          <script src="bower_components/angular-resource/angular-resource.js"></script>
          <script src="bower_components/moment/moment.js"></script>
          <script src="bower_components/angular-file-saver/dist/angular-file-saver.bundle.js"></script>
          <script src="bower_components/angular-base64/angular-base64.js"></script>
          <script src="bower_components/crypto-js/crypto-js.js"></script>
          <!-- <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-animate.min.js"></script> -->
          <script>
              document.write("<script type='text/javascript' src='js/angular-animate.min.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!-- <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-aria.min.js"></script> -->
          <script>
              document.write("<script type='text/javascript' src='js/angular-aria.min.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!-- <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular-messages.min.js"></script> -->
          <script>
              document.write("<script type='text/javascript' src='js/angular-messages.min.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!-- <script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.1.0/angular-material.min.js"></script> -->
          <script>
              document.write("<script type='text/javascript' src='js/angular-material.min.js?v=" + Date.now() + "'><\/script>");
          </script>
          <script>
              document.write(" <script type = 'text/javascript' src='vendor/md-data-table/dist/md-data-table.min.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!--<script src="js/app.js?v=1"></script>-->
          <script>
              document.write("<script type='text/javascript' src='js/app.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!--<script src="js/services.js?v=1"></script>-->
          <script>
              document.write("<script type='text/javascript' src='js/services.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!--<script src="js/module.js?v=1"></script>-->
          <script>
              document.write("<script type='text/javascript' src='js/module.js?v=" + Date.now() + "'><\/script>");
          </script>
          <!--<script src="js/controllers.js?v=1"></script>-->
          <script>
              <!-- <link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.min.css" /> -->
              document.write("<script type='text/javascript' src='js/controllers.js?v=" + Date.now() + "'><\/script>");
          </script>
          <title>SmartPi Dashboard</title>
      </head>
      
      <body ng-app="SmartPi" ng-controller="MainCtrl">
          <header>
              <nav class="cd-stretchy-nav">
                  <a class="cd-nav-trigger" href="#0">
      
                      <span aria-hidden="true"></span>
                  </a>
                  <ul>
                      <li><a href="index.html" class="active"><span></span></a></li>
                      <li><a href="export.html"><span></span></a></li>
                      <li><a ng-href="{{nodelocation}}" target="_blank"><span></span></a>
                          <li><a href="settings.html"><span></span></a></li>
                          <!-- <li><a href="#0"><span></span></a></li> -->
                          <!-- <li><a href="#0"><span></span></a></li> -->
                          <!-- <li><a href="#0"><span></span></a></li> -->
                  </ul>
                  <span aria-hidden="true" class="stretchy-nav-bg"></span>
              </nav>
          </header>
          <!--<main class="cd-main-content">
               <!-- main content here -->
          <!--</main>-->
          <md-content class="md-default-theme">
              <div class="md-toolbar-tools">
                  <span flex></span>
                  <div hide show-gt-sm>
                      <img src="img/enerserve.png" alt="enerserve logo" height="52">
                      <br>
                      <span style="font-size: small;">Version: {{softwareversion}}</span>
                  </div>
                  <div show hide-gt-sm>
                      <md-button ng-click="openSidebar()" class="md-fab md-primary" aria-label="Graph Menu" hide-gt-sm>
                          <md-icon md-svg-src="img/icons/ic_menu_24px.svg"></md-icon>
                      </md-button>
                  </div>
              </div>
              </md-toolbar>
              <div flex="66">
                  <section layout="row">
      
                      <md-content flex>
      
      
                          <div ng-switch="toShow">
                              <div ng-switch-when="dashboard">
      
                                  <div layout="row" layout-wrap layout-sm="column">
                                      <div flex>
                                          <md-card class="md-default-theme" style="margin-top: 0px;">
                                              <md-toolbar layout="row">
                                                  <div class="md-toolbar-tools">
                                                      <h2>
                                                          <span>Power</span>
                                                      </h2>
                                                      <span flex></span>
                                                      <div class="huge">{{formatNumber(momentary.power_total)}} W</div>
                                                  </div>
                                              </md-toolbar>
                                              <md-toolbar layout="row">
                                                  <div class="md-toolbar-tools">
                                                      <div class="flex">
                                                          <h1 class="display-2">P1: {{formatNumber(momentary.power[0])}} W</h1>
                                                      </div>
                                                      <div class="flex">
                                                          <h1 class="display-2">P2: {{formatNumber(momentary.power[1])}} W</h1>
                                                      </div>
                                                      <div class="flex">
                                                          <h1 class="display-2">P3: {{formatNumber(momentary.power[2])}} W</h1>
                                                      </div>
                                                  </div>
                                              </md-toolbar>
                                              <div layout="row">
                                                  <div flex>
                                                      Consumption today: {{formatNumber(dayconsumption_total/1000)}} kWh
                                                  </div>
                                                  <div flex>
                                                      Production today: {{formatNumber(dayproduction_total/1000)}} kWh
                                                  </div>
                                              </div>
                                      </div>
                                      <div flex>
                                          <md-card class="md-default-theme" style="margin-top: 0px;">
                                              <md-toolbar layout="row">
                                                  <div class="md-toolbar-tools">
                                                      <h2>
                                                          <span>Current</span>
                                                      </h2>
                                                      <span flex></span>
                                                      <div class="huge">{{formatNumber(momentary.current_total)}} A</div>
                                                  </div>
                                              </md-toolbar>
                                              <md-toolbar layout="row">
                                                  <div class="md-toolbar-tools">
                                                      <div class="flex">
                                                          <h1 class="display-2">I1: {{formatNumber(momentary.current[0])}} A</h1>
                                                      </div>
                                                      <div class="flex">
                                                          <h1 class="display-2">I2: {{formatNumber(momentary.current[1])}} A</h1>
                                                      </div>
                                                      <div class="flex">
                                                          <h1 class="display-2">I3: {{formatNumber(momentary.current[2])}} A</h1>
                                                      </div>
                                                  </div>
                                              </md-toolbar>
                                              <div layout="row">
                                                  <div flex="33">
                                                      U1: {{formatNumber(momentary.voltage[0])}} V
                                                  </div>
                                                  <div flex="33">
                                                      U2: {{formatNumber(momentary.voltage[1])}} V
                                                  </div>
                                                  <div flex="33">
                                                      U3: {{formatNumber(momentary.voltage[2])}} V
                                                  </div>
                                              </div>
                                              <div layout="row">
                                                  <div flex="33">
                                                      F1: {{formatNumber(momentary.frequency[0])}} Hz
                                                  </div>
                                                  <div flex="33">
                                                      F2: {{formatNumber(momentary.frequency[1])}} Hz
                                                  </div>
                                                  <div flex="33">
                                                      F3: {{formatNumber(momentary.frequency[2])}} Hz
                                                  </div>
                                              </div>
                                              <div layout="row">
                                                  <div flex="33">
                                                      Cos Phi 1: {{formatNumber(momentary.cosphi[0])}}
                                                  </div>
                                                  <div flex="33">
                                                      Cos Phi 2: {{formatNumber(momentary.cosphi[1])}}
                                                  </div>
                                                  <div flex="33">
                                                      Cos Phi 3: {{formatNumber(momentary.cosphi[2])}}
                                                  </div>
                                              </div>
                                      </div>
                                  </div>
                                  <div layout="row" layout-wrap>
                                      <div flex>
                                          <md-card class="md-default-theme">
                                              <md-toolbar layout="row">
                                                  <div class="md-toolbar-tools">
                                                      <h2>
                                                          <span>Consumption</span>
                                                      </h2>
                                                      <span flex></span>
                                                      <div class="huge">Week</div>
                                                  </div>
                                              </md-toolbar>
                                              <nvd3 options='weekconsumptionoptions' data='weekconsumptiondata'></nvd3>
                                          </md-card>
                                      </div>
                                  </div>
      
                              </div>
      
                              <div ng-switch-when="chart">
      
                                  <div layout="row" layout-wrap>
                                      <div flex>
                                          <md-card class="md-default-theme" style="margin-top: 0px;">
                                              <md-toolbar layout="row">
                                                  <div class="md-toolbar-tools">
                                                      <span flex></span>
                                                      <md-button ng-click="dayback()" class="md-raised">
                                                          < day back </md-button>
                                                              <md-button ng-click="dayforward()" class="md-raised" ng-disabled="disabledayforwardbutton"> day forward > </md-button>
                                                              <md-button ng-click="adddayback()" class="md-raised">
                                                                  << add day back </md-button>
                                                                      <md-button ng-click="removedayback()" class="md-raised" ng-disabled="disabledayremovebutton"> >> remove day back </md-button>
                                                  </div>
                                              </md-toolbar>
                                              <md-toolbar layout="row">
                                                  <div class="md-toolbar-tools">
                                                      <span flex></span>
                                                      <md-button ng-init="showLinechartPower = true" ng-click="linechartPower()" class="md-raised" ng-class="btnpowerline">power</md-button>
                                                      <md-button ng-init="showLinechartEnergyPos = false" ng-click="linechartEnergy_pos()" class="md-raised" ng-class="btnenergy_posline">energy consumption</md-button>
                                                      <md-button ng-init="showLinechartEnergyNeg = false" ng-click="linechartEnergy_neg()" class="md-raised" ng-class="btnenergy_negline">energy production</md-button>
                                                      <md-button ng-init="showLinechartCurrent = false" ng-click="linechartCurrent()" class="md-raised" ng-class="btncurrentline">current</md-button>
                                                      <md-button ng-init="showLinechartVoltage = false" ng-click="linechartVoltage()" class="md-raised" ng-class="btnvoltageline">voltage</md-button>
                                                  </div>
                                              </md-toolbar>
                                              <nvd3 options='options' data='data'></nvd3>
                                          </md-card>
                                      </div>
                                  </div>
      
      
                              </div>
                          </div>
      
      
      
      
                      </md-content>
      
                      <md-sidenav class="md-sidenav-right" md-component-id="sidebarright" md-is-locked-open="$mdMedia('gt-sm')" md-whiteframe="4">
                          <md-toolbar class="md-theme-indigo">
                              <div layout="row">
                                  <h1 class="md-toolbar-tools">Graph</h1>
                                  <span flex></span>
                                  <md-icon ng-click="closeSidebar()" md-svg-src="img/icons/ic_close_48px.svg" class="s48" aria-label="Close" hide-gt-sm></md-icon>
                              </div>
                          </md-toolbar>
                          <md-content layout-padding="" layout="column" layout-align="start start">
                              <md-button style="text-align:left" ng-click="show('dashboard')" class="md-primary">Dashboard</md-button>
                              <md-button style="text-align:left" ng-click="show('chart')" class="md-primary">Chart</md-button>
      
                          </md-content>
                      </md-sidenav>
      
                  </section>
              </div>
          </md-content>
          <script src="js/jquery-2.1.4.js"></script>
          <script src="js/main.js"></script>
          <!-- Resource jQuery -->
          <script src="bower_components/tether/dist/js/tether.min.js"></script>
          <script src="vendor/bootstrap/js/bootstrap.min.js"></script>
          <!-- Metis Menu Plugin JavaScript -->
          <script src="vendor/metisMenu/metisMenu.min.js"></script>
          <script src="js/sb-admin-2.js"></script>
          <script src="js/scripts.js"></script>
      </body>
      
      </html>
      
      Homoran 1 Reply Last reply Reply Quote 0
      • H
        HenryH last edited by

        Das Hauptproblem ist, dass der Wert den du auslesen möchtest, erst durch Javascript geladen / geschrieben wird. Das bekommst du also nicht nur mit Regex hin. Auf Anhieb konnte ich auch nicht finden, wie der Wert abgerufen wird. Das ist vermutlich in einem der vielen JavaScript Includes versteckt.
        Ich würde an deiner Stelle mal im Browser die Entwickler Konsole Öffnen, dann die Seite neu laden und schauen, was alles im Reiter Network so auftaucht. Dort wird irgend wo eine Anfrage zu finden sein, die den Wert abruft.

        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @w_stefan last edited by

          @w_stefan sagte in IOBroker Parser Daten auslesen:

          gibt's da eine Dokumentation ?

          versuch es mal auf regex101.com

          Da habe ich es versucht, aber leider ist dein Screenshot und Quelltext nicht vom selben Zeitpunkt.

          Das "Problem" ist, dass "Production today" und der Wert nicht zusammenhängend erzegt werden, sondern anscheinend erst die Beschriftungen, dann später die Werte.
          Im Quelltext existiert aber keine 18.85

          <div flex>
                                                          Production today: {{formatNumber(dayproduction_total/1000)}} kWh
                                                      </div>
          

          Ich fürchte sogar, dass die Daten woanders her kommen und über Platzhalter eingesetzt werden

          W 1 Reply Last reply Reply Quote 0
          • H
            HenryH last edited by

            Ich habe mal nach "smartpi" gesucht, das ist im Quelltext als Applikationsname angegeben. Falls es dieser SmartPi ist, gibt es wohl eine API: https://www.enerserve.eu/en/service/smartpi/manual/api.html

            Du kannst ja mal diese URL im Browser testen: http://ipaddress:1080/api/all/all/now

            1 Reply Last reply Reply Quote 0
            • W
              w_stefan @Homoran last edited by

              @Homoran

              @HenryH

              Ich habe den Firefox Inspektor verwendet, leider kann ich da nur einen Screenshot erzeugen, aber da wird der Wert angezeigt.
              Inspektor.JPG

              Die API hat leider keine Production today: ich habe auch schon versucht die Daten über Prometheus export auszulesen da fehlen aber auch dieser Wert.

              Prometheus export: http://192.168.1.40:9246/metrics

              # HELP go_gc_duration_seconds A summary of the GC invocation durations.
              # TYPE go_gc_duration_seconds summary
              go_gc_duration_seconds{quantile="0"} 0.000202916
              go_gc_duration_seconds{quantile="0.25"} 0.000440885
              go_gc_duration_seconds{quantile="0.5"} 0.000534945
              go_gc_duration_seconds{quantile="0.75"} 0.000700986
              go_gc_duration_seconds{quantile="1"} 0.015456939
              go_gc_duration_seconds_sum 23.252685806
              go_gc_duration_seconds_count 19881
              # HELP go_goroutines Number of goroutines that currently exist.
              # TYPE go_goroutines gauge
              go_goroutines 10
              # HELP go_info Information about the Go environment.
              # TYPE go_info gauge
              go_info{version="go1.9.2"} 1
              # HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
              # TYPE go_memstats_alloc_bytes gauge
              go_memstats_alloc_bytes 903216
              # HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
              # TYPE go_memstats_alloc_bytes_total counter
              go_memstats_alloc_bytes_total 1.4083734376e+10
              # HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
              # TYPE go_memstats_buck_hash_sys_bytes gauge
              go_memstats_buck_hash_sys_bytes 761234
              # HELP go_memstats_frees_total Total number of frees.
              # TYPE go_memstats_frees_total counter
              go_memstats_frees_total 6.92664268e+08
              # HELP go_memstats_gc_cpu_fraction The fraction of this program's available CPU time used by the GC since the program started.
              # TYPE go_memstats_gc_cpu_fraction gauge
              go_memstats_gc_cpu_fraction 1.8929979341869276e-05
              # HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.
              # TYPE go_memstats_gc_sys_bytes gauge
              go_memstats_gc_sys_bytes 1.907712e+07
              # HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.
              # TYPE go_memstats_heap_alloc_bytes gauge
              go_memstats_heap_alloc_bytes 903216
              # HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.
              # TYPE go_memstats_heap_idle_bytes gauge
              go_memstats_heap_idle_bytes 3.391488e+06
              # HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.
              # TYPE go_memstats_heap_inuse_bytes gauge
              go_memstats_heap_inuse_bytes 1.949696e+06
              # HELP go_memstats_heap_objects Number of allocated objects.
              # TYPE go_memstats_heap_objects gauge
              go_memstats_heap_objects 14971
              # HELP go_memstats_heap_released_bytes Number of heap bytes released to OS.
              # TYPE go_memstats_heap_released_bytes gauge
              go_memstats_heap_released_bytes 2.048e+06
              # HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.
              # TYPE go_memstats_heap_sys_bytes gauge
              go_memstats_heap_sys_bytes 5.341184e+06
              # HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.
              # TYPE go_memstats_last_gc_time_seconds gauge
              go_memstats_last_gc_time_seconds 1.5590502239117749e+09
              # HELP go_memstats_lookups_total Total number of pointer lookups.
              # TYPE go_memstats_lookups_total counter
              go_memstats_lookups_total 2.229676e+06
              # HELP go_memstats_mallocs_total Total number of mallocs.
              # TYPE go_memstats_mallocs_total counter
              go_memstats_mallocs_total 6.92679239e+08
              # HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.
              # TYPE go_memstats_mcache_inuse_bytes gauge
              go_memstats_mcache_inuse_bytes 3472
              # HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.
              # TYPE go_memstats_mcache_sys_bytes gauge
              go_memstats_mcache_sys_bytes 16384
              # HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.
              # TYPE go_memstats_mspan_inuse_bytes gauge
              go_memstats_mspan_inuse_bytes 20884
              # HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.
              # TYPE go_memstats_mspan_sys_bytes gauge
              go_memstats_mspan_sys_bytes 49152
              # HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.
              # TYPE go_memstats_next_gc_bytes gauge
              go_memstats_next_gc_bytes 4.194304e+06
              # HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.
              # TYPE go_memstats_other_sys_bytes gauge
              go_memstats_other_sys_bytes 1.410794e+06
              # HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.
              # TYPE go_memstats_stack_inuse_bytes gauge
              go_memstats_stack_inuse_bytes 950272
              # HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.
              # TYPE go_memstats_stack_sys_bytes gauge
              go_memstats_stack_sys_bytes 950272
              # HELP go_memstats_sys_bytes Number of bytes obtained from system.
              # TYPE go_memstats_sys_bytes gauge
              go_memstats_sys_bytes 2.760614e+07
              # HELP go_threads Number of OS threads created.
              # TYPE go_threads gauge
              go_threads 15
              # HELP http_request_duration_microseconds The HTTP request latencies in microseconds.
              # TYPE http_request_duration_microseconds summary
              http_request_duration_microseconds{handler="prometheus",quantile="0.5"} 24824.777
              http_request_duration_microseconds{handler="prometheus",quantile="0.9"} 24824.777
              http_request_duration_microseconds{handler="prometheus",quantile="0.99"} 24824.777
              http_request_duration_microseconds_sum{handler="prometheus"} 291210.45700000005
              http_request_duration_microseconds_count{handler="prometheus"} 5
              # HELP http_request_size_bytes The HTTP request sizes in bytes.
              # TYPE http_request_size_bytes summary
              http_request_size_bytes{handler="prometheus",quantile="0.5"} 300
              http_request_size_bytes{handler="prometheus",quantile="0.9"} 300
              http_request_size_bytes{handler="prometheus",quantile="0.99"} 300
              http_request_size_bytes_sum{handler="prometheus"} 1532
              http_request_size_bytes_count{handler="prometheus"} 5
              # HELP http_requests_total Total number of HTTP requests made.
              # TYPE http_requests_total counter
              http_requests_total{code="200",handler="prometheus",method="get"} 5
              # HELP http_response_size_bytes The HTTP response sizes in bytes.
              # TYPE http_response_size_bytes summary
              http_response_size_bytes{handler="prometheus",quantile="0.5"} 2166
              http_response_size_bytes{handler="prometheus",quantile="0.9"} 2166
              http_response_size_bytes{handler="prometheus",quantile="0.99"} 2166
              http_response_size_bytes_sum{handler="prometheus"} 10785
              http_response_size_bytes_count{handler="prometheus"} 5
              # HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
              # TYPE process_cpu_seconds_total counter
              process_cpu_seconds_total 21559.23
              # HELP process_max_fds Maximum number of open file descriptors.
              # TYPE process_max_fds gauge
              process_max_fds 1024
              # HELP process_open_fds Number of open file descriptors.
              # TYPE process_open_fds gauge
              process_open_fds 12
              # HELP process_resident_memory_bytes Resident memory size in bytes.
              # TYPE process_resident_memory_bytes gauge
              process_resident_memory_bytes 1.1280384e+07
              # HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
              # TYPE process_start_time_seconds gauge
              process_start_time_seconds 1.55666169412e+09
              # HELP process_virtual_memory_bytes Virtual memory size in bytes.
              # TYPE process_virtual_memory_bytes gauge
              process_virtual_memory_bytes 9.35559168e+08
              # HELP smartpi_active_watts Active Watts
              # TYPE smartpi_active_watts gauge
              smartpi_active_watts{phase="A"} -627.098139
              smartpi_active_watts{phase="B"} -704.090097
              smartpi_active_watts{phase="C"} -461.25288
              # HELP smartpi_amps Line current
              # TYPE smartpi_amps gauge
              smartpi_amps{phase="A"} 2.8728982733314483
              smartpi_amps{phase="B"} 3.0994031262230997
              smartpi_amps{phase="C"} 3.0415257814663175
              smartpi_amps{phase="N"} 2.136357139342743
              # HELP smartpi_apparent_power_volt_amps Line apparent power in volt amps
              # TYPE smartpi_apparent_power_volt_amps gauge
              smartpi_apparent_power_volt_amps{phase="A"} 679.785021
              smartpi_apparent_power_volt_amps{phase="B"} 723.677814
              smartpi_apparent_power_volt_amps{phase="C"} 712.321209
              # HELP smartpi_build_info A metric with a constant '1' value labeled by version, revision, branch, and goversion from which smartpi was built.
              # TYPE smartpi_build_info gauge
              smartpi_build_info{branch="",goversion="go1.9.2",revision="",version=""} 1
              # HELP smartpi_frequency_hertz Line frequency in hertz
              # TYPE smartpi_frequency_hertz gauge
              smartpi_frequency_hertz{phase="A"} 49.98047637641546
              smartpi_frequency_hertz{phase="B"} 49.99023628197617
              smartpi_frequency_hertz{phase="C"} 49.98047637641546
              # HELP smartpi_phase_angle Line voltage phase angle
              # TYPE smartpi_phase_angle gauge
              smartpi_phase_angle{phase="A"} -0.9997823934766707
              smartpi_phase_angle{phase="B"} -0.9990242823004072
              smartpi_phase_angle{phase="C"} -0.7343225094356856
              # HELP smartpi_power_factor_ratio Line power factor ratio
              # TYPE smartpi_power_factor_ratio gauge
              smartpi_power_factor_ratio{phase="A"} -47.51943482438104
              smartpi_power_factor_ratio{phase="B"} -50.117606617687464
              smartpi_power_factor_ratio{phase="C"} -33.355738534523965
              # HELP smartpi_reactive_power_volt_amps Line reactive power in volt amps reactive
              # TYPE smartpi_reactive_power_volt_amps gauge
              smartpi_reactive_power_volt_amps{phase="A"} -1104
              smartpi_reactive_power_volt_amps{phase="B"} -2469
              smartpi_reactive_power_volt_amps{phase="C"} -24768
              # HELP smartpi_volts Line voltage
              # TYPE smartpi_volts gauge
              smartpi_volts{phase="A"} 240.3552
              smartpi_volts{phase="B"} 238.6793
              smartpi_volts{phase="C"} 238.7578
              
              

              API: http://192.168.1.40/api/all/all/now

              {"serial":"smartpi","name":"House","lat":52.3667,"lng":9.7167,"time":"2019-05-28 15:33:57","softwareversion":"","ipaddress":"192.168.1.40","datasets":[{"time":"2019-05-28 15:33:54","phases":[{"phase":1,"name":"phase 1","values":[{"type":"current","unity":"A","info":"","data":2.8374162},{"type":"voltage","unity":"V","info":"","data":240.3186},{"type":"power","unity":"W","info":"","data":-615.93567},{"type":"cosphi","unity":"","info":"","data":-0.9999992},{"type":"frequency","unity":"Hz","info":"","data":49.97072}]},{"phase":2,"name":"phase 2","values":[{"type":"current","unity":"A","info":"","data":3.0533614},{"type":"voltage","unity":"V","info":"","data":239.0356},{"type":"power","unity":"W","info":"","data":-692.0152},{"type":"cosphi","unity":"","info":"","data":-0.99599},{"type":"frequency","unity":"Hz","info":"","data":49.97072}]},{"phase":3,"name":"phase 3","values":[{"type":"current","unity":"A","info":"","data":3.112565},{"type":"voltage","unity":"V","info":"","data":238.7494},{"type":"power","unity":"W","info":"","data":-456.0696},{"type":"cosphi","unity":"","info":"","data":-0.7409511},{"type":"frequency","unity":"Hz","info":"","data":49.97072}]},{"phase":4,"name":"phase 4","values":[{"type":"current","unity":"A","info":"","data":2.1447146}]}]}]}
              
              

              mfg

              Stefan

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @w_stefan last edited by

                @w_stefan Möchtest Du wirklich alle Daten haben oder interessiert Dich nur die Leistung der 3 Phasen ? In dem Fall wird die JSON-Rückgabe wesentlich kürzer (übersichtlicher). Was ergibt ?

                http://192.168.1.40/api/all/power/now
                
                W 1 Reply Last reply Reply Quote 0
                • W
                  w_stefan @paul53 last edited by w_stefan

                  @paul53
                  Ich möchte den Wert Production Today: auslesen.
                  Die gemessenen Werte lese ich über MQTT aus, leider fehlt da der Wert Prodcution Today:

                  mfg

                  Stefan

                  paul53 G 3 Replies Last reply Reply Quote 0
                  • paul53
                    paul53 @w_stefan last edited by

                    @w_stefan sagte:

                    Wert Production Today: auslesen

                    Den liefert die API offenbar nicht.

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 @w_stefan last edited by paul53

                      @w_stefan sagte:

                      Die gemessenen Werte lese ich über MQTT aus

                      Was ist der Wert "Production today" ? Ist es die seit Mitternacht erzeugte Energie ?
                      Da die Leistungswerte in Datenpunkten vorhanden sind, kann man die Energie auch daraus per Script ermitteln.

                      W 1 Reply Last reply Reply Quote 0
                      • W
                        w_stefan @paul53 last edited by

                        @paul53
                        Das ist der Strom der seit Mitternacht ins Netz geliefert wurde.
                        Ich habe noch keine Möglichkeit gefunden wie ich an Hand der vorhandenen Daten die kWh errechnen kann die seit 00:00 ins Stromnetz geliefert wurden.

                        Also um das Ganze Bild zu bekommen:
                        Ich lese zwei Wechselrichter über MODBUS aus und ermittle mir folgende Wert über Blocky scripte,

                        • Aktueller erzeugter Strom in Summe und kWh

                        Am SmartPi2 ist der Wert Production today: der Strom der seit Mitternacht geliefert also verkauft wurde
                        Wenn ich diesen Wert auslesen kann dann kann ich folgendes errechnen

                        • Aktueller erzeugter Strom in kWh
                        • Aktueller gelieferter Strom in kWh
                        • Aktueller Eigenverbrauch in kWh

                        Wie ich diese Daten dann noch weiterverwende lasse ich mal so stehen 😉

                        mfg Stefan

                        paul53 2 Replies Last reply Reply Quote 0
                        • paul53
                          paul53 @w_stefan last edited by paul53

                          @w_stefan sagte:

                          an Hand der vorhandenen Daten die kWh errechnen kann die seit 00:00 ins Stromnetz geliefert wurden.

                          Welche Energiedaten (kWh) hast Du ? Bei zwei Zählern müssen es mindestens 2 sein.

                          W 1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 @w_stefan last edited by paul53

                            @w_stefan Habe nochmal in die API-Beschreibung geschaut: Was liefert ?

                            http://192.168.1.40/api/chart/123/energy_neg/from/2019-05-28T00:00:00.000Z/to/2019-05-28T23:59:59.000Z
                            
                            W 1 Reply Last reply Reply Quote 0
                            • W
                              w_stefan @paul53 last edited by

                              @paul53
                              Da bekomme ich eine sehr lange liste ich füge mal ein paar Zeilen davon ein,

                              [{"key":"energy_neg_1","values":[{"time":"2019-05-28T00:00:38+0200","value":0},{"time":"2019-05-28T00:01:38+0200","value":0},{"time":"2019-05-28T00:02:38+0200","value":0},{"time":"2019-05-28T00:03:38+0200","value":0},{"time":"2019-05-28T00:04:38+0200","value":0},{"time":"2019-05-28T00:05:38+0200","value":0},{"time":"2019-05-28T00:06:38+0200","value":0},{"time":"2019-05-28T00:07:38+0200","value":0},{"time":"2019-05-28T00:08:38+0200","value":0},{"time":"2019-05-28T00:09:38+0200","value":0},{"time":"2019-05-28T00:10:38+0200","value":0},{"time":"2019-05-28T00:11:38+0200","value":0},{"time":"2019-05-28T00:12:38+0200","value":0},{"time":"2019-05-28T00:13:38+0200","value":0},{"time":"2019-05-28T00:14:38+0200","value":0},{"time":"2019-05-28T00:15:38+0200","value":0},{"time":"2019-05-28T00:16:38+0200","value":0},{"time":"2019-05-28T00:17:38+0200","value":0},{"time":"2019-05-28T00:18:38+0200","value":0},{"time":"2019-05-28T00:19:38+0200","value":0},{"time":"2019-05-28T00:20:38+0200","value":0},{"time":"2019-05-28T00:21:38+0200","value":0},{"time":"2019-05-28T00:22:38+0200","value":0},{"time":"2019-05-28T00:23:38+0200","value":0},{"time":"2019-05-28T00:24:38+0200","value":0},{"time":"2019-05-28T00:25:38+0200","value":0},{"time":"2019-05-28T00:26:38+0200","value":0},{"time":"2019-05-28T00:27:38+0200","value":0},{"time":"2019-05-28T00:28:38+0200","value":0},{"time":"2019-05-28T00:29:38+0200","value":0},{"time":"2019-05-28T00:30:38+0200","value":0},{"time":"2019-05-28T00:31:38+0200","value":0},{"time":"2019-05-28T00:32:38+0200","value":0},{"time":"2019-05-28T00:33:38+0200","value":0},{"time":"2019-05-28T00:34:38+0200","value":0},{"time":"2019-05-28T00:35:38+0200","value":0},{"time":"2019-05-28T00:36:38+0200","value":0},{"time":"2019-05-28T00:37:38+0200","value":0},{"time":"2019-05-28T00:38:38+0200","value":0},{"time":"2019-05-28T00:39:38+0200","value":0},{"time":"2019-05-28T00:40:38+0200","value":0},{"time":"2019-05-28T00:41:38+0200","value":0},{"time":"2019-05-28T00:42:38+0200","value":0},{"time":"2019-05-28T00:43:38+0200","value":0},
                              ......
                              {"time":"2019-05-28T05:36:38+0200","value":0},{"time":"2019-05-28T05:37:38+0200","value":0.011686},{"time":"2019-05-28T05:38:38+0200","value":0.215463},{"time":"2019-05-28T05:39:38+0200","value":0.320196},{"time":"2019-05-28T05:40:38+0200","value":0.396893},{"time":"2019-05-28T05:41:38+0200","value":0.464893},{"time":"2019-05-28T05:42:38+0200","value":0.548018},{"time":"2019-05-28T05:43:38+0200","value":0.626463},{"time":"2019-05-28T05:44:38+0200","value":0.769812},{"time":"2019-05-28T05:45:38+0200","value":0.879776},{"time":"2019-05-28T05:46:38+0200","value":0.864358},{"time":"2019-05-28T05:47:38+0200","value":0.47255},{"time":"2019-05-28T05:48:38+0200","value":0.508675},{"time":"2019-05-28T05:49:38+0200","value":0.787256},{"time":"2019-05-28T05:50:38+0200","value":0.910286},{"time":"2019-05-28T05:51:38+0200","value":0.971017},{"time":"2019-05-28T05:52:38+0200","value":1.038461},{"time":"2019-05-28T05:53:38+0200","value":1.155311},{"time":"2019-05-28T05:54:38+0200","value":1.259149},{"time":"2019-05-28T05:55:38+0200","value":1.338321},{"time":"2019-05-28T05:56:38+0200","value":1.393945},{"time":"2019-05-28T05:57:38+0200","value":1.410182},{"time":"2019-05-28T05:58:38+0200","value":1.392263},{"time":"2019-05-28T05:59:38+0200","value":1.358365},{"time":"2019-05-28T06:00:38+0200","value":1.279139},{"time":"2019-05-28T06:01:38+0200","value":1.232844},{"time":"2019-05-28T06:02:38+0200","value":1.240933},{"time":"2019-05-28T06:03:38+0200","value":1.221412},{"time":"2019-05-28T06:04:38+0200","value":1.182327},{"time":"2019-05-28T06:05:38+0200","value":1.039863},{"time":"2019-05-28T06:06:38+0200","value":1.025826},{"time":"2019-05-28T06:07:38+0200","value":1.053544},{"time":"2019-05-28T06:08:38+0200","value":1.058505},{"time":"2019-05-28T06:09:38+0200","value":1.203207},{"time":"2019-05-28T06:10:38+0200","value":1.408451},{"time":"2019-05-28T06:11:38+0200","value":1.608653},{"time":"2019-05-28T06:12:38+0200","value":1.814166},{"time":"2019-05-28T06:13:38+0200","value":2.038608},{"time":"2019-05-28T06:14:38+0200","value":2.125416},{"time":"2019-05-28T06:15:38+0200","value":2.137722},
                              ....
                              
                              paul53 1 Reply Last reply Reply Quote 0
                              • W
                                w_stefan @paul53 last edited by

                                @paul53

                                Im IOBroker habe ich die kWh die meine SolarAnlage erzeugt.
                                Am SmartPi2 habe ich Production today: das sind die kWh die Geliefert wurden also,
                                Erzeugte kWh - Eigenverbrauch kWh = Production today

                                Der SMA Wechselrichter zeigt den Tagesertrag in kWH an
                                Der SolarEdge hat nur einen Gesamtertrag in kWh den im mir errechne indem ich den Vortageswert von 00:00 Uhr nehme und den vom aktuellen Gesamtertrag abziehe.

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @w_stefan last edited by

                                  @w_stefan Da ich keine PV habe, muss ich fragen: Wofür ist der SMA-Wechselrichter und wofür SolarEdge ?

                                  W 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @w_stefan last edited by

                                    @w_stefan sagte:

                                    Da bekomme ich eine sehr lange liste

                                    Was bekommst Du, wenn als Zeitspanne eine Minute angegeben wird ?

                                    http://192.168.1.40/api/chart/123/energy_neg/from/2019-05-28T20:09:00.000Z/to/2019-05-28T20:10:00.000Z
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • W
                                      w_stefan @paul53 last edited by

                                      @paul53
                                      Ich habe 5kWp Photovoltaik an einem SMA Wechselrichter und 6.5kWp Photovoltaik an einem SolarEdge Wechselrichter

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @w_stefan last edited by paul53

                                        @w_stefan Also hast Du für Netzeinspeisung und -bezug nur die Informationen vom Smartpi ?
                                        Dann kann man die Energiewerte mit einem Skript aus den Leistungen ermitteln. Als Anfangswerte für createState() bitte die Werte des "echten" Zählers eintragen !

                                        const idPower1 = '...';  // Phase 1
                                        const idPower2 = '...';  // Phase 2
                                        const idPower3 = '...';  // Phase 3
                                        const idBezug    = 'Smartpi.Bezug';
                                        const idEinspeis = 'Smartpi.Einspeisung';
                                        const idEinHeute = 'Smartpi.Einspeisung_heute';
                                        const idEin0Uhr  = 'Smartpi.Einspeisung_Mitternacht'; 
                                         
                                        // Energie-Datenpunkt erzeugen
                                        createState(idBezug, 1.11, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen !
                                        createState(idEinspeis, 1.11, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen !
                                        createState(idEinHeute, 1.11, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen !
                                        createState(idEin0Uhr, 1.11, {type: 'number', unit: 'kWh'}); // Anfangswert anpassen !
                                        
                                        var e1, e2, e3;
                                        var bezug, einspeis, mitternacht;
                                        
                                        setTimeout(function() {
                                           bezug       = 1000 * getState(idBezug).val; // Wh
                                           einspeis    = 1000 * getState(idEinspeis).val;
                                           mitternacht = 1000 * getState(idEin0Uhr).val;
                                        }, 100); // Verzögerung für createState()
                                        
                                        function calcEnergy() {
                                           var energy = (e1 + e2 + e3) / 3600000; // Wh
                                           if(energy >= 0) {
                                              bezug = bezug + energy;
                                              setState(idBezug, Math.round(bezug) / 1000, true); // kWh mit 3 Nachkommastellen
                                           } else {
                                              einspeis = einspeis - energy; 
                                              setState(idEinspeis, Math.round(einspeis) / 1000, true); // kWh mit 3 Nachkommastellen
                                              setState(idEinHeute, Math.round(einspeis - mitternacht) / 1000, true);
                                           }  
                                        }
                                        
                                        on({id: idPower1}, function(dp) {
                                           e1 = dp.oldState.val * (dp.state.ts - dp.oldState.ts); // mWs
                                           setTimeout(calcEnergy, 500);
                                        });
                                        
                                        on({id: idPower2}, function(dp) {
                                           e2 = dp.oldState.val * (dp.state.ts - dp.oldState.ts); // mWs
                                        );
                                        
                                        on({id: idPower3}, function(dp) {
                                           e3 = dp.oldState.val * (dp.state.ts - dp.oldState.ts); // mWs
                                        });
                                        
                                        schedule('0 0 * * *', function() { // täglich um Mitternacht
                                           mitternacht = einspeis;
                                           setState(idEin0Uhr, Math.round(einspeis) / 1000, true); // kWh mit 3 Nachkommastellen
                                        });
                                        
                                        
                                        W 1 Reply Last reply Reply Quote 0
                                        • W
                                          w_stefan @paul53 last edited by

                                          @paul53
                                          Danke für den Script ich werde das bei Gelegenheit mal testen.

                                          Ich werde den SmartPi2 mit einen anderen SmartMeter ersetzen welches mir die benötigen Werte und noch mehr über ModBus liefert.
                                          Mit dem SmartPi2 hatte bzw habe ich so einige Problem und ich glaube die Software ist noch nicht dort angekommen wo der Entwickler sie gerne haben möchte.

                                          mfg Stefan

                                          1 Reply Last reply Reply Quote 0
                                          • G
                                            goi @w_stefan last edited by

                                            @w_stefan könntest du einem Neuling beschreiben, wie du die Daten über MQTT vom smartPi auf den ioBroker bekommst? Was muss ich im smartPi und was im IoBroker eintragen?

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            555
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            parser adapter
                                            5
                                            20
                                            2712
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo