NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sborg Bei mir siehts dann so aus:
pi@Smartazamba:~/Wetterstation $ . ./wetterstation.conf pi@Smartazamba:~/Wetterstation $ . ./wetterstation.sub pi@Smartazamba:~/Wetterstation $ minmax24h DEBUG jq: error (at <stdin>:0): Cannot iterate over null (null) jq: error (at <stdin>:0): Cannot iterate over null (null)
Also funktioniert wohl meine Influxverbindung nicht?
Bucket, Token und Organisation hab ich geprüft. Die stimmen, wobei ich Bucket und Instanz in Klarschrift angegeben habe. Die Influx_API stimmt auch. Habe alles aus meinen InfluxDB Instanzeinstellungen kopiert.
-
@sborg
also bei mir kommt das raus
und das es Probleme mit dem auslesen der Daten gibt kann ich mir ehrlich gesagt nicht vorstellen,
da alle anderen Werte korrekt angezeigt werden. Nur bei diesen Beiden ist was faul.Für mich sieht es so aus als wenn die Daten schon falsch an die Datenbank geliefert werden.
Kann mich natürlich auch täuschen, du bist der ScriptWetterGottAchja, Bucket, Token usw. alles OK.
-
@rushmed Zumindest ist nun eindeutig, dass das so bei dir nicht funktionieren kann.
Was mir aber überhaupt nicht einleuchtet (der eigentliche Fehler schon): an der Stelle wird überhaupt kein "jq" (JSON-Parser) verwendet.Ich habe es eben noch mal getestet, nun ist mein Minwert auf 9.22°C gefallen, funktioniert also...
Wenn du die Shell noch offen hast, frag mal die Influx direkt ab (sonst nochmal die beiden Zeilen vorher mit conf/sh ausführen:
influx_query "-1d" "now()" "Aussentemperatur" "min"
-
@nashra Sagen wir es mal so, der Debug zeigt, dass er nichts auslesen kann. Auch wenn die Daten falsch kämen, müsste er sie zumindest auslesen können
Stimmt denn bspw. in Grafana deine aktuelle Außentemperatur, denn auf diesem einen Messwert fußt alles andere.
Wie sehen denn die RAW-Werte aus und wie loggst du (alles oder nur Änderung) ?Du kannst den Aufruf mit dem "influx_query" übrigens auch testen. Anstelle von "min" auch gerne "max" oder "mean", "-1d" heißt aktuelle Zeit minus 1 Tag. Man kann auch den Zeitraum bspw. durch "-7d" auf eine Woche erweitern.
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@nashra Sagen wir es mal so, der Debug zeigt, dass er nichts auslesen kann. Auch wenn die Daten falsch kämen, müsste er sie zumindest auslesen können
Stimmt denn bspw. in Grafana deine aktuelle Außentemperatur, denn auf diesem einen Messwert fußt alles andere.Ja der Messwert für die Außentemperatur stimmt. Habe einige Stationen in der Nähe, selbe Werte.
Wie sehen denn die RAW-Werte aus und wie loggst du (alles oder nur Änderung) ?
es wird alles geloggt.
Du kannst den Aufruf mit dem "influx_query" übrigens auch testen. Anstelle von "min" auch gerne "max" oder "mean", "-1d" heißt aktuelle Zeit minus 1 Tag. Man kann auch den Zeitraum bspw. durch "-7d" auf eine Woche erweitern.
Habe ich schon probiert, da passiert gar nichts d.h. keine Ausgabe.
-
coole Sache! Danke!
ich hab mal getestet, da ich hier auch n Bug vermutet habe, aber jetzt scheint alles zu stimmen, dies sind die Ausgaben:ilovegym@iobroker:/opt/iobroker$ minmax24h DEBUG Testing InfluxDB... min/max Aussentemperatur 24h: 9.38 9.72°C 14.11 13.72°C ilovegym@iobroker:/opt/iobroker$ influx_query "-7d" "now()" "Aussentemperatur" "min" -2.61 -2.5 ilovegym@iobroker:/opt/iobroker$
-
@nashra sagte in [Linux Shell-Skript] WLAN-Wetterstation:
da passiert gar nichts d.h. keine Ausgabe.
Ich vermute fast, dass das ein ähnliches Problem wie mit dem JSON ist...
Frage mal die Influx direkt per CLI ab (conf + sub müssen dazu noch geladen sein, sonst halt wieder ". ./wetterstation..."), alles eine Zeile:
curl --request POST "${INFLUX_WEB}://${INFLUX_API}/api/v2/query?org=${INFLUX_ORG}" --header 'Content-Type: application/vnd.flux' --header 'Accept: application/csv' --header "Authorization: Token ${INFLUX_TOKEN}" --data 'from(bucket: "'${INFLUX_BUCKET}'") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "'${PRE_DP}'.Aussentemperatur" and r._field == "value") |> min()'
-
jack@ioBroker:~$ curl --request POST "${INFLUX_WEB}://${INFLUX_API}/api/v2/query?org=${INFLUX_ORG}" --header 'Content-Type: application/vnd.flux' --header 'Accept: application/csv' --header "Authorization: Token ${INFLUX_TOKEN}" --data 'from(bucket: "'${INFLUX_BUCKET}'") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "'${PRE_DP}'.Aussentemperatur" and r._field == "value") |> min()' curl: (7) Failed to connect to 192.168.1.121 port 80: Connection refused jack@ioBroker:~$
-
@nashra Erwischt
Port 80? Da läuft doch bestimmt nicht deine Influx drauf...?
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@nashra Erwischt
Port 80? Da läuft doch bestimmt nicht deine Influx drauf...?
Nö, habe mich auch gerade gewundert, im Adapter ist 8086 eingetragen
-
ALso ich bin dafür, dass wir lieber bei der Influx v1 bleiben
-
@boronsbruder War nicht meine Idee
-
@nashra sagte in [Linux Shell-Skript] WLAN-Wetterstation:
im Adapter ist 8086 eingetragen
...und in der wetterstation.conf ?
-
@Nashra
und in der wetterstation.conf?
Edith: da war einer schneller -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@nashra sagte in [Linux Shell-Skript] WLAN-Wetterstation:
im Adapter ist 8086 eingetragen
...und in der wetterstation.conf ?
Verdammt, da steht nix von Port. Habe ich überlesen, Asche über mein Haupt
Jetzt zeigt er es richtig an, verdammt
Hatte die .conf komplett neu gemacht und naja man wird alt.
Trotzdem Danke, an die .conf hätte ich jetzt nie gedacht -
pi@Smartazamba:~/Wetterstation $ influx_query "-1d" "now()" "Aussentemperatur" "min" -bash: influx_query: command not found
Welche beiden Zeilen soll ich mit conf und sh ausführen?
Edit: Hab mein Problem gefunden.
In meine conf hat der Eintrag gefehlt:#Protokoll (HTTP oder HTTPS) / default: HTTP INFLUX_WEB=HTTP
-
@viper4iob @ilovegym @Latzi
zum Thema mit der lahmen Influx-V2 Abfrage siehe hier:
https://forum.iobroker.net/post/958290Es erscheint Licht am Ende des Tunnels
-
@quarkmax sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@nashra
in diesen Fehler bin ich auch gerannt. Schau mal in der wetterstation.conf ober dort dieser Eintrag#Protokoll (HTTP oder HTTPS) / default: HTTP INFLUX_WEB=HTTP
vorhanden ist. Der hat bei mir gefehlt. Warum? - konnte ich nicht verifizieren. Dann kamen die Werte korrekt.
Achtung das muss es zweimal geben, in den Zeilen 37/37, sowie 60/61.
@SBorg die Zeilen 60/61 haben in meiner conf gefehlt.
-
@Nashra Kaum macht man es richtig....
@rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Welche beiden Zeilen soll ich mit conf und sh ausführen?
Ist jetzt zwar eh zu spät, aber ich meinte
. ./wetterstation.conf
und. ./wetterstation.sub
Erstere lädt deine ganzen Einstellungen vom Projekt in die aktive Shell, zweites dann die Befehle.minmax24h
undinflux_query
sind ja keine Linux-Befehle, sondern Funktionen aus dem Skript.
Das gilt aber nur für die aktuelle Shell. Schließt man (bspw. eine Sitzung mittels Putty) die Shell, werden auch die Einstellungen und Funktionen entladen.
@rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@quarkmax sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@nashra
in diesen Fehler bin ich auch gerannt. Schau mal in der wetterstation.conf ober dort dieser Eintrag#Protokoll (HTTP oder HTTPS) / default: HTTP INFLUX_WEB=HTTP
vorhanden ist. Der hat bei mir gefehlt. Warum? - konnte ich nicht verifizieren. Dann kamen die Werte korrekt.
Achtung das muss es zweimal geben, in den Zeilen 37/37, sowie 60/61.
@SBorg die Zeilen 60/61 haben in meiner conf gefehlt.
Nicht ganz. Erstes (~ #37) gibt es schon seit Begin des Ganzen und regelt die (un)verschlüsselte Kommunikation mit dem SimpleAPI-Adapter und heißt WEB=
Zweites (~ #60) kam jetzt mit der InfluxDB V2.x neu dazu und regelt die (un)verschlüsselte Kommunikation zur InfluxDB-API (nicht Adapter vom ioB) und heißt INFLUX_WEB=Der Beta-Updater fügt diese Zeile(n) automatisch hinzu. Da dies aber ein "simples" suchen-ersetzen-einfügen-anhängen ist, muss der Suchterm aber auch genau gefunden werden. Deswegen sollte man keine Änderungen in der *.conf vornehmen (Werte eintragen/ändern mal ausgenommen ), da sonst uU. ein Update fehlschlägt.
Im vorliegenden Fall wird durchsed -i '/^.*#InfluxDB-Konfiguration \/ ohne InfluxDB alles leer lassen.*/a \ #Protokoll (HTTP oder HTTPS) / default: HTTP\n INFLUX_WEB=HTTP' ./wetterstation.conf
nach "#InfluxDB-Konfiguration / ohne InfluxDB alles leer lassen" gesucht und dann
#Protokoll (HTTP oder HTTPS) / default: HTTP INFLUX_WEB=HTTP
angehängt. Hat man nun in der "vermeintlichen" Kommentarzeile etwas geändert, findet er sie nicht und fügt dementsprechend auch nichts hinzu.
Ich habe zwar schon das Suchmuster weitläufiger ausgelegt, aber ein fehlendes Leerzeichen zwischen den Wörtern oder ein "Influx" anstelle von "InfluxDB" etc. kann ich so nicht berücksichtigen/ausschließen.Man sollte also möglichst an der Originaldatei nichts ändern und nur seine Werte eintragen, denn nur mit der ursprünglichen Originalsyntax kann ich es auch testen. Anders geht es an dieser Stelle leider nicht.
...mal als Hinweis an Alle warum das ein oder andere so ist wie es ist
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@Nashra Kaum macht man es richtig....
Du sagst es. Hatte die alte .conf auf dem zweiten Monitor
und beim eintippen in die Neue glatt den Port vergessen/überlesenAber mal zu Grafana. Habe meine alte View in die neue Grafana übernommen,
nur leider funktionieren nicht alle DP. Bei einigen wird mir dies angezeigt
Ok, wird nicht unterstützt aber wie bekomme ich es trotzdem angezeigt. DP ändern?