Ankündigung

Einklappen
Keine Ankündigung bisher.

Diagramm aus influxDB in CometVisu darstellen

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

    Diagramm aus influxDB in CometVisu darstellen

    Hallo,
    ich habe die Suche bemüht, die wenigen Beiträge gelesen und auf der CometVisu-Projektseite die Infos zum Diagramm-plug-in gelesen, aber so wirklich werde ich nicht schlau daraus.

    Ich habe einen Raspi 4, darauf läuft der CometVisu-Docker-Container V 0.11, eine influxDB und der ioBroker, der die influx DB mit Daten befüllt.

    Bisher hatte ich mehrere Diagramme in der CometVisu aus rrd-Dateien dargestellt.

    Ich würde gerne die Datenquelle von rrd auf influxDB umstellen. Wenn ich das richtig verstanden habe, sollte das gehen.
    Allerdings stellen sich mir ein paar Fragen:

    1) Muss ich in der CometVisu noch ein zusätzliches Plug-in installieren oder bringt diese Version das schon mit?

    2) Genügt es im Diagram-Tag den rrd-Eintrag gegen den influx-Eintrag (wie auf der CometVisu-Projektseite beschrieben) zu ersetzen?

    <influx field="Val" fillMissing="linear" style="lines" fill="true" measurement="timeseries_db/KNX_LINE1" authentication="influx">

    3) Woher weiß die CometVisu, wo die influx DB-Datei(en) zu finden ist/sind?

    4) Bei iobroker erfolgt das Befüllen der influx DB relativ einfach, daher tue ich mich im Moment schwer, den Parameter "field" und "measurement" anzugeben. Wo finde ich das?
    Das ist zwar keine typische CometVisu-Frage, aber vielleicht kann ja trotzdem jemand helfen?

    5) Noch eine weitere CometVisu-untypische Frage: erzeugt die influxDB für jeden zu speichernden Datenpunkt einen neuen Eintrag in einer DB oder für jeden Datenpunkt eine neue DB-Datei (ähnlich der rrd-Dateien)?

    Vielleicht könnt ihr ja etwas Licht ins Dunkle bringen. Vielen Dank!


    #2
    Zitat von netfriend Beitrag anzeigen
    1) Muss ich in der CometVisu noch ein zusätzliches Plug-in installieren oder bringt diese Version das schon mit?
    In der aktuellen Version 0.11.2 ist die Influx Unterstützung enthalten. Die kommt als ein Teil des bekannten Diagram-Plugins. D.h. Du musst hier nichts mehr extra unternehmen.
    Zitat von netfriend Beitrag anzeigen
    2) Genügt es im Diagram-Tag den rrd-Eintrag gegen den influx-Eintrag (wie auf der CometVisu-Projektseite beschrieben) zu ersetzen?

    <influx field="Val" fillMissing="linear" style="lines" fill="true" measurement="timeseries_db/KNX_LINE1" authentication="influx">
    Genau. Die einzelnen Werte in den Attributen müssen natürlich zu Deiner Installation passen.
    Zitat von netfriend Beitrag anzeigen
    3) Woher weiß die CometVisu, wo die influx DB-Datei(en) zu finden ist/sind?
    Über das authentication Attribut (vgl. https://www.cometvisu.org/CometVisu/...ation-attribut ), dass auf den entsprechenden uri-Eintrag in der Hidden-Config verweist.
    Zitat von netfriend Beitrag anzeigen
    4) Bei iobroker erfolgt das Befüllen der influx DB relativ einfach, daher tue ich mich im Moment schwer, den Parameter "field" und "measurement" anzugeben. Wo finde ich das?
    Das ist zwar keine typische CometVisu-Frage, aber vielleicht kann ja trotzdem jemand helfen?
    Das hängt davon ab wie die Daten in die InfluxDB geschrieben werden.
    measurement ist quasi der Pfad zu den Daten.
    field wird nur benötigt, wenn mehrere Daten gleichzeitig in ein Measurement geschrieben werden. Wenn es nur einen Wert gibt, dann kannst Du das leer lassen.
    Zitat von netfriend Beitrag anzeigen
    5) Noch eine weitere CometVisu-untypische Frage: erzeugt die influxDB für jeden zu speichernden Datenpunkt einen neuen Eintrag in einer DB oder für jeden Datenpunkt eine neue DB-Datei (ähnlich der rrd-Dateien)?
    Keine Ahnung. Ich vermute aber stark, dass das eine einzelne Datenbank ist und nicht viele Dateien wie bei RRD.
    Ist aber für den Anwender der Software komplett egal wie das diese Tools intern machen.

    Spannender finde ich da den Unterschied dass RRD die Daten zunehmend verdichtet und damit quasi nur einen konstanten Platzbedarf hat und Influx die schön treu doof alle auch auf Jahre hinaus ablegt und damit immer größer und fetter wird, so man nicht intelligent selber gegensteuert.
    TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

    Kommentar


      #3
      Zitat von Chris M. Beitrag anzeigen
      In der aktuellen Version 0.11.2 ist die Influx Unterstützung enthalten. Die kommt als ein Teil des bekannten Diagram-Plugins. D.h. Du musst hier nichts mehr extra unternehmen.

      Genau. Die einzelnen Werte in den Attributen müssen natürlich zu Deiner Installation passen.
      Prima, das klingt schon mal gut.

      Zitat von Chris M. Beitrag anzeigen
      Über das authentication Attribut (vgl. https://www.cometvisu.org/CometVisu/...ation-attribut ), dass auf den entsprechenden uri-Eintrag in der Hidden-Config verweist.
      Ich hatte das so verstanden, dass in der Hidden-Config die Zugangsdaten (User, PW) zur DB stehen und über "authentication" der Bezug dazu hergestellt wird. Dort steht doch nicht, wo die DB zu finden ist, oder?

      Zitat von Chris M. Beitrag anzeigen
      Das hängt davon ab wie die Daten in die InfluxDB geschrieben werden.
      measurement ist quasi der Pfad zu den Daten.
      field wird nur benötigt, wenn mehrere Daten gleichzeitig in ein Measurement geschrieben werden. Wenn es nur einen Wert gibt, dann kannst Du das leer lassen.

      Keine Ahnung. Ich vermute aber stark, dass das eine einzelne Datenbank ist und nicht viele Dateien wie bei RRD.
      Ist aber für den Anwender der Software komplett egal wie das diese Tools intern machen.

      Spannender finde ich da den Unterschied dass RRD die Daten zunehmend verdichtet und damit quasi nur einen konstanten Platzbedarf hat und Influx die schön treu doof alle auch auf Jahre hinaus ablegt und damit immer größer und fetter wird, so man nicht intelligent selber gegensteuert.
      Hintergrund ist eigentlich der, dass ich wie hier (https://knx-user-forum.de/forum/supp...alliert-werden) beschrieben, immer noch Probleme habe, eine saubere Installation hinzubekommen. Der Docker-Container läuft, ich konnte wie gewünscht die bestehenden rrd's und mein Design-file von außen dem Docker-Container mitgeben. Soweit so gut. Allerdings werden aktuell die rrd's nicht befüllt. Dazu hatte ich bisher linknx. Das bekomme ich zwar zum Laufen, aber es hat keinen Zugriff auf knx, weil der Export/der Zugriff auf den Docker-Container, in dem der knx läuft, irgendwie nicht oder nicht zuverlässig funktioniert. Außerhalb des Docker-Containers nochmal knxd installieren finde ich blöd. Außerdem müsste man die Startreihenfolge irgendwie festlegen/sicherstellen. Eigentlich müsste zuerst der Docker-Container hochfahren, dann darf erst linknx starten, weil hier geprüft wird, ob knxd läuft. Leider kenne ich mich hier zu wenig aus, um das zu tun.
      Nachdem ich noch ein paar Nicht-KNX-Sensoren und Informationen verarbeiten wollte, hatte ich mal mit ioBroker begonnen. Hier bin ich eben über influxDB gestolpert und finde die Möglichkeiten ganz gut, die man damit hat.
      Wenn ich das richtig gesehen habe, kann man hier auch eine gewünschte Speicherzeit der Daten angeben. Damit dürfte auch hier die DB-Größe begrenzt sein.
      Wenn ich nun die Daten hiermit schon speichere, würde sich ja anbieten, diese auch in der CometVisu zu visualisieren. Die Aufnahme der knx-Daten in die influxDB ist mit wenigen Mausklicks erledigt und man kann sich die Kombination linknx-rrd sparen.
      Das wollte ich hiermit testen.
      Wenn Du noch Ideen dazu hast, nur her damit. Danke für Deine Hilfe.

      Kommentar


        #4
        Ich habe nun noch etwas weiter probiert.
        Zuerst habe ich mir mal etwas Überblick über die influxDB verschafft.
        Es ist tatsächlich so, dass in einer Datenbank (bei mir: iobroker) alle Messwerte landen. Jeder Messwert hat mehrere Spalten, visualisiert möchte ich die Spalte "value" haben.

        influxDB iobroker-DB-View.JPG


        Deshalb habe ich im Diagram-Tag folgendes influx-Tag hinzugefügt:

        <influx field="value" consolidationFunction="MEAN" measurement="iobroker/Gardena_Bodenfeuchte" style="lines" fill="true" steps="false" fillMissing="linear" color="red"/>
        Meiner Meinung nach müsste das passen.
        Eine Authentifizierung brauche ich nicht, da in der /etc/influxdb/influxdb.conf folgendes steht:

        [http]
        # Determines whether HTTP endpoint is enabled.
        enabled = true

        # The bind address used by the HTTP service.
        bind-address = ":8086"

        # Determines whether user authentication is enabled over HTTP/HTTPS.
        auth-enabled = false


        Wenn ich nun die cometvisu-Seite aufrufe sehe ich als Rückgabe der influxfetch.php folgendes:

        file_get_contents(http://localhost:8086/query?q=SELECT...&db=iobroker): failed to open stream: Cannot assign requested address

        Was soll mir das sagen?
        Kann es sein, dass der Aufruf aus dem Container die influxdb nicht erreicht?

        Nach den Einstellungen oben geschieht das über den Port 8086. Ich dachte mir, vielleicht muss ich den in der docker-compose.yaml angeben. Wenn ich das tue, erhalte ich eine Fehlermeldung beim Starten des Containers, weil der Port wohl schon in Verwendung ist.

        Hat jemand noch einen Tipp für mich?

        Kommentar


          #5
          Zitat von netfriend Beitrag anzeigen
          Ich hatte das so verstanden, dass in der Hidden-Config die Zugangsdaten (User, PW) zur DB stehen und über "authentication" der Bezug dazu hergestellt wird. Dort steht doch nicht, wo die DB zu finden ist, oder?
          Doch, im Schlüsselwert uri.
          Zitat von netfriend Beitrag anzeigen
          Hintergrund ist eigentlich der, dass ich wie hier (https://knx-user-forum.de/forum/supp...alliert-werden) beschrieben, immer noch Probleme habe, eine saubere Installation hinzubekommen.
          Ganz frisch gibt's inzwischen im Handbuch ein Tutorial für die CometVisu-Installation per Docker auf dem Raspberry Pi: https://www.cometvisu.org/CometVisu/...ial/index.html
          Das ist natürlich jetzt erst mal in dem Entwicklungs-Versions-Handbuch, der Inhalt geht aber auf das letzte Release, also 0.11.2

          Influx habe ich da noch nicht extra mit aufgeführt, aber dafür Node-RED. Und wenn man weiß wie man einen Container zum laufen bekommt, ist's mit einem anderen auch nicht wirklich anders.
          Zitat von netfriend Beitrag anzeigen
          Es ist tatsächlich so, dass in einer Datenbank (bei mir: iobroker) alle Messwerte landen. Jeder Messwert hat mehrere Spalten, visualisiert möchte ich die Spalte "value" haben.
          [...]
          Deshalb habe ich im Diagram-Tag folgendes influx-Tag hinzugefügt:
          [...]
          Meiner Meinung nach müsste das passen.
          Ja, sieht vernünftig aus.
          Zitat von netfriend Beitrag anzeigen
          Wenn ich nun die cometvisu-Seite aufrufe sehe ich als Rückgabe der influxfetch.php folgendes:

          file_get_contents(http://localhost:8086/query?q=SELECT...&db=iobroker): failed to open stream: Cannot assign requested address

          Was soll mir das sagen?
          Kann es sein, dass der Aufruf aus dem Container die influxdb nicht erreicht?

          Nach den Einstellungen oben geschieht das über den Port 8086. Ich dachte mir, vielleicht muss ich den in der docker-compose.yaml angeben. Wenn ich das tue, erhalte ich eine Fehlermeldung beim Starten des Containers, weil der Port wohl schon in Verwendung ist.

          Hat jemand noch einen Tipp für mich?
          Jeder Docker-Container ist ja ein (virtueller) Rechner. D.h. wenn der CometVisu-Container auf http://localhost:8086/query zugreifen möchte, so erwartet er, dass er das selbst bereit stellt - was ja nicht der Fall ist. Das es die selbe physikalische Hardware ist zählt ja nicht.
          D.h. Du muss hier auf den Container verweisen, der die InfluxDB bereit stellt - und dafür sorgen, dass der auch den Port 8086 exportiert.

          Wie man das am geschicktesten Konfiguriert habe ich mir noch nicht überlegt. Ist aber eigentlich nur ein normales Setup-Thema für Docker, da hat man oft die Fragestellung, dass ein Container auf den Port von einem anderen zugreifen muss.
          TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

          Kommentar


            #6
            Zitat von Chris M. Beitrag anzeigen
            Doch, im Schlüsselwert uri.

            Jeder Docker-Container ist ja ein (virtueller) Rechner. D.h. wenn der CometVisu-Container auf http://localhost:8086/query zugreifen möchte, so erwartet er, dass er das selbst bereit stellt - was ja nicht der Fall ist. Das es die selbe physikalische Hardware ist zählt ja nicht.
            D.h. Du muss hier auf den Container verweisen, der die InfluxDB bereit stellt - und dafür sorgen, dass der auch den Port 8086 exportiert.

            Wie man das am geschicktesten Konfiguriert habe ich mir noch nicht überlegt. Ist aber eigentlich nur ein normales Setup-Thema für Docker, da hat man oft die Fragestellung, dass ein Container auf den Port von einem anderen zugreifen muss.
            Danke, das hatte ich gestern abend noch gesehen und probiert. Sieht man ja daran, was in der influxfetch.php steht.
            Das heißt, ich bin auf der richtigen Spur, aber offenbar gelingt es dem Docker-Container nicht, darauf zuzugreifen.
            Ich habe versucht in der Docker-compose.yaml neben dem Port 80 auch noch den 8086 anzugegeben. Nur erhalte ich beim Neustart des Containers eine Fehlermeldung

            root@Raspi4:~# docker-compose up -d
            Creating network "root_default" with the default driver
            Creating root_cometvisu_1 ...
            Creating root_cometvisu_1 ... error

            ERROR: for root_cometvisu_1 Cannot start service cometvisu: driver failed programming external connectivity on endpoint root_cometvisu_1 (5b5887074c3c81b876000980407f8a6e5941cae1c29389fe5 e1d654f2fb0cd70): Error starting userland proxy: listen tcp4 0.0.0.0:8086: bind: address already in use

            ERROR: for cometvisu Cannot start service cometvisu: driver failed programming external connectivity on endpoint root_cometvisu_1 (5b5887074c3c81b876000980407f8a6e5941cae1c29389fe5 e1d654f2fb0cd70): Error starting userland proxy: listen tcp4 0.0.0.0:8086: bind: address already in use
            ERROR: Encountered errors while bringing up the project.
            Klingt für mich so, als wenn der Port schon in Benutzung ist.

            Die influxDB habe ich nicht im Container installiert. Die läuft direkt auf dem Raspi.
            Ich bin etwas ratlos, wie der Zugriff nun erfolgen kann???
            uri = http://localhost:8086/query passt doch, oder?

            Kommentar


              #7
              Kannst Du den Inhalt der docker-compose.yml mal hier posten, irgendwas ist da drin falsch?
              Gruß
              Tobias

              Kommentar


                #8
                Ja klar, gerne

                version: '3.4'
                services:
                cometvisu:
                image: "cometvisu/cometvisu:latest-arm"
                restart: always
                ports:
                - 80:80
                #- 8086:8086
                volumes:
                - ./resource/config:/var/www/html/resource/config
                - ./resource/rrd:/var/www/rrd
                environment:
                KNX_INTERFACE: "iptn:192.168.170.222:3671"
                KNX_PA: "1.1.252"
                Der Port 8086 war der Versuch, den Zugriff auf die influxDB zu bekommen.
                Wenn die Zeile wieder einkommentiert wird, gibt's oben genannte Fehlermeldung.

                Ach ja, es hat sich dahingehend bestätigt, dass das Problem wirklich das Nicht-Erreichen der influxDB ist.
                Ich habe auf einem alten Spiel-Raspi noch ne CometVisu ohne Container laufen.
                Wenn ich das Diagram-Tag in diese config einfüge und statt localhost die IP dieses Raspis angebe, wird das Diagramm aus der influxDB angezeigt!

                Kommentar


                  #9
                  Auf dem selben Weg sollte es auch im Container gehen, aus Netzwerksicht ist der CometVisu-Container ein eigener PC, localhost ist da drin also der Container und nicht der Rechner auf dem der Container gestartet wurde d.h. wenn Du die IP des Raspis statt localhost nimmst sollte es auch da gehen.
                  Gruß
                  Tobias

                  Kommentar


                    #10
                    Den Port 8086 musst Du im Container auch nicht angeben, da muss man nur Ports angeben unter denen der Container einen Dienst bereitstellt nicht welche auf die der Container zugreifen möchte.
                    Gruß
                    Tobias

                    Kommentar


                      #11
                      Zitat von peuter Beitrag anzeigen
                      Auf dem selben Weg sollte es auch im Container gehen, aus Netzwerksicht ist der CometVisu-Container ein eigener PC, localhost ist da drin also der Container und nicht der Rechner auf dem der Container gestartet wurde d.h. wenn Du die IP des Raspis statt localhost nimmst sollte es auch da gehen.
                      Zitat von peuter Beitrag anzeigen
                      Den Port 8086 musst Du im Container auch nicht angeben, da muss man nur Ports angeben unter denen der Container einen Dienst bereitstellt nicht welche auf die der Container zugreifen möchte.
                      Herzlichen Dank, peuter. So funktioniert es! Und ich habe wieder etwas gelernt.
                      Es war mein Denkfehler. Ich dachte, der Container greift über den angegebenen Port auf den Raspi zu, daher localhost:8086 und Portfreigabe in der Docker-compose.yaml. Aber das vergesse ich schnell wieder...

                      Kommentar


                        #12
                        Inzwischen habe ich einige Diagramme umgestellt von rrd auf influx. Prinzipiell funktioniert das auch. Allerdings ist mir aufgefallen, dass z.B. Diagramme mit dem Tag "series"="week" problemlos angezeigt werden. Stellt man das auf "day" oder "hour" um, bleibt das Diagramm leer.
                        Daten müssen ja vorhanden sein, sonst würde die "week"-Darstellung auch nicht funktionieren.

                        Hat jemand ne Idee? Hab ich was übersehen?

                        Kommentar


                          #13
                          Wann ist denn der letzte Wert in der Datenbank für diese Werte gelandet?

                          Wenn der älter ist als der dargestellte Bereich dann bleibt das Diagram leer, da es ja nichts zum Anzeigen gibt.
                          TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

                          Kommentar


                            #14
                            Hallo,

                            ich bin einige Woche nicht dazu gekommen, hier weiter zu probieren. Dafür hab ich nun Werte seit 11.08. in der influx-DB. Aktuell teste ich mit der Außentemperatur, die wird alle paar Minuten gespeichert. Sollte also kein Problem sein, da immer Daten vorhanden sind.

                            Lt. CometVisu-Doku sind für das Diagram-Plugin folgende Zeitspannen möglich:
                            hour -> funktioniert
                            week -> funktioniert
                            month -> es wird nichts angezeigt! WARUM?
                            year -> es wird nichts angezeigt - versteh ich aber, da erst Daten seit 11.8. vorhanden sind.
                            fullday -> es wird was angezeigt, aber der Sinn erschließt sich mir nicht. Ist mir aber auch nicht wichtig.
                            custom -> wie wird hier der Zeitraum angegeben?

                            Habe ich hier einen Fehler gemacht?

                            <group nowidget="true">
                            <layout colspan="12" colspan-s="12"/>
                            <diagram width="930" height="400" series="month" period="1" refresh="300" tooltip="true" gridcolor="grey" popup="true" previewlabels="true" legendposition="nw" timeformat="%d.%m.">
                            <layout colspan="12" colspan-s="12"/>
                            <label>Außen-Temperatur (Test)</label>
                            <axis position="left" label="Temperatur" min="-20" max="40" unit="°C" decimals="1">temp</axis>
                            <influx authentication="influx" yaxis="temp" field="value" fillMissing="previous" consolidationFunction="MEAN" measurement="iobroker/Temperatur_Aussen_Nordseite" color="blue" label="Außen-Temperatur (Nordseite)"/>
                            </diagram>
                            </group>

                            Kann mir jemand weiterhelfen? Hat schon mal jemand influx-Daten monatlich visualisiert?

                            Danke.


                            Kommentar


                              #15
                              Hat hier keiner eine Idee oder auch schon so ein Verhalten gehabt und eine Lösung dafür gefunden?

                              Kommentar

                              Lädt...
                              X