Ankündigung

Einklappen
Keine Ankündigung bisher.

Diagram - influxdb - Verbrauchswerte darstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Diagram - influxdb - Verbrauchswerte darstellen

    Hallo,

    ich habe für die Darstellung von Verbrauchswerten aus dem influxdb basierten Diagram eine Erweiterung vorgenommen. Das liefert dann so etwas - hier an Hand des Stromzählerstandes:

    Screenshot from 2019-04-10 21-45-01.png

    Diagramme werden mit folgenden Aufrufen manuell in dem config file erstellt. Die Erweiterung besteht in einer weiteren Konsolidierungsfunktion mit Namen DIFFERENCE. mit resolution und der barWidth kann man den Zeitraum der Zusammenfassung und die Darstellung anpassen.

    Code:
        <page name="page1" visible="false">
          <diagram series="week" title="Zählerstand" legend="inline" legendposition="nw" period="2" width="600" height="250" previewlabels="true" timeformat="%H:%M" timeformatTooltip="%H:%M" tooltip="true" popup="true">
            <axis label="Verbrauch" position="left" unit="Wh" decimals="0"/>
            <influx field="*" consolidationFunction="MEAN" measurement="smarthome/technik.strom.wert" style="lines" fill="false" steps="false" fillMissing="none" color="red" resolution="60"  />
          </diagram>
          <break/>
          <diagram series="week" title="Tagesverbrauch der letzten 2 Wochen" legend="inline" legendposition="nw" period="2" width="600" height="250" previewlabels="true" timeformat="%H:%M" timeformatTooltip="%H:%M" tooltip="true" popup="true">
            <axis label="Verbrauch" position="left" unit="Wh" decimals="0"/>
            <influx field="value" consolidationFunction="DIFFERENCE" measurement="smarthome/technik.strom.wert" style="bars" barWidth="60000000" fill="true" steps="true" fillMissing="linear" color="red" resolution="86400" />
          </diagram>
          <break/>
          <diagram series="hour" title="Stundenverbrauch der letzten 24 Stunden" legend="inline" legendposition="nw" period="24" width="600" height="250" previewlabels="true" timeformat="%H:%M" timeformatTooltip="%H:%M" tooltip="true" popup="true">
            <axis label="Verbrauch" position="left" unit="Wh" decimals="0"/>
            <influx field="value" consolidationFunction="DIFFERENCE" measurement="smarthome/technik.strom.wert" style="bars" barWidth="3000000" fill="true" steps="true" fillMissing="linear" color="red" resolution="3600" />
          </diagram>
        </page>

    Dazu ist es notwendig, die influxfetch.php unter release/resource/plugins/diagram zu ändern / zu erweitern:

    Code:
        switch( $ds )
        {
          case 'COUNT':
          case 'INTEGRAL':
          case 'MAX':
          case 'MEAN':
          case 'MEDIAN':
          case 'MIN':
          case 'MODE':
          case 'SPREAD':
          case 'STDDEV':
          case 'SUM':
          case 'DIFFERENCE':
            break;
    
          default:
            return 'Error: invalid ds parameter (required when res is set) [' . $ds . ']';
        }
    
        if($ds=='DIFFERENCE')
        {
          $q = sprintf( 'SELECT DIFFERENCE(LAST(%s)) FROM "%s" WHERE time >= %s AND time <= %s %s GROUP BY time(%ss)', $field, $ts[ 1 ], $start, $end, $filter, $res );
        } else
        {
          $q = sprintf( 'SELECT %s(%s) FROM "%s" WHERE time >= %s AND time <= %s %s GROUP BY time(%ss)', $ds, $field, $ts[ 1 ], $start, $end, $filter, $res );
        }
    So lassen sich ohne große Verrenkungen kummulierte Werte darstellen. Diese Art der Darstellung habe ich ursprünglich auch in entsprechenden Grafana Dashboards verwendet. Ggf. muss man bei den fillmissing aufpassen - bei none/null hatte ich Probleme - der erste oder letzte Wert war dann der Zählerstand und dementsprechend komplett out of range...

    //Holger

    #2
    Hallo Holger,
    das kann ich auch gebrauchen ....

    Hallo Chris,
    kann das offiziell in die Docker Version übernommen werden?
    VG
    Albert

    Kommentar


      #3
      Es muss noch etwas universeller werden, da bin ich aber gerade dran. => Wird bald im Container sein
      TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

      Kommentar


        #4
        Sollte jetzt drinnen sein
        TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

        Kommentar


          #5
          Hi Chris,

          sorry, ich war einige Tage nicht online. danke für deine Integration und Verbesserung - mal wieder eine "full blown" solution ;-)

          Kommentar


            #6
            Aber bitte die Fußnote bei https://www.cometvisu.org/CometVisu/de/0.11/manual/config/widgets/plugins/diagram/index.html#consolidationfunction-attribut beachten.
            Es gibt noch ein paar weitere Transformations die interessant sein können und die Parameter brauchen. So wie das Percentil. Und dann sollte das besser in ein eigenes Attribut.
            Die Änderung war mir aber für die Schnelle und für eine "rückwirkende" Änderung für 0.11 dann doch zu viel. Daher jetzt erst mal der Zwischenschritt.
            TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

            Kommentar


              #7
              Super, hat auf Anhieb funktioniert. Das spart etliche Plugins jetzt!

              Kommentar

              Lädt...
              X