Seite 1 von 1

Wochen und Monatsanzeige Grafana

Verfasst: 17. Mai 2024 11:27
von Snatsch
Hallo, ich habe diese 3 Items und würde sie mir gerne in Grafana anzeigen lassen

Code: Alles auswählen

Group Solarertrag
String SolarHeute "SolarHeute"<solarplant>(Solarertrag)
String SolarWoche "SolarWoche"<solarplant>(Solarertrag)
String SolarMonat "SolarMonat"<solarplant>(Solarertrag)
String SolarJahr "SolarJahr"<solarplant>(Solarertrag)
als Persistens nutze ich influxdb wenn ich in Grafana ein Dashboard mit z.B. SolarWoche erstellen möchte kommt die Meldung "No Data". Kann mir jemand auf die Sprünge helfen ?

Re: Wochen und Monatsanzeige Grafana

Verfasst: 18. Mai 2024 13:03
von udo1toni
Hmm. Also abgesehen davon, dass es sich um fünf Items handelt :) und da Leerzeichen fehlen, sind die vier unteren Items vom Typ String.

InfluxDB ist durchaus in der Lage, auch Strings zu speichern, aber es sind dann halt Strings.
Wenn Du numerische Werte darstellen willst, musst Du zwingend Items vom Typ Number verwenden (alternativ gehen auch QuantityType Items, also z.B. Number:Energy)

Da die Items ja offensichtlich ungebunden sind: Wie sieht die zugehörige Rule aus, welche die Items mit Daten füllt?

Re: Wochen und Monatsanzeige Grafana

Verfasst: 19. Mai 2024 23:02
von Snatsch
das ist die Rule und ja es sind 5 Items ;)

Code: Alles auswählen

rule "Solarertrag Tag Woche Monat Jahr"
when
    Item Solarertrag_Gesamt changed // changed reicht.
then
    val Preis = 0.481 
    val start_of_day   = now.with(LocalTime.MIDNIGHT)                                   // heute, Mitternacht
    val start_of_week  = start_of_day.minusDays(start_of_day.getDayOfWeek.getValue - 1) // Montag
    val start_of_month = start_of_day.withDayOfMonth(1)                                 // Erster Tag des Monats (1)
    val start_of_year  = start_of_day.withDayOfYear(94)                                 // Beginn am 03.04.2024

    val Solar_Heute = if(Solarertrag_Gesamt.deltaSince(start_of_day) as Number != null) (Solarertrag_Gesamt.deltaSince(start_of_day) as Number).doubleValue() else 0.0 // kWh Delta holen
    val Solar_Woche = if(Solarertrag_Gesamt.deltaSince(start_of_week) as Number != null) (Solarertrag_Gesamt.deltaSince(start_of_week) as Number).doubleValue() else 0.0
    val Solar_Monat = if(Solarertrag_Gesamt.deltaSince(start_of_month) as Number != null) (Solarertrag_Gesamt.deltaSince(start_of_month) as Number).doubleValue() else 0.0
    val Solar_Jahr = if(Solarertrag_Gesamt.deltaSince(start_of_year) as Number != null) (Solarertrag_Gesamt.deltaSince(start_of_year) as Number).doubleValue() else 0.0
    
    val Euro_Heute = String::format("%.2f €",(Solar_Heute * Preis)) // Summe in Euro berechnen
    val Euro_Woche = String::format("%.2f €",(Solar_Woche * Preis))
    val Euro_Monat = String::format("%.2f €",(Solar_Monat * Preis))
    val Euro_Jahr = String::format("%.2f €",(Solar_Jahr * Preis))
    
    logInfo("Solarertrag", "Solarertrag heute: " + Solar_Heute.toString + " kWh / " + Euro_Heute)
    logInfo("Solarertrag", "Solarertrag diese Woche: " + Solar_Woche.toString + " kWh / " + Euro_Woche)
    logInfo("Solarertrag", "Solarertrag diesen Monat: " + Solar_Monat.toString + " kWh / " + Euro_Monat)
    logInfo("Solarertrag", "Solarertrag dieses Jahr: " + Solar_Jahr.toString + " kWh / " + Euro_Jahr)
    
    SolarHeute.postUpdate(Solar_Heute.toString + " kWh/" +  Euro_Heute)
    SolarWoche.postUpdate(Solar_Woche.toString + " kWh/" +  Euro_Woche)
    SolarMonat.postUpdate(Solar_Monat.toString + " kWh/" +  Euro_Monat)
    SolarJahr.postUpdate(Solar_Jahr.toString + " kWh/" +  Euro_Jahr)

Re: Wochen und Monatsanzeige Grafana

Verfasst: 19. Mai 2024 23:12
von udo1toni
Wie soll denn ein String Item, welches einen String der Form "x.y kWh/a.bc €" enthält, in einem Chart abgebildet werden?

Re: Wochen und Monatsanzeige Grafana

Verfasst: 19. Mai 2024 23:24
von Snatsch
Hätte gern das z.B Woche 1. 10kwh Woche 2. 11kwh u.s.w.

Re: Wochen und Monatsanzeige Grafana

Verfasst: 20. Mai 2024 12:16
von udo1toni
Ja, aber nein, Du musst die Werte zwingend als Zahlen bereitstellen.
Du kannst die Zusammenfassung der Daten an der Stelle ohne Probleme auch in Grafana erledigen, aber die Werte müssen als diskrete Zahlenwerte vorliegen.

Re: Wochen und Monatsanzeige Grafana

Verfasst: 24. Mai 2024 16:55
von Snatsch
Ja, aber nein, Du musst die Werte zwingend als Zahlen bereitstellen.
Hallo wie mache ich das ?

Re: Wochen und Monatsanzeige Grafana

Verfasst: 24. Mai 2024 22:29
von udo1toni
Na, zunächst, indem Du Number Items verwendest, statt String Items. Für die Kosten musst Du ein separates Item verwenden.
Je nachdem, mit welchem Addon die Messwerte in openHAB ankommen, kann es sein, dass die Messwerte mit Einheit abgeliefert werden (also z.B. in kWh oder auch Ws oder halt irgendeiner anderen Einheit, in der Energie gemessen wird (kcal wäre eher unüblich, aber auch die kennt openHAB). In dem Fall musst Du den Itemtyp passend wählen (Number:Energy) und in den Metadaten des Items die passende Einheit wählen, in der die Werte persistiert werden sollen.
Die Persistence selbst kann keine Einheiten speichern, weshalb openHAB da etwas schummelt.

In Grafana kannst Du die Daten dann über die dort vorhandenen Funktionen abrufen, wie das geht, kommt auch darauf an, welches Backend Du verwendest. InfluxDB 1 und InfluxDB 2 unterscheiden sich fundamental voneinander, denn InfluxDB 2 verwendet Flux als Abfragesprache, während InfluxDB1 einen SQL-Dialekt spricht.