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.
Dazu ist es notwendig, die influxfetch.php unter release/resource/plugins/diagram zu ändern / zu erweitern:
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
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 ); }
//Holger
Kommentar