Hinweis: Schöne Alternative für Charts/Plots mit Grafana und DBLog (MySQL)

Begonnen von Thyraz, 08 Oktober 2017, 15:02:38

Vorheriges Thema - Nächstes Thema

speedAmaster

Hallo,
ich habe schon ein paar schöne Grafana Charts erstellt - hat ja wesentlich bessere Möglichkeiten im Vergleich zum FHEM-plot.... daher werde ich in Zukunft alles in Grafana machen.

Ich habe 2 Herausforderungen:
1) sofern im ausgewählten Zeitfenster links/rechts Werte in der DB fehlen (da sich die Werte evtl nicht verändert haben), habe ich nur einen kleine Teil oder gar nichts im Diagram - gibt es hierzu einen Lösungsansatz?
2) ich würde gerne (wie bei FHEM-plot) das Zeitfenster wählen wollen (hinein-, heraus-zoomen, links-rechts)
    a) dies geht zwar statt mit iframe mit der normalen URL, dann habe ich aber alle Interaktionsmöglichkeiten - nicht gewünscht - wie kann ich auch nur den TimeRange anzeigen/auswählen?
    b) die Skalierung gilt (bei der normalen URL) logischerweise nur für das aktuelle Diagram, wie kann der TimeRange für alle Diagramme einer Gruppe/Seite angepasst werden?

Dies sind vmtl Anfängerfragen, aber ich konnte nichts dazu bei FHEM oder Grafana finden (evtl die falschen Suchbegriffe??)  :-\
Gruß Bernd

kadettilac89

1) sofern im ausgewählten Zeitfenster links/rechts Werte in der DB fehlen (da sich die Werte evtl nicht verändert haben), habe ich nur einen kleine Teil oder gar nichts im Diagram - gibt es hierzu einen Lösungsansatz?
--> schau dir mal addLog von DBLog an, damit kannst du per at oder anders gescheduled einen Wert in die DB schreiben.
https://wiki.fhem.de/wiki/Plot-Abriss_vermeiden

2) was genau möchtest du sehen ... immer die letzten 24h, oder soll das dynamisch sein?

ch.eick

Zitat von: kadettilac89 am 09 Oktober 2020, 12:57:05
1) sofern im ausgewählten Zeitfenster links/rechts Werte in der DB fehlen (da sich die Werte evtl nicht verändert haben), habe ich nur einen kleine Teil oder gar nichts im Diagram - gibt es hierzu einen Lösungsansatz?
--> schau dir mal addLog von DBLog an, damit kannst du per at oder anders gescheduled einen Wert in die DB schreiben.
https://wiki.fhem.de/wiki/Plot-Abriss_vermeiden
/quote]
Hier mal ein Beispiel aus einem anderen Bereich

defmod DF_addLog DOIF ## Stündliche Einträge\
([:59])(\
   {addLog("LogDB", "AR_O_Rollo_FSB61", "position")}\
   {addLog("LogDB", "KU_S_Fenster"    , "state")}\
   {addLog("LogDB", "Heizung"         , "averageAmbientTemperature")}\
  )\
## Tägliche Einträge\
DOELSEIF\
([00:01])(\
   {addLog("LogDB", "AR_O_Rollo_FSB61", "position")}\
   {addLog("LogDB", "WO_W_Fenster"    , "state")}\
   {addLog("LogDB", "Heizung"         , "hotWaterCircPumpExtern")}\
   {addLog("LogDB", "Heizung"         , "averageAmbientTemperature")}\
  )\
