Wochen und Monatsanzeige Grafana

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Snatsch
Beiträge: 379
Registriert: 9. Jan 2021 22:55
Answers: 0

Wochen und Monatsanzeige Grafana

Beitrag 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 ?
openhab4.1.2 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung

Benutzeravatar
udo1toni
Beiträge: 14150
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Wochen und Monatsanzeige Grafana

Beitrag 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?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

Snatsch
Beiträge: 379
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Wochen und Monatsanzeige Grafana

Beitrag 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)
openhab4.1.2 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung

Benutzeravatar
udo1toni
Beiträge: 14150
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Wochen und Monatsanzeige Grafana

Beitrag 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?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

Snatsch
Beiträge: 379
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Wochen und Monatsanzeige Grafana

Beitrag von Snatsch »

Hätte gern das z.B Woche 1. 10kwh Woche 2. 11kwh u.s.w.
openhab4.1.2 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung

Benutzeravatar
udo1toni
Beiträge: 14150
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Wochen und Monatsanzeige Grafana

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

Snatsch
Beiträge: 379
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Wochen und Monatsanzeige Grafana

Beitrag von Snatsch »

Ja, aber nein, Du musst die Werte zwingend als Zahlen bereitstellen.
Hallo wie mache ich das ?
openhab4.1.2 auf Pi 4 im Docker Portainer /Grafana&InfluxDB auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung

Benutzeravatar
udo1toni
Beiträge: 14150
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Wochen und Monatsanzeige Grafana

Beitrag 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.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.2, LXC), mit openHABian eingerichtet

Antworten