Ankündigung

Einklappen
Keine Ankündigung bisher.

Diagramm aus influxDB in CometVisu darstellen

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

  • Chris M.
    antwortet
    In der aktuellen Entwicklungsversion ist mit https://github.com/CometVisu/CometVisu/pull/1086 das Problem gelöst, so dass month und year auch bei der InfluxDB funktionieren.

    Außerdem gibt's nun noch eine kleine Feature Erweiterung, so dass man die Auflösung auch frei wählen kann, obwohl man einen vorgefertigten Zeitraum nutzt.

    Einen Kommentar schreiben:


  • netfriend
    antwortet
    Zitat von Chris M. Beitrag anzeigen
    Ich bin nochmal die InfluxDB Doku durchgegangen und habe gesehen, dass die CV ein Verhalten erwartet, dass es so nicht gibt.
    => month und year ist aktuell kaputt.
    Das erklärt mein Verhalten. Vielen Dank fürs Nachschauen :-)

    Zitat von Chris M. Beitrag anzeigen
    Um "per Hand" eine Monats-Darstellung zu bekommen kannst Du diese Attribute verwenden
    Super, damit funktioniert's.

    Herzlichen Dank!

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Zitat von netfriend Beitrag anzeigen
    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.
    Ich bin nochmal die InfluxDB Doku durchgegangen und habe gesehen, dass die CV ein Verhalten erwartet, dass es so nicht gibt.
    => month und year ist aktuell kaputt.
    Zitat von netfriend Beitrag anzeigen
    fullday -> es wird was angezeigt, aber der Sinn erschließt sich mir nicht. Ist mir aber auch nicht wichtig.
    Die Idee ist, dass bei fullday der angezeigte Zeitraum auf Mitternacht synchronisiert wird.
    Aus offensichtlichen Gründen kann ich das gerade nicht testen
    Zitat von netfriend Beitrag anzeigen
    custom -> wie wird hier der Zeitraum angegeben?
    Das geht über seriesStart, seriesEnd und seriesResolution.

    Um "per Hand" eine Monats-Darstellung zu bekommen kannst Du diese Attribute verwenden:
    Code:
    series="custom" seriesStart="end-30day" seriesEnd="now" seriesResolution="21600"
    So kannst Du statt der Default-Vorgabe einer Auflösung von allen 4 Stunden auch auf eine Darstellung mit stündlichen Werten wechseln:
    Code:
    series="custom" seriesStart="end-30day" seriesEnd="now" seriesResolution="3600"

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • netfriend
    antwortet
    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.


    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    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.

    Einen Kommentar schreiben:


  • netfriend
    antwortet
    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?

    Einen Kommentar schreiben:


  • netfriend
    antwortet
    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...

    Einen Kommentar schreiben:


  • peuter
    antwortet
    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.

    Einen Kommentar schreiben:


  • peuter
    antwortet
    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.

    Einen Kommentar schreiben:


  • netfriend
    antwortet
    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!

    Einen Kommentar schreiben:


  • peuter
    antwortet
    Kannst Du den Inhalt der docker-compose.yml mal hier posten, irgendwas ist da drin falsch?

    Einen Kommentar schreiben:


  • netfriend
    antwortet
    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?

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    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.

    Einen Kommentar schreiben:


  • netfriend
    antwortet
    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?

    Einen Kommentar schreiben:

Lädt...
X