Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Grafana Diagramm per Telegram versenden

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Grafana Diagramm per Telegram versenden

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
grafanatelegram
5 Beiträge 4 Kommentatoren 3.3k Aufrufe 9 Watching
  • Ä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.
  • Achim WeisA Offline
    Achim WeisA Offline
    Achim Weis
    schrieb am zuletzt editiert von Achim Weis
    #1

    Hi

    Hier eine kleine Doku wie man Grafana Diagramme per Telegram versenden kann.
    Ich habe von der kompletten Doku nichts selbst erfunden, sondern aus diversen Quellen zusammen kopiert.

    Läuft auf Raspi4/4GB

    Grundidee:

    Grafana Diagramm als PNG rendern, lokal speichern und per Telegram versenden.

    Fazit:
    Läuft :-)
    e047c11a-65fa-4832-9237-e6f0b99d3f3c-image.png*Telegram mit "eigener Tastatur" als Menüsteuerung

    1. Grafana und ggf. influxdb installieren
    Das ist hier schon perfekt beschrieben:
    https://www.verdrahtet.info/2020/02/14/installation-von-influxdb-grafana-inkl-verbindung-zu-iobroker/

    login: admin/admin

    2. Diagramm als PNG rendern
    Wenn man jetzt in Grafana versucht das Diagramm zu exportieren, stolpert man über das erste Problem:
    image_2020-10-21_23-41-05.png

    Da PhantomJS nicht so einfach für ARM vorhanden ist, muss man also die render-Engine tauschen.

    2.1 per SSH auf den raspi einloggen
    https://www.heise.de/tipps-tricks/Raspberry-Pi-SSH-einrichten-so-geht-s-4190645.html

    danach muss eine ganze Reihe an Befehlen ausgeführt werden.

    sudo su
    
    apt-get update
    apt-get install git
    cd /var/lib/grafana/plugins
    git clone https://github.com/grafana/grafana-image-renderer
    cd grafana-image-renderer
    npm -g install yarn
    
    
    npm -g install npm
    npm -g install yarn
    npm -g install typescript
    
    npm config set unsafe-perm=true
    
    npm i grpc
    npm i husky
    npm i puppeteer
    npm i postinstall
    npm i install
    npm install
    
    
    yarn install --pure-lockfile
    yarn run build
    
    cp plugin_start_linux_amd64 plugin_start_linux_arm
    

    jetzt kann man endlich den chromium Browser installieren

    sudo apt-get install chromium-browser
    

    Danach kann man in der frisch kopierten Datei den Chromium hinterlegen.
    /var/lib/grafana/plugins/grafana-image-renderer/plugin_start_linux_arm

    nano plugin_start_linux_arm
    

    und die rote Zeile einfügen

    export GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser"
    

    EDIT: mittlerweile heißt der chromium browser wohl nur noch chromium.
    daher muss man die Zeile in

    #!/bin/bash
    DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    export GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium"
    node ${DIR}/build/app.js

    ändern

    Danach mit
    [Strg] + [O] und [Strg] + [X]
    speichern und beenden

    #!/bin/bash
    DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
    export GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser"
    node ${DIR}/build/app.js

    Fertig.

    Jetzt noch neu starten

    sudo systemctl restart grafana-server.service
    

    und nach 30 Sekunden testen ob der service sauber gestartet wurde:

    sudo systemctl status grafana-server.service
    

    logs finden sich hier

    /var/log/grafana
    
    

    Am besten startet man den Raspi einmal neu.... keine Ahnung ob das nötig ist, unter "Windows95 gelernt" - funktioniert bis heute... :-)

    3. Diagram als PNG Bild exportieren (TEST)
    572f198f-0a1a-4d47-a4e7-e11dc5e31684-image.png

    c5133629-f061-4564-a748-0a181b92f52e-image.png

    Wenn es funktioniert --> gleich den Link kopieren

    4. Bild per CURL und API Key speichern
    https://mattionline.de/grafana-api-export-graph-as-png/#get-the-graph-url

    Einfach in Grafana den API key generieren.
    99e3d963-f17f-4e3a-96cc-fa3b81937149-image.png

    Danach wie von Matti beschrieben den CURL Befehl zusammenbasteln

    curl -H "Authorization: Bearer eyJrIjoieDRzbjh6R1__APIKEY__joiZXhwb3J0IiwiaWQiOjF9" "http://192.168.2.132:3000/render/dashboard-solo/db/mathias?panelId=22&from=now-24h&to=now&width=1000&height=500" > ./home/pi/filename.png

    rot = dein API key
    grün = dein Verzeichnis der Wahl

    5. Blockly Beispiel
    10337dbf-ba90-4d1c-86bc-2d166b848d80-image.png

    In diesem Beispiel wird der EXEC Befehl mit dem CURL command abgesetzt und das Bild im Ordner
    ./home/pi/GrafanaExportTelegram gespeichert.
    Danach wartet das Skript 7 Sekunden (die Generierung dauert ca 5 Sekunden auf dem Raspi4)
    Danach wird im Telegram Blockly einfach der Pfad zur Datei als text eingetragen.

    Hinweis:

    1. Auf die Rechte des Ordners achten, falls ihr einen neuen anlegt. (777)
    2. JavaScript Adapter muss ebenfalls den exec Befehl erlauben
      9e9b5f7d-2539-4210-9d0a-ee67e926bfbc-image.png

    Offene Punkte:

    • Es kann sein, dass die Grafik gepuffert wird - dann muss man die Datei jeweils dynamisch benennen.
    • Man sollte die PNGs wohl irgendwann auch wieder löschen

    Vermutlich bekommt der eine oder andere Linux Halbgott einen Anfall, dass hier fast alles mit "sudo su" installiert wurde.
    Falls dem so ist --> gerne die Doku verbessern, aber bitte keine Security-Triaden hier posten.

    Viel Spaß damit.
    Diese Funktion hat mir seit meinem Wechsel von FHEM immer gefehlt.

    Wichtigste Quellen:
    https://mattionline.de/grafana-api-export-graph-as-png/#get-the-graph-url
    https://community.openhab.org/t/tutorial-grafana-rendering-on-raspberry-pi/71777/58
    https://www.verdrahtet.info/2020/02/14/installation-von-influxdb-grafana-inkl-verbindung-zu-iobroker/

    AsgothianA 1 Antwort Letzte Antwort
    1
    • Achim WeisA Achim Weis

      Hi

      Hier eine kleine Doku wie man Grafana Diagramme per Telegram versenden kann.
      Ich habe von der kompletten Doku nichts selbst erfunden, sondern aus diversen Quellen zusammen kopiert.

      Läuft auf Raspi4/4GB

      Grundidee:

      Grafana Diagramm als PNG rendern, lokal speichern und per Telegram versenden.

      Fazit:
      Läuft :-)
      e047c11a-65fa-4832-9237-e6f0b99d3f3c-image.png*Telegram mit "eigener Tastatur" als Menüsteuerung

      1. Grafana und ggf. influxdb installieren
      Das ist hier schon perfekt beschrieben:
      https://www.verdrahtet.info/2020/02/14/installation-von-influxdb-grafana-inkl-verbindung-zu-iobroker/

      login: admin/admin

      2. Diagramm als PNG rendern
      Wenn man jetzt in Grafana versucht das Diagramm zu exportieren, stolpert man über das erste Problem:
      image_2020-10-21_23-41-05.png

      Da PhantomJS nicht so einfach für ARM vorhanden ist, muss man also die render-Engine tauschen.

      2.1 per SSH auf den raspi einloggen
      https://www.heise.de/tipps-tricks/Raspberry-Pi-SSH-einrichten-so-geht-s-4190645.html

      danach muss eine ganze Reihe an Befehlen ausgeführt werden.

      sudo su
      
      apt-get update
      apt-get install git
      cd /var/lib/grafana/plugins
      git clone https://github.com/grafana/grafana-image-renderer
      cd grafana-image-renderer
      npm -g install yarn
      
      
      npm -g install npm
      npm -g install yarn
      npm -g install typescript
      
      npm config set unsafe-perm=true
      
      npm i grpc
      npm i husky
      npm i puppeteer
      npm i postinstall
      npm i install
      npm install
      
      
      yarn install --pure-lockfile
      yarn run build
      
      cp plugin_start_linux_amd64 plugin_start_linux_arm
      

      jetzt kann man endlich den chromium Browser installieren

      sudo apt-get install chromium-browser
      

      Danach kann man in der frisch kopierten Datei den Chromium hinterlegen.
      /var/lib/grafana/plugins/grafana-image-renderer/plugin_start_linux_arm

      nano plugin_start_linux_arm
      

      und die rote Zeile einfügen

      export GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser"
      

      EDIT: mittlerweile heißt der chromium browser wohl nur noch chromium.
      daher muss man die Zeile in

      #!/bin/bash
      DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
      export GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium"
      node ${DIR}/build/app.js

      ändern

      Danach mit
      [Strg] + [O] und [Strg] + [X]
      speichern und beenden

      #!/bin/bash
      DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
      export GF_RENDERER_PLUGIN_CHROME_BIN="/usr/bin/chromium-browser"
      node ${DIR}/build/app.js

      Fertig.

      Jetzt noch neu starten

      sudo systemctl restart grafana-server.service
      

      und nach 30 Sekunden testen ob der service sauber gestartet wurde:

      sudo systemctl status grafana-server.service
      

      logs finden sich hier

      /var/log/grafana
      
      

      Am besten startet man den Raspi einmal neu.... keine Ahnung ob das nötig ist, unter "Windows95 gelernt" - funktioniert bis heute... :-)

      3. Diagram als PNG Bild exportieren (TEST)
      572f198f-0a1a-4d47-a4e7-e11dc5e31684-image.png

      c5133629-f061-4564-a748-0a181b92f52e-image.png

      Wenn es funktioniert --> gleich den Link kopieren

      4. Bild per CURL und API Key speichern
      https://mattionline.de/grafana-api-export-graph-as-png/#get-the-graph-url

      Einfach in Grafana den API key generieren.
      99e3d963-f17f-4e3a-96cc-fa3b81937149-image.png

      Danach wie von Matti beschrieben den CURL Befehl zusammenbasteln

      curl -H "Authorization: Bearer eyJrIjoieDRzbjh6R1__APIKEY__joiZXhwb3J0IiwiaWQiOjF9" "http://192.168.2.132:3000/render/dashboard-solo/db/mathias?panelId=22&from=now-24h&to=now&width=1000&height=500" > ./home/pi/filename.png

      rot = dein API key
      grün = dein Verzeichnis der Wahl

      5. Blockly Beispiel
      10337dbf-ba90-4d1c-86bc-2d166b848d80-image.png

      In diesem Beispiel wird der EXEC Befehl mit dem CURL command abgesetzt und das Bild im Ordner
      ./home/pi/GrafanaExportTelegram gespeichert.
      Danach wartet das Skript 7 Sekunden (die Generierung dauert ca 5 Sekunden auf dem Raspi4)
      Danach wird im Telegram Blockly einfach der Pfad zur Datei als text eingetragen.

      Hinweis:

      1. Auf die Rechte des Ordners achten, falls ihr einen neuen anlegt. (777)
      2. JavaScript Adapter muss ebenfalls den exec Befehl erlauben
        9e9b5f7d-2539-4210-9d0a-ee67e926bfbc-image.png

      Offene Punkte:

      • Es kann sein, dass die Grafik gepuffert wird - dann muss man die Datei jeweils dynamisch benennen.
      • Man sollte die PNGs wohl irgendwann auch wieder löschen

      Vermutlich bekommt der eine oder andere Linux Halbgott einen Anfall, dass hier fast alles mit "sudo su" installiert wurde.
      Falls dem so ist --> gerne die Doku verbessern, aber bitte keine Security-Triaden hier posten.

      Viel Spaß damit.
      Diese Funktion hat mir seit meinem Wechsel von FHEM immer gefehlt.

      Wichtigste Quellen:
      https://mattionline.de/grafana-api-export-graph-as-png/#get-the-graph-url
      https://community.openhab.org/t/tutorial-grafana-rendering-on-raspberry-pi/71777/58
      https://www.verdrahtet.info/2020/02/14/installation-von-influxdb-grafana-inkl-verbindung-zu-iobroker/

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      @Achim-Weis

      Eine Frage zu deinem (sehr interessanten) Showcase:

      läuft der PI bei Dir mit grafischer Oberfläche, oder geht das ganze auch wenn keine Oberfläche installiert ist ?

      A.

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      Achim WeisA 1 Antwort Letzte Antwort
      0
      • AsgothianA Asgothian

        @Achim-Weis

        Eine Frage zu deinem (sehr interessanten) Showcase:

        läuft der PI bei Dir mit grafischer Oberfläche, oder geht das ganze auch wenn keine Oberfläche installiert ist ?

        A.

        Achim WeisA Offline
        Achim WeisA Offline
        Achim Weis
        schrieb am zuletzt editiert von
        #3

        @Asgothian
        Keine GUI installiert. Chrome wird nur im headless Modus aufgerufen.

        1 Antwort Letzte Antwort
        0
        • RK62R Offline
          RK62R Offline
          RK62
          schrieb am zuletzt editiert von
          #4

          zur Info: Ab Grafana V7.x wird PhantomJS nicht mehr offiziell unterstützt:
          https://grafana.com/docs/grafana/latest/administration/image_rendering/

          Ich habe das daher wie empfohlen mit einem separaten Docker Container umgesetzt:

          • Diesen Docker Container zusätzlich implementieren:
            https://hub.docker.com/r/grafana/grafana-image-renderer

          • Im Grafana-Container dieses Environment setzen:
            https://github.com/grafana/grafana-image-renderer/blob/master/docs/remote_rendering_using_docker.md

            GF_RENDERING_SERVER_URL: http://<IP Renderer>:<PORT Renderer>/render
            GF_RENDERING_CALLBACK_URL: http://<IP Grafana>:<PORT Grafana>/
            GF_LOG_FILTERS: rendering:debug

          • Link für Grafik ermitteln unter Panel/Share/Direct link rendered image

          • Das Bild erzeuge ich dann via JavaScript und lege es in 0_userdata.0 ab damit es vom iobroker genutzt werden kann:

          const LogLevel = 'warn';
          const fs       = require('fs');
          
          function GetGrafanaBild(pPic, pURL) {
          
              const GrafanaBild = 'iobroker-data/files/0_userdata.0/tmp/' + pPic;
              const GrafanaURL  = 'http://<IP+PORT Garafana>/render/d-solo/' + pURL;
          
              request.get({url: GrafanaURL, encoding: "binary"},function(error,response,body){
                  fs.writeFile(GrafanaBild, body, "binary", function(err){
                      if (err) log('Fehler beim Bild speichern: ' + err, 'warn');
                      var vFileContent = fs.readFileSync(GrafanaBild);
                      writeFile('0_userdata.0', pPic, vFileContent, function (error) {
                          if (err) log('Fehler beim Bild kopieren: ' + err, 'warn');
                          else     log('Grafana Rendering Bild ' + pPic + ' abgeschlossen', LogLevel);
                      });
                  });
              });
          }    
          
          GetGrafanaBild('GrafanaRender_TEST1.png', 'hRtUTVaGk/heizung-temp?orgId=1&from=now-6h&to=now&var-Raum=All&panelId=2&width=300&height=200');
          

          Habe allerdings irgendwo gelesen, dass die Lösung mit dem Container für Rasberry's zu CPU-intensiv ist. Auf der Synology funktioniert es einwandfrei.

          1 Antwort Letzte Antwort
          1
          • R Offline
            R Offline
            RkcCorian
            schrieb am zuletzt editiert von
            #5

            Sehr interessant!!

            Eine Frage hätte ich noch, die nicht komplett das Thema trifft, aber evtl. sind hier die "Richtigen" 🙈... es können unter Telegram Nachrichten auch Buttons angezeigt werden. Diese Buttons können über die Schriftart "Segoe UI Emoji" auch Symbole bekommen. Geht das auch mit png-Dateien? Was ich erreichen will... in meiner VIS habe ich bestimmte Symbole verwendet (png-Dateien) und es wäre schick, wenn ich mir eine Nachricht aufs Handy schicke, dass dann auf dem Button auch das passende Symbol erscheint und nicht ein nicht dazu passendes.
            Viiiiielen Dank im Voraus! Falls ich hier falsch bin bitte Teeren und Federn...

            1 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            700

            Online

            32.4k

            Benutzer

            81.4k

            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