Seite 1 von 1

PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 6. Sep 2024 14:44
von torfkop
Moin zusammen,

hat schon mal einer von euch eine Übersicht gebaut für einen ganzen Monat wo man auf täglicher Basis den Ertrag sehen kann?
Ich überlege gerade wie das vernünftig machbar ist. Die Werte habe ich.

Viele Grüße
Steffen

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 6. Sep 2024 15:08
von nw378
Moin!

Sowas?
WhatsApp Bild 2024-09-06 um 15.07.31_59468543.jpg
WhatsApp Bild 2024-09-06 um 15.07.31_79ca0a3b.jpg

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 8. Sep 2024 08:32
von torfkop
ja genau. Sowas suche ich. Wie hast du das gebaut?

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 8. Sep 2024 10:52
von nw378
Mit Influx und Grafana.

Wichtig: Ich habe Influx 2. Zum einen, weil Influx 2.x gegenüber 1.x "Flux" hat (data scripting language), die auch Monate als Zeitraum kennt. Unter Influx 1 konnte man Daten nur für 30 oder 31 Tage aufsummieren. Geht auch, ist aber etwas ungenau.
Zum anderen habe ich in Influx Tasks erstellt, die die Daten von einem "Bucket" (Datenbank) in einen anderen Bucket downsampeln. Also zum Bsp. nur einen Datenpunkt pro Stunde speichern. Das reduziert den Rechenaufwand deutlich.

Beides (Grafana und Influx) laufen bei mir auf einer NAS im Docker. Kann man aber bspw. auch auf dem gleichen Raspi wie openHAB installieren.

So eine Downsampling-Task (wie gesagt, nicht zwingend erforderlich) sieht dann so aus:

Code: Alles auswählen

import "date"

option task = {name: "PV Ertrag", every: 1h0m0s}

fullHourTime = date.truncate(t: now(), unit: 1h)
startTime = date.sub(from: fullHourTime, d: 1h)

from(bucket: "openHAB")
    |> range(start: startTime, stop: fullHourTime)
    |> filter(fn: (r) => r["_measurement"] == "PVtotal")
    |> filter(fn: (r) => r._field == "value")
    |> difference()
    |> aggregateWindow(every: 1h, fn: sum, createEmpty: false)
    |> to(bucket: "openHAB_history", fieldFn: (r) => ({"PV_Ertrag": r._value}))
und der Abruf in Grafana als Bar chart dann so:

Code: Alles auswählen

import "timezone"
option location = timezone.location(name: "Europe/Berlin")
from(bucket: "openHAB_history")
 |> range(start: -365d)
 |> filter(fn: (r) => r["_measurement"] == "PVtotal")
 |> filter(fn: (r) => r._field == "value")
|> difference()
 |> aggregateWindow(every: 1mo, fn: sum, timeSrc: "_start")
grafana.png
Am Anfang sehr fummelig das ganze; aber wenn man einmal den Bogen heraus hat, lässt es sich per STRG-C STRV-V sehr schnell auf alle anderen Daten adaptieren.

Die Tortendiagramme sind eben "Pie charts":

Code: Alles auswählen

from(bucket: "openHAB")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "Bezug_xTage" or r["_measurement"] == "Eigenverbrauch_xTage")
  |> filter(fn: (r) => r["_field"] == "value")
  |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
  |> yield(name: "last")
Und zuletzt der Aufruf in der Sitemap (die Adresse hierzu stellt Grafana bereit):

Code: Alles auswählen

Switch item=gChartIntervall2 label="[]" icon="deadline" mappings=[1="aktuell",2="Woche",3="Jahr"] 
Webview icon=energy url="http://192.168.178.26:3000/d-solo/-4Py1lWgk/energie-aktuell?orgId=1&from=now-24h&panelId=4" height=6 visibility=[gChartIntervall2 == 1, gChartIntervall2 == NULL]
Webview icon=energy url="http://192.168.178.26:3000/d-solo/0L9FYfiRz/heizung?orgId=1&panelId=4&tab=axes&from=now-7d" height=6 visibility=[gChartIntervall2 == 2]
Webview icon=energy url="http://192.168.178.26:3000/d-solo/0L9FYfiRz/heizung?orgId=1&panelId=12&tab=axes&from=now-365d" height=6 visibility=[gChartIntervall2 == 3]
Text item=SolarGesamt
Interessant sind dann auch z.B. Einbindung des Sonnenstandes. Oder Vergleich der Monatswerte mit dem Vorjahr:
grafana2.png

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 8. Sep 2024 18:32
von SRX
Eine Übersicht bekommst Du auch mit den Bordmitteln aus OH hin
Screenshot 2024-09-08 182949.png

