Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Influx-->JSON-->Chart Beispiel

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    464

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    383

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    974

Influx-->JSON-->Chart Beispiel

Geplant Angeheftet Gesperrt Verschoben Visualisierung
3 Beiträge 2 Kommentatoren 1.2k Aufrufe 3 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • S Offline
    S Offline
    StefanRied
    schrieb am zuletzt editiert von StefanRied
    #1

    @cmorlok @Scrounger
    Hallo,
    ich habe grade JSON Charts für mich entdeckt.
    Extrem cool. Ich habe in einem Influx Measurement den aktuellen Strompreis-Forecast liegen. Der kommt immer um 14 Uhr für den nächsten Tag von 0 bis 24 Uhr raus. Für die Leute die wie ich einen hourly Tarif https://www.awattar.de/ haben die Entscheidung, wann man den Stromflitzer aufladen läßt, wenn die Sonne nicht scheint.
    Das Chart hat also je nachdem, wann man drauf schaut eine andere Auflösung. Kurz vor 14 Uhr sind nur noch werte von 14 Uhr bis 23 Uhr des aktuellen Tages drin. Kurz nach 14 Uhr dann eben die 24 neue Stundentarife für den folgenden Tag. Man will nie abgelaufene Preise sehe, es ist ja ein Forecast.
    Das habe ich nicht mit Grafana oder eCharts auf ioBroker hin bekommen.

    Das Chart soll also immer von den Strompreis von jetzt bis zum Ende der Datenbank anzeigen. In SQL recht einfach:

    select * from StromPreis WHERE time > now() - 1h 
    

    Weil ich auch in https://forum.iobroker.net/topic/31871/material-design-widgets-json-chart-widget/39 kaum gute Beispiele gefunden habe, wie man die JSONs für JSON-Charts zusammen baut, möchte ich den Code einfach mal posten. Viel Spaß beim Jonglieren mit JSON Objekten ...

    // Influx im iobroker
    const Influx = require('influx');
    const influx = new Influx.InfluxDB({
        host: '127.0.0.1',
        database: 'iobroker' 
      });
    
    // Das beschreibt das Chartaussehen
    var myChart =  {"graphs":[
        {"type":"bar",
         "color":"#FF0000",
         "legendText": "ct/kWh",
         "yAxis_id":0,"line_UseFillColor":true,"displayOrder":0,
         "line_Thickness":2,"line_pointSize":0,
         "datalabel_show":false,"yAxis_min":10,"yAxis_max":55,"yAxis_zeroLineWidth":0,"xAxis_bounds":"ticks",
        "xAxis_timeFormats":{"millisecond":"H:mm:ss.SSS","second":"H:mm:ss","minute":"H","hour":"dd.[\\n]H",
        "day":"dd[\\n]DD",
        "week":"dd[\\n]DD.MM","month":"MMM[\\n]YYYY","quarter":"[Q]Q - YYYY","year":"YYYY"}, data:[]
    }]}
    
    // Hier kommen alle Daten aus der InfluxDB und laden im data segment des ChartJSONs
    
    await influx.query(`select * from StromPreis WHERE time > now() - 1h limit 48;`).
        then((rows) => {
            myChart.graphs[0].data = rows;
        }).
        catch(err => { console.log(`Error query InfluxDB! ${err.stack}`) });  
    
    // Hier gehe ich nochmal schnell durch das data array und benenne die felder so um das JSONCharts 
    // die daten in t und y findet. Alle anderen Felder die aus dem Query kommen löschen. Man könnte natürlich auch 
    // Labels im Influx query nehmen um das zu fixen.
    
    myChart.graphs[0].data.forEach(data => {
                data.t = data.time; 
                delete data.time;
                data.y = data.preis_brutto; 
                delete data.preis_netto; delete data.preis_brutto; 
            })
    
    // console.log(myChart);
    // Und das ganze auf den State schreiben der im VIS als ID zum JSONChart eingetragen ist. Fertig und echt Mega-Cool :)
    setState("0_userdata.0.StromManagement.Chart",myChart);
    
    

    Bildschirmfoto 2021-10-27 um 17.18.20.png

    Stefan Ried

    PercyP 1 Antwort Letzte Antwort
    1
    • S StefanRied

      @cmorlok @Scrounger
      Hallo,
      ich habe grade JSON Charts für mich entdeckt.
      Extrem cool. Ich habe in einem Influx Measurement den aktuellen Strompreis-Forecast liegen. Der kommt immer um 14 Uhr für den nächsten Tag von 0 bis 24 Uhr raus. Für die Leute die wie ich einen hourly Tarif https://www.awattar.de/ haben die Entscheidung, wann man den Stromflitzer aufladen läßt, wenn die Sonne nicht scheint.
      Das Chart hat also je nachdem, wann man drauf schaut eine andere Auflösung. Kurz vor 14 Uhr sind nur noch werte von 14 Uhr bis 23 Uhr des aktuellen Tages drin. Kurz nach 14 Uhr dann eben die 24 neue Stundentarife für den folgenden Tag. Man will nie abgelaufene Preise sehe, es ist ja ein Forecast.
      Das habe ich nicht mit Grafana oder eCharts auf ioBroker hin bekommen.

      Das Chart soll also immer von den Strompreis von jetzt bis zum Ende der Datenbank anzeigen. In SQL recht einfach:

      select * from StromPreis WHERE time > now() - 1h 
      

      Weil ich auch in https://forum.iobroker.net/topic/31871/material-design-widgets-json-chart-widget/39 kaum gute Beispiele gefunden habe, wie man die JSONs für JSON-Charts zusammen baut, möchte ich den Code einfach mal posten. Viel Spaß beim Jonglieren mit JSON Objekten ...

      // Influx im iobroker
      const Influx = require('influx');
      const influx = new Influx.InfluxDB({
          host: '127.0.0.1',
          database: 'iobroker' 
        });
      
      // Das beschreibt das Chartaussehen
      var myChart =  {"graphs":[
          {"type":"bar",
           "color":"#FF0000",
           "legendText": "ct/kWh",
           "yAxis_id":0,"line_UseFillColor":true,"displayOrder":0,
           "line_Thickness":2,"line_pointSize":0,
           "datalabel_show":false,"yAxis_min":10,"yAxis_max":55,"yAxis_zeroLineWidth":0,"xAxis_bounds":"ticks",
          "xAxis_timeFormats":{"millisecond":"H:mm:ss.SSS","second":"H:mm:ss","minute":"H","hour":"dd.[\\n]H",
          "day":"dd[\\n]DD",
          "week":"dd[\\n]DD.MM","month":"MMM[\\n]YYYY","quarter":"[Q]Q - YYYY","year":"YYYY"}, data:[]
      }]}
      
      // Hier kommen alle Daten aus der InfluxDB und laden im data segment des ChartJSONs
      
      await influx.query(`select * from StromPreis WHERE time > now() - 1h limit 48;`).
          then((rows) => {
              myChart.graphs[0].data = rows;
          }).
          catch(err => { console.log(`Error query InfluxDB! ${err.stack}`) });  
      
      // Hier gehe ich nochmal schnell durch das data array und benenne die felder so um das JSONCharts 
      // die daten in t und y findet. Alle anderen Felder die aus dem Query kommen löschen. Man könnte natürlich auch 
      // Labels im Influx query nehmen um das zu fixen.
      
      myChart.graphs[0].data.forEach(data => {
                  data.t = data.time; 
                  delete data.time;
                  data.y = data.preis_brutto; 
                  delete data.preis_netto; delete data.preis_brutto; 
              })
      
      // console.log(myChart);
      // Und das ganze auf den State schreiben der im VIS als ID zum JSONChart eingetragen ist. Fertig und echt Mega-Cool :)
      setState("0_userdata.0.StromManagement.Chart",myChart);
      
      

      Bildschirmfoto 2021-10-27 um 17.18.20.png

      PercyP Offline
      PercyP Offline
      Percy
      schrieb am zuletzt editiert von
      #2

      Coole Lösung. Ich bin mir nicht sicher, ob du mit deiner Aussage, dass du das mit Grafana nicht hinbekommen hast, die Einbettung eines Charts in ioBroker oder die Darstellung des Charts selbst meintest.

      Für ersteres kann ich dir eine Lösung zeigen:

      Ich habe das mal schnell für den PV-Tagesertrag und die Poolwassertemperatur gemacht (es sei mir verziehen, dass diese weder thematisch noch vom Layout her in die VIS Seite passen, aber ich denke man versteht das Konzept):

      8002bdfb-e702-4b74-8e47-a509342673f3-image.png

      Das Widget ist ein iFrame. Als Quelle einfach den Link eintragen, den Grafana dir für ein Chart anzeigt, wenn du auf "Teilen" gehst. Um den Header zu entfernen, musst du den Link etwas anpassen:

      http://[grafana IP]:3000/d-solo/[ID]/pool?orgId=1theme=dark&panelId=14

      Bei der panel ID im Zweifel nochmal in Grafana nachschauen oder einfach durchprobieren.

      Falls es dir um die Darstellung des Charts für deinen Anwendungsfall ging, vergiss meinen Post einfach ;) Vielleicht hilft er aber jemand anderem.

      LG Percy

      Synology 918+ 16GB - ioBroker in Docker v8.0.1 | KNX | Homematic | Homemanager | evcc | SMA WR

      S 1 Antwort Letzte Antwort
      0
      • PercyP Percy

        Coole Lösung. Ich bin mir nicht sicher, ob du mit deiner Aussage, dass du das mit Grafana nicht hinbekommen hast, die Einbettung eines Charts in ioBroker oder die Darstellung des Charts selbst meintest.

        Für ersteres kann ich dir eine Lösung zeigen:

        Ich habe das mal schnell für den PV-Tagesertrag und die Poolwassertemperatur gemacht (es sei mir verziehen, dass diese weder thematisch noch vom Layout her in die VIS Seite passen, aber ich denke man versteht das Konzept):

        8002bdfb-e702-4b74-8e47-a509342673f3-image.png

        Das Widget ist ein iFrame. Als Quelle einfach den Link eintragen, den Grafana dir für ein Chart anzeigt, wenn du auf "Teilen" gehst. Um den Header zu entfernen, musst du den Link etwas anpassen:

        http://[grafana IP]:3000/d-solo/[ID]/pool?orgId=1theme=dark&panelId=14

        Bei der panel ID im Zweifel nochmal in Grafana nachschauen oder einfach durchprobieren.

        Falls es dir um die Darstellung des Charts für deinen Anwendungsfall ging, vergiss meinen Post einfach ;) Vielleicht hilft er aber jemand anderem.

        LG Percy

        S Offline
        S Offline
        StefanRied
        schrieb am zuletzt editiert von
        #3

        @percy Einfach etwas von Grafana zu embedden ist nicht das Problem. Meine Aufgabe war, dass ein Script, dass zum Beispiel auf eine Nutzereingabe reagiert, das Chart direkt ändert. Also zum Beispiel die Zeitgrenze verändert. Das habe ich bei Grafana nicht durch die "App" (also ein Script das auf States reagiert) hin bekommen.

        Stefan Ried

        1 Antwort Letzte Antwort
        0

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        266

        Online

        32.8k

        Benutzer

        82.8k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe