NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@langer sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Was muß ich noch machen oder was habe ich falsch gemacht??
Hi, der Fehler steckt wie so oft im Detail:
(UNKNOWN) [192.168.xxx.xxx] 8087 (?) open
mangels "korrekter" netcat-Version kann er keine stabile Verbindung aufbauen. Deswegen geht es mal, oder halt nicht...
Ev. habe ich dafür aber eine Lösung (die habe ich schon, nur so kann ich ev. von vorn herein eine "falsche" Version ausfiltern).
Gib bitte mal im Terminalls -al /etc/alternatives/nc|grep openbsd
ein, da sollte bei dir jetzt nichts erscheinen.
Gegentest:ls -al /etc/alternatives/nc|grep trad
(da kommt dann so etwas wie lrwxrwxrwx 1 root root 15 Mai 9 2020 /etc/alternatives/nc -> /bin/nc.traditional) ?Lösung deines Problems: im Wiki --> FAQ --> "erhalte keine Daten" (netcat in passender Version nachinstallieren)
-
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
nein kalibriert habe ich nichts.
Da fehlen mir halt die Referenzdaten um den Offset festzulegen.Jupp, das ist dein "Regen-Problem". Habe eben mal bei dir in den geposteten Werten nachgeschaut:
javascript.0.Wetterstation.Druck_absolut=985.91
So tief bin ich fast nie, das wäre lt. Tabelle eben "Regen" (siehst du auch auf dem Bild vom Barometer )
Aktuell sonnig (+auch lt. Anzeige) bei 1003 hPa
Bei meiner Station musste ich nur die Höhe meines Montageortes über NN angeben. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
nein kalibriert habe ich nichts.
Da fehlen mir halt die Referenzdaten um den Offset festzulegen.Jupp, das ist dein "Regen-Problem". Habe eben mal bei dir in den geposteten Werten nachgeschaut:
javascript.0.Wetterstation.Druck_absolut=985.91
So tief bin ich fast nie, das wäre lt. Tabelle eben "Regen" (siehst du auch auf dem Bild vom Barometer )
Aktuell sonnig (+auch lt. Anzeige) bei 1003 hPa
Bei meiner Station musste ich nur die Höhe meines Montageortes über NN angeben.Hi,
naja, die Höhe konnte ich nicht angeben. (Hat halt nur die Koordinaten drin wenn ich das richtig gesehen hab)
Aber den relativen Luftdruck ändern. Ich habe das dann mit dem nächstgelegenen Flughafen und der nächsten wunderground Wetterstation abgeglichen und den relativen Luftdruck auf 1025 hpa eingestellt.Das mit dem absoluten Luftdruck habe ich nicht ganz verstanden (außer das ich dafür nen extra Gerät bräuchte...). Der hat sich auf 988 umgestellt als ich Längen- und Breitengrad nochmal aktualisiert hatte.
Grüße
Protheus -
@protheus
Der absolute Luftdruck ist der Wert, den die Station misst. Der ist natürlich von der Höhe des Messpunkts abhängig (je höher, desto niedriger der Luftdruck).
Deswegen wird der relative Luftdruck auf Meereshöhe Null umgerechnet, um die Werte vergleichen zu können. Mit diesem Wert wird dann gearbeitet. -
@sborg ich habe InfluxDB auf meinem Raspberry installiert und ebenfalls auch den Adapter im ioBroker.
Der Adapter im ioBroker ist grün.
Ich habe InfluxDB bei Aussentemperatur, Wind_max und Regen_Tag aktiviert, die Werte werden auch unter Einstellungen aufgelistet.
Leider wird mir in der Statistik nichts angezeigt. Die Aufzeichnung läuft jetzt 1,5 Tage.
Muss ich noch irgendwas aktivieren?
-
@chrissi1
Das Statistikskript läuft aber noch?Ich hatte es aus Reflex, wie beim Skript für Anlegen der DP, wieder deaktiviert
-
@boronsbruder Ich habe gerade nachgesehen, das Statistikskript war deaktiviert.
Ich habe es jetzt aktiviert.
Jetzt muss ich wahrscheinlich einen Tag warten um zusehen, ob die Werte übertragen werden oder?
-
@chrissi1
Ja, per default werden die Daten von gestern um 01:03 Uhr in die Statistik übernommen. -
-
Es hat geklappt, die Statistik wird mir jetzt angezeigt.
Es lag an dem deaktivierten Wetterstation-Statistik-Skript.
Vielen Dank für eure Hilfe.
-
Hi,
leider tut bei mir das Statistik Skript auch nicht.
Ich habe eine 2. Influx-Instanz (influxdb.1) für die Wetterstation.
Aussentemperatur, Regen_Tag und Wind_Max werden dahin gelogged. (Daten werden auch tatsächlich in die DB geschrieben)
Das Statistik Skript habe ich angepasst
const INFLUXDB_INSTANZ='1'; /* unter welcher Instanz läuft die InfluxDB [default: 0] */
aber den Rest alles beibehalten.
Aber leider sind alle Werte auf default:
("SkriptVersion_Update" und "SkriptVersion_UpdateCheck" sollten doch nicht leer sein oder?)
Hat da jemand eine Idee?
Grüße
Protheus -
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hat da jemand eine Idee?
Script ist gestartet?
-
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hat da jemand eine Idee?
Script ist gestartet?
Selbstverständlich
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Hat da jemand eine Idee?
Script ist gestartet?
Selbstverständlich
-
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Selbstverständlich
seit wann läuft es?
Wenn du es erst heute gestartet hast, siehst du noch nichts.
Per Default werden die Daten von gestern um 01:03 Uhr in die Statistik übernommen. -
@negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Selbstverständlich
seit wann läuft es?
Wenn du es erst heute gestartet hast, siehst du noch nichts.
Per Default werden die Daten von gestern um 01:03 Uhr in die Statistik übernommen.Seit ich die Wetterstation eingerichtet habe (also ca. 2 Wochen)
-
@protheus Ich habe es zwar nie mit einer anderen Instanz als "0" getestet, aber der Aufruf erfolgt genau 2x im Skript:
sendTo('influxdb.'+INFLUXDB_INSTANZ, 'query',...
Da kann eigentlich nicht viel falsch sein. Ich kann mir nur vorstellen, dass er bei "1" etwas missinterpretiert (was ihm bei "0" egal ist).
Ändere mal versuchsweise das User-Setting ab aufconst INFLUXDB_INSTANZ=1; /* unter welcher Instanz läuft die InfluxDB [default: 0] */
also ohne '' bei 1 und berichte dann morgen oder später
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@protheus Ich habe es zwar nie mit einer anderen Instanz als "0" getestet, aber der Aufruf erfolgt genau 2x im Skript:
sendTo('influxdb.'+INFLUXDB_INSTANZ, 'query',...
Da kann eigentlich nicht viel falsch sein. Ich kann mir nur vorstellen, dass er bei "1" etwas missinterpretiert (was ihm bei "0" egal ist).
Ändere mal versuchsweise das User-Setting ab aufconst INFLUXDB_INSTANZ=1; /* unter welcher Instanz läuft die InfluxDB [default: 0] */
also ohne '' bei 1 und berichte dann morgen oder später
Macht ' vs " eigentlich einen Unterschied?
Weil
let REKORDWERTE_AUSGABEFORMAT="[WERT] im [MONAT_KURZ] [JAHR]"
steht in "..."
Alle anderen Werte (auch die DB-ID) stehen in '...'
Habs jetzt mal angepasst und wir schauen mal.
Grund für die 2. DB: Ich logge für Grafana noch mehr DP der Wetterstation und wollte nicht das meine normale InfluxDB so unübersichtlich voll wird.
Grüße
Protheus -
@protheus sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Macht ' vs " eigentlich einen Unterschied?
Ja und nein. Es macht einen Unterschied, der ist aber an der Stelle nicht maßgeblich.
Ein "tolles" JS zur Veranschaulichung:
let a="\""; let b='"'; let c=1 let d="2" let e='3' console.log("Ergebnis: "+a+"|"+b); console.log(typeof(a)); console.log(typeof(b)); console.log(typeof(c)); console.log(typeof(d)); console.log(typeof(e));
Wie man nun ev. sieht wird die entsprechende Variable bei ' und " immer zu einer Zeichenkette (string).
Lediglich #3 deklariert sie wirklich als Zahl (number). Es wäre also egal ob du xyz='1' oder xyz="1" schreibst. xyz wird immer eine Zeichenkette mit Inhalt 1 sein.
Den Unterschied sieht man dann in #1 und #2. Du kannst in einer Zeichenkette die mit " deklariert wurde keine weiteren " innerhalb oder spezielle Zeichen (CR, LF, usw.) nutzen. Die musst du vorher "escapen" (siehe #1). Da ließt sich #2 einfach stellenweise besser...Der "sendTo"-Befehl funktioniert zwar bei "0" wenn es als String vorliegt, vielleicht geht es aber eigentlich nur als Zahl und funktioniert eher zufällig mit "0" als String. Mag ich zwar alles nicht so richtig glauben, aber es gibt sonst keine weitere Unterscheidung der Instanzen.
Wenn du die Uhrzeit noch per Default auf 01:03 Uhr stehen hast, kommt dann um die Zeit eine Fehlermeldung vom Skript? Wenn er die DB so gar nicht lesen kann sollte er eigentlich "Fehler: ...[Fehlertext was ihn stört]" werfen. -
Hm, ich glaube da liegt ein anderes Problem vor:
javascript.0 2021-04-12 13:14:03.580 info (1648) script.js.common.Wetterstation.WS-Statistic: registered 0 subscriptions and 1 schedule javascript.0 2021-04-12 13:14:03.580 info (1648) script.js.common.Wetterstation.WS-Statistic: Wetterstation-Statistiken gestartet... javascript.0 2021-04-12 13:14:03.574 info (1648) Start javascript script.js.common.Wetterstation.WS-Statistic javascript.0 2021-04-12 13:14:01.061 info (1648) Stop script script.js.common.Wetterstation.WS-Statistic javascript.0 2021-04-12 13:14:01.060 error (1648) Cannot write file /opt/iobroker-Scripts/javascript-backup/common/Wetterstation/WS-Statistic.js: Error: EACCES: permission denied, mkdir '/opt/iobroker-Scripts/javascript-backup/common/Wetterst javascript.0 2021-04-12 13:13:54.468 info (1648) Stop script script.js.common.Wetterstation.WS-Statistic
Ich habe die Berechtigung mal angepasst und nun kommt der Fehler nicht mehr.
Das ist noch ein Überbleibsel vom Javascript-Backupjavascript.0 2021-04-12 17:12:33.861 info (1648) script.js.common.Wetterstation.WS-Statistic: registered 0 subscriptions and 1 schedule javascript.0 2021-04-12 17:12:33.855 info (1648) script.js.common.Wetterstation.WS-Statistic: Wetterstation-Statistiken gestartet... javascript.0 2021-04-12 17:12:33.842 info (1648) Start javascript script.js.common.Wetterstation.WS-Statistic
Nach einem Neustart des Scripts passiert aber noch nichts.
Also mal die Nacht abwarten.Grüße
Protheus -
Hi,
leider heute wieder keine Daten im Statistik Skript.
Ich habe den Schedule mal auf minütlich umgestellt, verbose und debug logging aktiviert und den javaskript-Adapter reinstalliert.
Jetzt sehe ich auch Wanmeldungen im Log:javascript.0 2021-04-13 12:11:00.008 warn at processImmediate (internal/timers.js:461:21) javascript.0 2021-04-13 12:11:00.008 warn at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/db-states-redis/lib/states/statesInRedisClient.js:232:37) javascript.0 2021-04-13 12:11:00.008 warn at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:5467:71) javascript.0 2021-04-13 12:11:00.008 warn at Object.cb (script.js.common.Wetterstation.WS-Statistic:190:38) javascript.0 2021-04-13 12:11:00.008 warn at Math.sum (script.js.common.Wetterstation.WS-Statistic:189:53) javascript.0 2021-04-13 12:11:00.008 warn at Array.reduce (<anonymous>:null:null) javascript.0 2021-04-13 12:11:00.008 warn (9301) TypeError: Reduce of empty array with no initial value javascript.0 2021-04-13 12:11:00.007 warn (9301) States system pmessage io.messagebox.system.adapter.javascript.0 {"command":"query","message":{"result":[[],[],[]],"ts":1618308660007,"error":null},"from":"system.adapter.influxdb.1","callback javascript.0 2021-04-13 12:11:00.004 warn (9301) script.js.common.Wetterstation.WS-Statistic: setForeignState(id=0_userdata.0.Statistik.Wetter.Control.Statusmeldung, state={"val":"erfolgreich","ack":true,"c":"script.js.common.Wetterstation.W javascript.0 2021-04-13 12:11:00.004 info (9301) script.js.common.Wetterstation.WS-Statistic: setForeignState(id=0_userdata.0.Statistik.Wetter.Control.Statusmeldung, state={"val":"erfolgreich","ack":true,"c":"script.js.common.Wetterstation.W javascript.0 2021-04-13 12:11:00.004 info (9301) script.js.common.Wetterstation.WS-Statistic: getState(id=0_userdata.0.Statistik.Wetter.Control.ScriptVersion_UpdateCheck, timerId=undefined) => {"val":"","ack":true,"ts":1617267968468,"q":0,"f javascript.0 2021-04-13 12:11:00.004 info (9301) script.js.common.Wetterstation.WS-Statistic: Auswertung durchgeführt... javascript.0 2021-04-13 12:11:00.003 info (9301) script.js.common.Wetterstation.WS-Statistic: getState(id=0_userdata.0.Statistik.Wetter.Control.Reset_Jahresstatistik, timerId=undefined) => {"val":false,"ack":true,"ts":1617267968468,"q":0,"fr javascript.0 2021-04-13 12:11:00.003 info (9301) script.js.common.Wetterstation.WS-Statistic: sendTo(adapter=influxdb.1, cmd=query, msg="select * FROM \"javascript.0.Wetterstation.Aussentemperatur\" WHERE time >= 1618178400000000000 AND time
Er scheint zumindest den richtigen InfluxDB-Adapter zu nehmen (sendTo(adapter=influxdb.1).
Mit dem Rest kann ich aber nichts anfangenViele Grüße
Protheus