DOELSEIF\
([+:20]) (\
   {if (ReadingsVal("PV_Anlage_1","Home_own_consumption_from_battery","na") <    2) {addLog("LogDB", "PV_Anlage_1", "Home_own_consumption_from_battery")}}\
   {if (ReadingsVal("PV_Anlage_1","Home_own_consumption_from_battery","na") == 100) {addLog("LogDB", "PV_Anlage_1", "Home_own_consumption_from_battery")}}\
   {if (ReadingsVal("PV_Anlage_1","Home_own_consumption_from_PV"     ,"na") <    2) {addLog("LogDB", "PV_Anlage_1", "Home_own_consumption_from_PV")}}\
   {if (ReadingsVal("PV_Anlage_1","Act_state_of_charge"              ,"na") == 100) {addLog("LogDB", "PV_Anlage_1", "Act_state_of_charge");;;;addLog("LogDB", "PV_Anlage_1", "Actual_battery_charge_usable_Power")}}\
   {if (ReadingsVal("PV_Anlage_1","Total_DC_Power"                   ,"na") <   30) {addLog("LogDB", "PV_Anlage_1", "Total_DC_Power")}}\
  )
attr DF_addLog DbLogExclude .*
attr DF_addLog do always
attr DF_addLog room System
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,

bevor ich nun das Rad neu erfinde suche ich einen Grafana json Definition für die Visualisierung einer PV Anlage.
Im Netz habe ich bereits etwas in Richtung Solaranzeige gefunden, jedoch hoffe ich, dass das bereits jemand auf FHEM angepasst hat.

- Grafana läuft bereits
- Ein user ist angelegt
- Die Datenbank ist verbunden

- Muster von SVGs im FhemWeb habe ich auch schon

Dann zeigt mal was Ihr schon habt, denn ich bin noch total neu bei Grafana.

Viele Grüße
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Moin zusammen,

