Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus InfluxDB nach EDOMI

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Daten aus InfluxDB nach EDOMI

    Hallo,
    ich betreibe eine InfluxDB mit der ich diverse Solar- und Batteriewerte logge.
    Nun möchte ich einzelne Werte für die Darstellung in Edomi aus der Datenbank abfragen.

    Folgender Befehl hierfür funktioniert in der CLI:
    curl -G 'http://192.168.0.237:8086/query?u=xxx&p=xxx&db=BMV700' --data-urlencode 'q=SELECT last("Kapazitaet") FROM "Batterie"'

    Antwort:
    {"results":[{"statement_id":0,"series":[{"name":"Batterie","columns":["time","last"],"values":[["2018-12-06T06:29:05Z",49.86]]}]}]}

    Wie bekomme ich nun die 49.86 in ein KO?

    Ich hab schon einiges probiert. Z.B. diese Befehlszeile als HTTP-GET anzulegen - jedoch ohne Erfolg. Vermutlich muss der Befehl hierfür etwas umgebaut werden.
    Leider komm ich auch in der Suchfunktion nicht weiter. Es wurde schon einiges (auch LBS) für das schreiben in eine InfluxDB beschrieben - aber noch nicht das Auslesen. Vermutlich ist es für Euch zu einfach. Hab leider wenig Ahnung von Linux, PHP usw.

    Evtl. könnt Ihr mir ja weiterhelfen.
    Vielleicht könnte jemand sogar beschreiben wie ich den Wert 49.86 aus dem String separiere. Dies währe dann meine nächste Herausforderung.

    Danke
    Thomas
    Zuletzt geändert von Terrorwiesel; 08.12.2018, 15:10. Grund: Präfix auf gelöst gesetzt

    #2
    Würde mich auch interessieren!

    Kommentar


      #3
      Wie schreibst du diese denn in die Influx DB, ggf. könnte man da ansetzen und für bestimmte Daten ein EDOMI Remote API Call bemühen.

      Kommentar


        #4
        Ohne es getestet zu haben:

        Das ganze als Shell Befehl anlegen.
        Wenn du das auf der Edomi Maschine so ausführen kannst und eine Antwort bekommst, dann sollte das gehen.
        Du erstellst ein KO für die Antwort und trägst es unter "KO Antwort" ein.

        Das KO gibst du dann auf einen der im Download-Bereich zu findenden JSON LBS. Zum Beispiel der hier.

        Kommentar


          #5
          Das schreiben in die Datenbank wird von einem php Script auf einem Raspi erzeugt.
          Das Projekt nennt sich solaranzeige.de. Aktuell wird z.B. der Victron Batteriemonitor BMV-700 per USB vom Raspi ausgelesen und die Daten dann in eine InfluxDB geschrieben. Diese InfluxDB wird dann mit Grafana ausgewertet.
          Wunderbar ist dann, dass man Teile des Dashboards oder das ganze Dashboard aus Grafana sich auf die EDOMI-Visu einbinden kann.
          Nur möchte ich auch einzelne Datenbankwerte herausziehen um diese auch in EDOMI auswerten zu können (Logik und Visu).

          Hier ist z.B. der Abruf aus Grafana:

          {c
          "xhrStatus": "complete",
          "request": {
          "method": "GET",
          "url": "api/datasources/proxy/1/query",
          "params": {
          "db": "BMV700",
          "q": "SELECT last("Kapazitaet") FROM "Batterie" WHERE time >= 1544050800000ms and time <= 1544137199999ms",
          "epoch": "ms"
          },
          "data": null,
          "precision": "ms"
          },
          "response": {
          "results": [
          {
          "statement_id": 0,
          "series": [
          {
          "name": "Batterie",
          "columns": [
          "time",
          "last"
          ],
          "values": [
          [
          1544081464000,
          49.28
          ]
          ]
          }
          ]
          }
          ]
          }
          }
          Mit Einbindung der Serverdaten, User, Passwort usw. könnte man bestimmt daraus auch einen LBS bauen. Aber das übersteigt leider meine Möglichkeiten bei Weitem.
          Grüße

          Kommentar


            #6
            DerSeppel
            Aber beim anlegen eines Shell in EDOMI wird gar nicht nach einem KO gefragt bzw. die Eintragung ist nicht möglich.

            Kommentar


              #7
              Mit diesem LBS bekommst du die Zahl leicht aus dem String getrennt.
              Bin unterwegs, aber wenn du bei der Konfiguration Hilfe brauchst .Gib bescheid, dann sehr ich mir das später an.


              https://knx-user-forum.de/forum/proj...ieren-ersetzen

              Kommentar


                #8
                givemeone
                Danke, den LBS kannte ich noch nicht.
                Aber hierzu muss ich die Werte ja erst mal nach EDOMI bringen um sie mit diesem LBS zerlegen zu können - oder sehe ich das falsch?

                Kommentar


                  #9
                  Das ist korrekt. Also gibt's vermutlich einen anderen, besseren Weg. Ich würde vermutlich einen remote Aufruf versuchen

                  Kommentar


                    #10
                    Zitat von Terrorwiesel Beitrag anzeigen
                    Aber hierzu muss ich die Werte ja erst mal nach EDOMI bringen um sie mit diesem LBS zerlegen zu können - oder sehe ich das falsch?
                    Ja, falsch, denn wenn du den Webaufruf aus EDOMI heraus machst (Konfiguration HTTP/UDP/SHELL), dann kann das Ergebnis direkt in einem iKO abgelegt werden. Mit diesem iKO triggerst du dann den JSON LBS.

                    Kommentar


                      #11
                      Zitat von jonofe Beitrag anzeigen

                      Ja, falsch, denn wenn du den Webaufruf aus EDOMI heraus machst (Konfiguration HTTP/UDP/SHELL), dann kann das Ergebnis direkt in einem iKO abgelegt werden. Mit diesem iKO triggerst du dann den JSON LBS.
                      Sorry, leider verstehe ich das nicht.
                      Also ich kann bei der Konfiguration HTTP/UDP/SHELL doch nur im Modus HTTP einen KO-Objekt anlegen für die Antwort. Aber vermutlich ist der Befehl
                      curl -G 'http://192.168.0.237:8086/query?u=xxx&p=xxx&db=BMV700' --data-urlencode 'q=SELECT last("Kapazitaet") FROM "Batterie"'
                      keine gerechte Eingabe für HTTP. Zumindest erhalte ich Fehler im Log.

                      Bei den anderen Punkten UDP und SHELL kann ich doch gar kein KO für die Antwort anlegen.
                      Oder muss ich ein Shell-Script schreiben, in der auch die Antwort verarbeitet wird und per Befehl einem KO zugewiesen wird?
                      Leider kann ich das aber nicht - hier müsste ich irgendwo ein Beispiel sehen um das evtl. nachvollziehen zu können.

                      Kommentar


                        #12
                        Warum nennst du uns den Fehler nicht?
                        in der Hilfe zu HTTP/UDP/SHELL finde auch nichts über curl, warum gibst du das also mit an?
                        SG Joe

                        Kommentar


                          #13
                          Den curl Aufruf musst du natürlich in eine URL umschreiben. Müsste ungefähr so aussehen:

                          Code:
                          http://192.168.0.237:8086/query?u=xxx&p=xxx&db=BMV700&q=SELECT%20last%28%22Kapazitaet%22%29%20FROM%20%22Batterie%22

                          Kommentar


                            #14
                            Hier die Fehlermeldung:
                            2018-12-06 06:55:00 479135 ? 14622 Datei: /var/edomi-backups/_public/main/queuecmd/cmd140.php | Fehlercode: 2 | Zeile: 53 | file_get_contents(curl -G 'http://192.168.0.237:8086/query?u=xxx&p=xxx&db=BMV700' --data-urlencode 'q=SELECT last("Kapazitaet") FROM "Batterie"'): failed to open stream: No such file or directory
                            Ich habe den Befehl so erfasst wie er in der CLI auch funktioniert.

                            Ich habe den Befehl im HTTP-Formular auch schon ohne curl -G eingegeben, dann hatte ich diese Fehlermeldung:
                            2018-12-06 18:11:00 250125 ? 16239 Datei: /var/edomi-backups/_public/main/queuecmd/cmd140.php | Fehlercode: 2 | Zeile: 53 | file_get_contents(http://192.168.0.169:8086/query?u=xxx&p=xxx&db=BMV700 --data-urlencode 'q=SELECT last("Kapazitaet") FROM "Batterie"'): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request[CR][LF]
                            Ich vermute der Aufruf gehört irgendwie anders zusammengestellt auch wegen der Leerzeichen. Aber hierzu fehlt mir das Wissen :-(

                            Kommentar


                              #15
                              Zitat von Terrorwiesel Beitrag anzeigen
                              Ich vermute der Aufruf gehört irgendwie anders zusammengestellt auch wegen der Leerzeichen.
                              siehe meinen letzten Post

                              Kommentar

                              Lädt...
                              X