Code: Alles auswählen

config:
  chartType: year
  label: Stromverbrauch
  order: "7"
  sidebar: true
slots:
  grid:
    - component: oh-chart-grid
      config: {}
  legend:
    - component: oh-chart-legend
      config:
        orient: horizontal
        show: true
  series:
    - component: oh-aggregate-series
      config:
        aggregationFunction: last
        dimension1: month
        gridIndex: 0
        item: Strom_LastMonth
        name: Strombezug
        stack: one
        type: bar
        xAxisIndex: 0
        yAxisIndex: 0
    - component: oh-aggregate-series
      config:
        aggregationFunction: last
        dimension1: month
        gridIndex: 0
        item: WR_LastMonat
        name: Wechselrichter
        stack: one
        type: bar
        xAxisIndex: 0
        yAxisIndex: 0
  title:
    - component: oh-chart-title
      config:
        show: true
        text: Stromverbrauch
  toolbox:
    - component: oh-chart-toolbox
      config:
        bottom: "0"
        left: "15"
        presetFeatures:
          - saveAsImage
          - dataView
          - magicType
        show: true
  tooltip:
    - component: oh-chart-tooltip
      config:
        orient: vertical
        show: true
  xAxis:
    - component: oh-category-axis
      config:
        categoryType: year
        gridIndex: 0
        monthFormat: default
        weekdayFormat: default
  yAxis:
    - component: oh-value-axis
      config:
        gridIndex: 0
        name: kWh

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 9. Sep 2024 11:08
von torfkop
Influx und Grafana läuft bei mir auch. Werde mir das heute Abend ansehen. Vielen Dank fürs Teilen!

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 12. Sep 2024 10:58
von EmptySoft
SRX hat geschrieben: 8. Sep 2024 18:32 Eine Übersicht bekommst Du auch mit den Bordmitteln aus OH hin
Kannst Du ein wenig erklären, wo Du was eingestellt hast? Der Code, von was ist der?

Danke, Harald

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 21. Sep 2024 14:12
von SRX
Hallo Harald
sorry, war einige Tage nicht im Form
Ich habe bei mir einige Item angelegt, welche ich entsprechend fülle
Für dieses Chart habe ich die beiden Item
Strom_LastMonth und WR_LastMonth angelegt.
Diese fülle ich über eine Regel indem ich diese aus dem Gesamtergebnis / Gesamtverbrauch extrahiere
Den Ertrag meldet mir ein Shelly und den Verbrauch eben vom Stromzähler (Smartmeter Binding).
Ich mache das auch für den Monat und den Tag, das habe ich aber weggelassen.
Dadurch das man quasi am Anfang des Monats wieder bei Null anfängt funktioniert das mit der Grafik

Evtl. hilft es Dir weiter

Code: Alles auswählen

rule "BKW Ertrag"

when 
   
    Time cron "1 2/5 * * * ?"
then 

var regel_startzeit = now()
val Number MonatsVal = regel_startzeit.getMonthValue()

var  ZonedDateTime   start_of_month = zdt.withDayOfMonth(1).toLocalDate().atStartOfDay(zdt.getZone())

var  monat = Solargrid_MPPT_YIELD_SINCE_RESET.deltaSince(start_of_month) as Number

 BKW_LastMonth.postUpdate(monat)

//Wechselrichter berechnen

var  WRmonat = Shelly1PMBKW_Gesamtverbrauch.deltaSince(start_of_month) as Number

 WR_LastMonat.postUpdate(WRmonat)

//Strom berechnen
var  Strommonat = Smartmeter_18.deltaSince(start_of_month) as Number
 Strom_LastMonth.postUpdate(Strommonat)
 
 end
Nachtrag:
Wenn sich die Frage auf den Chart bezog, nimm einmal den Code und und kopiere das bei einer neuen Chartpage in die Code Ansicht

Re: PV Monatsübersicht PV Ertrag pro Tag

Verfasst: 23. Sep 2024 09:59
von EmptySoft
Danke