gibt es eine Möglichkeit im Bereich "Visualization/Legend/Current" nicht nur den allerletzten current Wert anzeigen zu lassen, sondern den letzten current alle values?
Durch update-on-change sind die Einträge in der Datenbank ja nicht alle Zeitsynchron :-(

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MCh76

Zitat von: andies am 24 September 2020, 20:55:45
Seit wenigen Tagen ist grafana 7.2 verfügbar, da geht das. Details: https://grafana.com/blog/2020/09/23/grafana-v7.2-released-with-custom-date-formats-new-transforms-and-overrides/

ich habe das mal ausprobiert und es klappt zumindest innerhalb des charts super.
habe als docker environment variablen in der docker-compose.yml folgendes gesetzt:

        environment:
          - GF_DATE_FORMATS_FULL_DATE=dd DD.MM HH:mm
          - GF_DATE_FORMATS_INTERVALS_INTERVAL_HOUR=DD.MM HH:mm
          - GF_DATE_FORMATS_INTERVALS_INTERVAL_DAY=DD.MM
          - GF_DATE_FORMATS_INTERVALS_INTERVAL_MONTH=MM.YYYY

ch.eick

Hi, ich bin noch ganz frisch mit grafana unterwegs.
Gibt es bereits einen Docker Container mit einer aktuelleren Version als v6.5.2 für den RPI ?

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MCh76

Zitat von: ch.eick am 05 November 2020, 19:36:25
Hi, ich bin noch ganz frisch mit grafana unterwegs.
Gibt es bereits einen Docker Container mit einer aktuelleren Version als v6.5.2 für den RPI ?

Gruß
   Christian

Hallo Christian, ja ich habe die 7.2.1 über docker laufen

ch.eick

Zitat von: MCh76 am 05 November 2020, 23:48:13
Hallo Christian, ja ich habe die 7.2.1 über docker laufen
Moin, und kann man das Container Image irgendwo laden?
Hast Du eine Anleitung, wenn es kein Image gibt?

Gruß
    Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MCh76

Zitat von: ch.eick am 06 November 2020, 07:37:56
Moin, und kann man das Container Image irgendwo laden?
Hast Du eine Anleitung, wenn es kein Image gibt?

Gruß
    Christian

ich habe einfach folgendes in meine docker-compose.yml datei aufgenommen

    grafana:
        image: grafana/grafana:latest
        user: "1000"
        restart: always
        networks:
          - fhem-network
        expose:
          - "3000"
        ports:
          - "3000:3000"
        volumes:
           - ./grafana/data:/var/lib/grafana
           - ./grafana/provisioning:/etc/grafana/provisioning
        environment:
          - GF_AUTH_ANONYMOUS_ENABLED=true
          - GF_AUTH_ANONYMOUS_ORG_NAME=meineORGNAME
          - GF_AUTH_ANONYMOUS_ORG_ROLE=Viewer
          - GF_SECURITY_ALLOW_EMBEDDING=true
          - GF_SECURITY_COOKIE_SAMESITE=none
          - GF_LOG_MODE=console file
          - GF_LOG_LEVEL=debug
          - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
          - GF_DATE_FORMATS_FULL_DATE=dd DD.MM HH:mm
          - GF_DATE_FORMATS_INTERVALS_INTERVAL_HOUR=DD.MM HH:mm
          - GF_DATE_FORMATS_INTERVALS_INTERVAL_DAY=DD.MM
          - GF_DATE_FORMATS_INTERVALS_INTERVAL_MONTH=MM.YYYY
        depends_on:
            - "mariadb"

ch.eick

Zitat von: MCh76 am 06 November 2020, 08:47:12
ich habe einfach folgendes in meine docker-compose.yml datei aufgenommen
Okay, das ist passend zu meiner Definition, nur habe ich "latest" schon vor geraumer Zeit abgerufen.
Kann ich jetzt einfach Grafana stoppen, das alte Image löschen und dann wieder neu erstellen lassen?
Oder gibt es ein Docker Kommando, was alle Images neu abruft und überschreibt?

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MCh76

Zitat von: ch.eick am 06 November 2020, 08:51:54
Okay, das ist passend zu meiner Definition, nur habe ich "latest" schon vor geraumer Zeit abgerufen.
Kann ich jetzt einfach Grafana stoppen, das alte Image löschen und dann wieder neu erstellen lassen?
Oder gibt es ein Docker Kommando, was alle Images neu abruft und überschreibt?

Gruß
   Christian

probier mal:
docker stop "containername"
docker kill "containername"
docker rm "containername"
ggf. noch docker image rm IMAGE

oder du installierst portainer, finde ich ein super angenehmes tool mit netter oberfläche

https://hub.docker.com/r/portainer/portainer-ce

docker volume create portainer_data

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce


ch.eick

Zitat von: MCh76 am 06 November 2020, 09:13:05
probier mal:
$ docker container ls -f name="fhem_2020"
$ docker image ls        <<<<<<<<<< hier scheinen die Filter nicht zu klappen

$ docker stop <container name>
$ docker rm <container name>
$ docker image rm <image name>

$ docker-compose up      <<<<< prüft alle Images und erstellt dann Grafana neu
strg C                               <<<<< stoppt den aktuellen Konsol output wieder

$ docker start <portainer name>
$ ...

Oder dann in Portainer die restlichen Container starten.
Vielen Dank für den quick Start, ich hatte einfach noch nicht den Mut es zu tun. Nun bin ich ein Jahr weiter :-)

Leider sind die Feineinstellungen im Grafana verloren gegangen :-(
Die Namen in der Legende und auch die Farbzuordnung sind wohl auf default.
Gibt es da noch einen Trick?

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MCh76

da muss ich leider passen...sind im series override vllt. irgendwelche werte gefüllt die die einzel queries übersteuern?
hatte gestern auch in einem chart auf einmal einen timeshift drin und hatte keine ahnung woher der kommt.

ch.eick

Zitat von: MCh76 am 06 November 2020, 09:57:09
da muss ich leider passen...sind im series override vllt. irgendwelche werte gefüllt die die einzel queries übersteuern?
hatte gestern auch in einem chart auf einmal einen timeshift drin und hatte keine ahnung woher der kommt.
Die Definition des Namens in der Legende wird in der neueren Version anders generiert.
Vorher war es immer der Queryname mit dem Spaltenname also "Heizung value" was mich eh gestört hatte :-)
Nun ist es der Spaltenname. Ich habe jetzt "value AS Temperatur" im SQL eingetragen und schon sieht es wieder schön aus.

Die Farben rekonstruiere ich dann aus einem Screenshot.

Hast Du eventuell eine Button Lösung bereits implementiert?

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick