Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Achim Weis

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 8
    • Best 1
    • Groups 1

    Achim Weis

    @Achim Weis

    Starter

    1
    Reputation
    52
    Profile views
    8
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Achim Weis Follow
    Starter

    Best posts made by Achim Weis

    • Grafana Diagramm per Telegram versenden

      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/

      posted in Praktische Anwendungen (Showcase)
      Achim Weis
      Achim Weis

    Latest posts made by Achim Weis

    • RE: Statistik in Grafana: Durchschnittswerte je Zeitbereich

      @dan_ce

      ich habe mir (zB für den Stromzähler) einfach neue Datenpunkte angelegt:
      kWh_yesterday
      kWh_last_month
      kWH_last_year
      zaehlerstand_gestern
      zaehlerstand_last_month
      zaehlerstand_last_year

      Immer um 00:00:01 Uhr wird :
      Aktueller zählerstand - zaehlerstand_gestern in kWh_yesterday geschrieben.

      bei Monatswechsel:
      Aktueller zählerstand - zaehlerstand_last_month in kWh_last_month
      usw.
      Am Ende wird "zaehlerstand_gestern" auf den aktuellen Stand gesetzt.

      Sehr primitiv, funktioniert aber wunderbar und man hat gleich noch den jahresverlauf mit 365 Werten geloggt, bzw kann jedes beliebige Datum zurückrechnen.
      Das kannst du auch problemlos auf Stundenscheiben runterbrechen.

      Solche Werte speichere ich lieber in mySQL statt InfluxDB. Die paar tausend Messwerte verkraftet mySQL locker und man kann mit SQL boardmitteln viel einfach Extremwerte (Messfehler) selektieren und löschen. In Influx ist das immer sehr stressig bestimmte values zu selektieren.
      Zudem hast du in MYSQL direkt mit avg() Durchschnittswerte berechnen lassen und mit der DATE_FORMAT(date,'%y-%m-%d') function könnte es möglich sein alle Zeitstempel einer gewissen Uhrzeit auszulesen.

      Influx nehme ich zB um Messwerte die jede Sekunde aufschlagen zu loggen. (Wechselrichter usw)

      posted in Praktische Anwendungen (Showcase)
      Achim Weis
      Achim Weis
    • RE: Grafana Diagramm per Telegram versenden

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

      posted in Praktische Anwendungen (Showcase)
      Achim Weis
      Achim Weis
    • Grafana Diagramm per Telegram versenden

      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/

      posted in Praktische Anwendungen (Showcase)
      Achim Weis
      Achim Weis
    • RE: Java Script scripte nach Neustart NICHT ausführen

      Die einfachste Lösung wird wohl sein, die uptime vom rpi2 Adapter abzufragen.
      Dann wäre nur noch der Neustart des Adapters ein Problem, aber der scheint stabil zu laufen.

      if (getState("rpi2.0.uptime.uptime").val > 240){
         // mach was
      }
      
      posted in JavaScript
      Achim Weis
      Achim Weis
    • Java Script scripte nach Neustart NICHT ausführen

      Hallo

      nach einer langen Nacht funktioniert Telegram jetzt mit allen Lampen, Temperatursensoren und Rollos.
      Telegram adapter mit text2command.
      Alles schön per custom keyboards implementiert.

      Jetzt habe ich aber das Problem, dass IOBroker beim morgentlichen Neustart einmal alle JS abfeuert und somit auch alle Lampen angehen.

      Ich habe die Skript so aufgebaut:
      Wenn man auf "Wohnzimmer" klickt:
      WENN Wohnzimmer AUS, mache Lampe AN, SONST mache Lampe AUS.

      Wenn das Skript jetzt morgens durchgestartet wird, sind natürlich alle Lampen aus und somit werden alle AN geschaltet...(und somit sinkt der WAF auf 0 ) .

      Hat jemand ne Idee wie ich die Initiale Ausführung unterbinden kann, bzw diese im Skript erkennen kann und vom regulären Aufruf trennen?

       sendTo('telegram.0', {
              text:   'Bitte wähle eine Aktion',
              reply_markup: {
                  keyboard: [
                      ['Zeige EG alle Lichter'], 
                      ['Wohnzimmer', get_light_group_icon("Wohnzimmer")],
                      ['Esszimmer', get_light_group_icon("Esszimmer")],
                      ['Flur', get_light_group_icon("Flur")],
                      ['Zentrallicht', get_light_group_icon("Zentrallicht")],
                      ['Küche', get_light_group_icon("Küche")],
      ...
      

      IMG_0540.jpg

      892A9EBD-EF5D-462B-9657-3E89E3B29804_4_5005_c.jpeg

      var device_state = getState("hm-rpc.0.PEQ0595892.1.LEVEL").val;
      if (device_state == 0) { // wenn AUS dann AN
        setState("hm-rpc.0.PEQ0595892.1.LEVEL"/*HM-LC-Dim1T-DR PEQ0595892:1.LEVEL*/, 100);
      } else {  // wenn AN dann AUS
        setState("hm-rpc.0.PEQ0595892.1.LEVEL"/*HM-LC-Dim1T-DR PEQ0595892:1.LEVEL*/, 0);
      }
      
      

      Grüße

      posted in JavaScript
      Achim Weis
      Achim Weis
    • RE: Fehler bei der Installation des Zigbee Adapters

      da läuft es dem geübten admin vermutlich kalt den Rücken runter...

      auf der Console:
      sudo su
      dann "npm install iobroker.zigbee"

      ein einfaches sudo npm install hat nicht gereicht.

      dann "iobroker upload all"
      iobroker restart

      danach konnte die Instanz hinzugefügt werden.

      Sorry, ich habe so viel "rumprobiert" - kann leider kein komplettes try&error protokoll abgeben.

      Danke für die schnellen Antworten!

      posted in Error/Bug
      Achim Weis
      Achim Weis
    • RE: Fehler bei der Installation des Zigbee Adapters

      debug.rar

      anbei das komplette log file. leider zu groß um als text zu posten

      posted in Error/Bug
      Achim Weis
      Achim Weis
    • RE: Fehler bei der Installation des Zigbee Adapters

      gleiches Problem
      habe 1.0.2 und 1.0.3 von der Oberfläche aus installiert. (bzw probiert)
      Node: 10.19.0

      host.IObroker	2020-02-14 13:21:51.846	error	iobroker events.js:174 throw er; // Unhandled 'error' event ^Error: ENOENT: no such file or directory, open '/opt/iobroker/node_modules/iobroker.zigbee/admin/img/osram_a60_rgbw.png'Emitted
      host.IObroker	2020-02-14 13:21:49.136	info	iobroker upload [150] zigbee.admin /opt/iobroker/node_modules/iobroker.zigbee/admin/img/trust_zpir_8000.png img/trust_zpir_8000.png image/png
      host.IObroker	2020-02-14 13:21:47.853	error	iobroker Some packets could not be installed. Please install them manually
      host.IObroker	2020-02-14 13:21:47.769	info	iobroker ../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_AfterGet(uv_work_t*)’:../src/macros.h:112:60: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::L
      host.IObroker	2020-02-14 13:21:47.755	info	iobroker In file included from ../src/statement.cc:6:../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginGet(node_sqlite3::Statement::Baton*)’:../src/macros
      host.IObroker	2020-02-14 13:21:47.751	info	iobroker ../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_AfterBind(uv_work_t*)’:../src/macros.h:112:60: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::
      host.IObroker	2020-02-14 13:21:47.748	info	iobroker In file included from ../src/statement.cc:6:../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginBind(node_sqlite3::Statement::Baton*)’:../src/macro
      host.IObroker	2020-02-14 13:21:47.735	info	iobroker In file included from ../src/statement.cc:6:../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_AfterPrepare(uv_work_t*)’:../src/macros.h:112:60: warnin
      host.IObroker	2020-02-14 13:21:47.727	info	iobroker ../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Work_BeginPrepare(node_sqlite3::Database::Baton*)’:../src/statement.cc:119:58: warning: cast between inco
      host.IObroker	2020-02-14 13:21:47.721	info	iobroker ../src/statement.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE node_sqlite3::Statement::New(Nan::NAN_METHOD_ARGS_TYPE)’:../src/statement.cc:103:10: warning: ‘Nan::Maybe<b
      host.IObroker	2020-02-14 13:21:47.719	info	iobroker In file included from ../src/statement.cc:6:../src/macros.h:112:60: warning: ‘v8::Local<v8::Value> Nan::MakeCallback(v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>
      host.IObroker	2020-02-14 13:21:47.717	info	iobroker In file included from ../src/statement.cc:6:../src/statement.cc: In static member function ‘static void node_sqlite3::Statement::Error(T*)’:../src/macros.h:112:60: warning: ‘v8::Local<v8::Va
      host.IObroker	2020-02-14 13:21:47.609	info	iobroker In file included from ../src/database.h:10, from ../src/statement.cc:7:../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:../../nan/nan.h:2298:62: w
      host.IObroker	2020-02-14 13:21:45.306	info	iobroker /home/iobroker/.cache/node-gyp/10.19.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with
      host.IObroker	2020-02-14 13:21:45.282	info	iobroker In file included from /home/iobroker/.cache/node-gyp/10.19.0/include/node/node.h:63, from ../../nan/nan.h:54, from ../src/database.h:10, from
      host.IObroker	2020-02-14 13:21:45.220	info	iobroker In file included from ../../nan/nan.h:54, from ../src/database.h:10, from ../src/node_sqlite3.cc:8:../src/node_sqlite3.cc: At global scope:/home/iobroker/.cac
      
      ```[debug.txt](/assets/uploads/files/1581684900624-debug.txt)
      posted in Error/Bug
      Achim Weis
      Achim Weis
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo