NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Du solltest einfach mal versuchen ob es nach einem Restart ev. wieder funktioniert: systemctl restart wetterstation
Habe ich gemacht, änderts sich aber nichts. Unter javascript.0.Wetterstation.Info.Temp_Aussen_Heute_min und max kommen immer dieselben werte rein, und bei javascript.0.Wetterstation.Info.Temp_Aussen_24h_min und max keine Werte. Habe das Display von der Wetterstation auch einmal neugestartet.....
chris@ioBroker:~$ systemctl status wetterstation ● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-05-16 19:12:51 CEST; 21min ago Main PID: 967052 (wetterstation.s) Tasks: 5 (limit: 21048) Memory: 2.7M CPU: 38.877s CGroup: /system.slice/wetterstation.service ├─967052 /bin/bash /home/chris/wetterstation.sh ├─983892 /bin/bash /home/chris/wetterstation.sh ├─983893 timeout 38 nc -nlvw 1 -p 1080 ├─983894 tail -1 └─983895 nc -nlvw 1 -p 1080 Mai 16 19:12:51 ioBroker wetterstation.sh[967063]: /home/chris/wetterstation.conf: Zeile 67: DATUM: Kommando nicht gefunden. Mai 16 19:12:51 ioBroker wetterstation.sh[967069]: Connection to 192.168.0.21 8087 port [tcp/*] succeeded! Mai 16 19:15:28 ioBroker wetterstation.sh[969312]: jq: error (at <stdin>:0): Cannot iterate over null (null) Mai 16 19:15:29 ioBroker wetterstation.sh[969315]: jq: error (at <stdin>:0): Cannot iterate over null (null) Mai 16 19:30:09 ioBroker wetterstation.sh[980843]: jq: error (at <stdin>:0): Cannot iterate over null (null) Mai 16 19:30:09 ioBroker wetterstation.sh[980846]: jq: error (at <stdin>:0): Cannot iterate over null (null) chris@ioBroker:~$
-
@sborg
Alles neu gemacht. 64bit. Läuft einwandfrei. -
Mai 16 19:12:51 ioBroker wetterstation.sh[967063]: /home/chris/wetterstation.conf: Zeile 67: DATUM: Kommando nicht gefunden.
Du hast auf jedenfall einen Fehler in der Config.
Ob der ursächlich für die anderen ist, kann ich aber nicht sagen -
Jupp
@chris76e Schau mal in deiner "conf" bei Zeile #67, da hast du wohl aus versehen die Raute gelöscht
# Datum = .....
Dann sicherheitshalber Skript stoppen
systemctl stop wetterstation
, kurz warten und wieder startensystemctl start wetterstation
.Daraus könnten die vier weiteren Fehler resultieren, zumindest kommen die genau zu jeder vollen Viertelstunde und genau da wird "Minmax24h" und "...heute" berechnet. Sind die nun weg, dürfte auch alles funktionieren
-
habe das geändert kein Fehler mehr, aber immer noch dasselbe. Hab auch mal die DP´s gelöscht und über das Script neu anlegen lassen. Hat auch nicht geholfen.
chris@ioBroker:~$ systemctl status wetterstation ● wetterstation.service - Service für ioBroker Wetterstation Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2023-05-17 10:30:07 CEST; 45min ago Main PID: 628054 (wetterstation.s) Tasks: 5 (limit: 21048) Memory: 2.8M CPU: 1min 28.219s CGroup: /system.slice/wetterstation.service ├─628054 /bin/bash /home/chris/wetterstation.sh ├─666172 /bin/bash /home/chris/wetterstation.sh ├─666173 timeout 38 nc -nlvw 1 -p 1080 ├─666174 tail -1 └─666175 nc -nlvw 1 -p 1080 Mai 17 10:30:07 ioBroker wetterstation.sh[628071]: Connection to 192.168.0.21 8087 port [tcp/*] succeeded!
-
@chris76e Keine Fehler mehr ist schon mal gut. Ev. klemmt es an der Influx-Konnektivität. Kleiner Test im Installationsverzeichnis stehend:
sudo systemctl stop wetterstation
. ./wetterstation.conf
. ./wetterstation.sub
minmax24h DEBUG
Danach Service wieder starten
systemctl start wetterstation
-
Verdammt, wegen dir ist mir jetzt aufgefallen, dass ich das selbe Problem habe....
@SBorg
Bei mir liegt es sowie es aussieht am httpslvl=info msg="http: TLS handshake error from 172.17.0.1:53300: local error: tls: bad record MAC" log_id=0hrT8bdl000 service=http
ich hab in der .sub bei der Influxquery den -k Parameter hinzugefügt (weil ich ein selbstsigniertes Zertifikat verwende) und schon geht es
Zeile 1213local TMP_DATA=$(curl -sk --request POST "${INFLUX_WEB}://${INFLUX_API}/api/v2/query?org=${INFLUX_ORG}" --header 'Content-Type: application/vnd.flux' \
-
Dann kommt das hier
chris@ioBroker:~$ sudo systemctl stop wetterstation [sudo] Passwort für chris: chris@ioBroker:~$ . ./wetterstation.conf chris@ioBroker:~$ . ./wetterstation.sub chris@ioBroker:~$ minmax24h DEBUG Testing InfluxDB... min/max Aussentemperatur 24h: °C °C
hier ist mal meine wetterstation.conf, eventuell ist da ein Fehler???
### Settings V3.0.0 ----------------------------------------------------------- #Debuging einschalten [true/false] / default: false / Ausgabe der Messwerte debug=false #Verhalten bei Kommunikationsfehler [true/false] / default: false / Soll der Datenpunkt automatisch resettet werden? RESET_KOMFEHLER=false #Logging einschalten [true/false] / default: false / schreibt die Datenstrings der Station in eine Datei logging=false #ioBroker-IP und Port der Simple-Restful-API [xxx.xxx.xxx.xxx:xxxxx] IPP=192.168.0.21:8087 #Protokoll, ioBroker-IP und Port der Rest-API [http(s)://xxx.xxx.xxx.xxx:xxxxx] / leer lassen falls nicht benutzt RESTAPI_URL=http://192.168.0.21:8093 RESTAPI_USER=RestAPI RESTAPI_PW=xxxxx #Protokoll der Wetterstation [1/2/9] / 1=Wunderground ; 2=Ecowitt ; 9=DNS / default: 2 WS_PROTOKOLL=2 #Anzahl der vorhandenen Zusatzsensoren Froggit, Ecowitt und Bresser / default: 0 ANZAHL_WH31=0 ANZAHL_WS90=0 ANZAHL_DP10=0 ANZAHL_DP35=0 ANZAHL_DP40=0 ANZAHL_DP50=0 ANZAHL_DP60=0 ANZAHL_DP70=0 ANZAHL_DP100=0 ANZAHL_DP200=0 ANZAHL_DP250=0 ANZAHL_DP300=0 ANZAHL_7009999=0 #Protokoll (HTTP oder HTTPS) / default: HTTP WEB=HTTP #Ignoriere Zertifikatsfehler bei der Simple-Restful-API [true/false] / default: false / nötig bei eigenen Zertifikaten WEB_IGN_SSL_ERROR=false #User-Authentifizierung falls benutzt; sonst leer lassen AUTH_USER= AUTH_PASS= #Port der Wetterstation WS_PORT=1080 #Pollintervall der Wetterstation in Sekunden (minimal 16 Sekunden) WS_POLL=16 #Name/ID der Wetterstation WS_ID=ZuHause #wo sollen die Datenobjekte abgelegt werden PRE_DP=javascript.0.Wetterstation #InfluxDB-Konfiguration für Influx V1.x.x / ohne InfluxDB alles leer lassen #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx] INFLUX_API=192.168.0.23:8086 #Bucket, Token und Organisation der InfluxDB INFLUX_BUCKET=iobroker INFLUX_TOKEN=6mBq1PkKwMWsHGRMS_qtSYH1e2dho2kOu_36JRr873i8FyCwcd81uieH9ZnbJ437CowkICe0837Ye_UXKGyF0w INFLUX_ORG=iobroker #letztes Regenereignis als [DATUM], [UNIX]-Timestamp oder [DIFF]erenz ("vor xx Tagen") # DATUM = 28.04.2020 13:12 # UNIX = 1588074964 # DIFF = gerade eben / vor einer Stunde / vor 23 Stunden / vor einem Tag / vor 12 Tagen LAST_RAIN=DIFF #Text-Format für Datenpunkte "Sonnenschein_[Tag|Woche|Monat|Jahr]_Text" # zweistellig wird ggf. mit einer führenden "0" aufgefüllt # d = Tag(e) 0...n ein- und mehrstellig / h = Stunden 0...n ein- oder mehrstellig # hh = Stunden zweistellig (00...23) / mm = Minuten zweistellig (00...59) / ss = Sekunden zweistellig (00...59) # # Beispiel: 68 Stunden, 2 Minuten und 15 Sekunden # # Auswahl | Ausgabe im Datenpunkt # ---------------------------------------------------------------------------- # [0] = h Std. mm Min. ss Sek. | 68 Std. 02 Min. 15 Sek. # [1] = h:mm | 68:02 # [2] = d Tag/e h Std. | 2 Tage 20 Std. # [3] = d Tag/e, h Std, m Min | 2 Tage, 20 Std, 2 Min (Anzeige Tage erst bei >0) SONNENSCHEIN_TXTFORMAT=3 #Daten an Wetter.com senden (leer lassen falls nicht gewünscht)? WETTERCOM_ID= WETTERCOM_PW= #Daten an Wunderground.com senden? [true/false] / default: false #Nur nötig und sinnvoll bei WS_PROTOKOLL=9 (DNS) wenn trotzdem auch Daten weiterhin an Wunderground.com gesendet werden sollen. WUNDERGROUND_UPDATE=false #Windrichtung und -geschwindigkeit der letzten 10 Minuten anstelle aktueller Werte an #windy/OpenSenseMap/wetter.com übertragen? [true/false] / default: false USE_AVG_WIND=false #Fix aktivieren bei fehlerhafter Außentemperatur [true/false] / default: false #Bei unplausiblem Messwert wird kein Datenpaket an den ioB geschickt FIX_AUSSENTEMP=false ############################################################################################# ### openSenseMap - Einstellungen (nur nötig falls openSenseMap benutzt werden soll) ### ### ### ### Für die Registrierung muss "openSenseMap" auf "false" eingestellt sein! ### ### Erst wenn auch Sensoren angelegt wurden, darf auf "true" umgestellt werden! ### ############################################################################################# #openSenseMap aktivieren [true/false] / default: false openSenseMap=false #SenseBox-User senseBox_USER= #SenseBox-Password senseBox_PWD= #ID der senseBox (24-stellig) senseBox_ID= #Security-Token der Box BOX_TOKEN= ### Die restlichen Einstellungen für OpenSenseMap werden vom System generiert/benutzt ###### ### Änderungen sind hier nicht nötig, außer man weiß ganz genau was man tut! ############### #Sensor-IDs (wird automatisch anhand der Sensoren erzeugt) SENSEBOX_IDSENSOR=() #Sensor-Bezeichnung (Reihenfolge muss zur Sensor-ID identisch sein!) SENSEBOX_IDNAME=("Temperatur" "Luftfeuchte" "Luftdruck relativ" "Luftdruck absolut" "Taupunkt" "gefühlte Temperatur" "Sonnenstrahlung" "Windgeschwindigkeit" "Windrichtung" "UV-Index" "Regenrate") #Messwertezuordnung (Reihenfolge muss zur Sensor-ID identisch sein!) SENSEBOX_IDMESSWERT=(1 5 10 9 2 3 16 6 8 17 11) #Sensorendefinitionen ICONS=(osem-thermometer osem-humidity osem-barometer osem-barometer osem-thermometer osem-thermometer osem-brightness osem-particulate-matter osem-particulate-matter osem-brightness osem-umbrella) UNITS=('°C' '%H' 'hPa' 'hPa' '°C' '°C' 'W/m²' 'km/h' '°' 'Index' 'mm/h') ############################################################################################# ### openSenseMap - Ende der Einstellungen ############################################# ############################################################################################# ############################################################################################# ### Windy - Einstellungen (nur nötig falls Windy benutzt werden soll) ### ############################################################################################# #Windy aktivieren [true/false] / default: false use_windy=false #Windy API-Key windy_APIKey= #Station [number: 0 - 2147483647] / default: 0 windy_Station= #Name der Station [Text] windy_Name= #Latitude/Breitengrad der Station windy_Latitude= #Longitude/Längengrad der Station windy_Longitude= #Elevation/Höhe ÜNN windy_Elevation= #Montagehöhe Temperatursensor über Boden windy_Tempheight= #Montagehöhe Windsensor über Boden windy_Windheight= ############################################################################################# ### Windy - Ende der Einstellungen #################################################### ############################################################################################# ############################################################################################# ### AWEKAS - Einstellungen (nur nötig falls AWEKAS benutzt werden soll) ### ############################################################################################# #AWEKAS aktivieren [true/false] / default: false use_awekas=true #AWEKAS Login Username und Passwort AWEKAS_USER=xxxx AWEKAS_PW=jxxxx ############################################################################################# ### AWEKAS - Ende der Einstellungen ################################################### ############################################################################################# ### Ende Usereinstellungen ###EoF
-
@boronsbruder Sehr gut
Das fehlt dann aber auch beim Metsommer, da wird die Influx ebenso abgefragt.@Chris76e Jepp, da kommt nix. Ich gehe mal davon aus, dass dein Influx soweit in der conf korrekt ist. Deswegen auch die Frage:
Nutzt du ebenfalls bei Influx "https" mit einem selbst signierten Zertifikat?Dann Q&D-fix auf die schnelle: im Installationsverzeichnis stehend
sed -i "s/curl -s --request POST/curl -sk --request POST/g" wetterstation.sub
ausführen und den Service restarten.
Die Änderung pflege ich in die V3.1.0 dann ein. -
@chris76e Ok, Fehler gefunden, dir fehlt das Protokoll für Influx:
#InfluxDB-Konfiguration / ohne InfluxDB alles leer lassen #Protokoll (HTTP oder HTTPS) / default: HTTP INFLUX_WEB=HTTP #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx] INFLUX_API= #Bucket, Token und Organisation der InfluxDB INFLUX_BUCKET= INFLUX_TOKEN= INFLUX_ORG=
Füge einfach
INFLUX_WEB=HTTP
hinzu, neu starten und dann hoffentlich freuen -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Nutzt du ebenfalls bei Influx "https" mit einem selbst signierten Zertifikat?
Nicht das ich wüsste... Wo kann ich das sehen?
Habe das jetzt so geändert
#InfluxDB-Konfiguration für Influx V1.x.x / ohne InfluxDB alles leer lassen #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx] INFLUX_WEB=HTTP INFLUX_API=192.168.0.23:8086
und neugestartet. jetzt mal schaun ob es funktioniert.
-
hat sich nichts geändert, unter Heute Max und min, wird immer noch die aktuelle Temperatur geschrieben und unter 24h Max/min sowie 365t.... wird nichts geschrieben
-
@chris76e
was sagt das influx log? -
wo finde ich den?
-
@chris76e sagte in [Linux Shell-Skript] WLAN-Wetterstation:
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Nutzt du ebenfalls bei Influx "https" mit einem selbst signierten Zertifikat?
Nicht das ich wüsste... Wo kann ich das sehen?
Wie du die influx-GUI öffnest, per "http://192....:xxxx" oder "https://192....:xxxx"
Aber, falls es kein C&P-Fehler ist/war, prüfe mal deinen Token. Die enden auf "...==" und bei dir fehlen lt. conf die beiden
=
. -
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Aber, falls es kein C&P-Fehler ist/war, prüfe mal deinen Token. Die enden auf "...==" und bei dir fehlen lt. conf die beiden =.
Das war es
Jetzt fehlen mir nur noch die Daten für ...365t...
Wann sollten die kommen? Logge seit Anfang Mai 2022.
-
@chris76e
Kommen um ca. Mitternacht -
keine Ahnung was da los war, aber seit heute Punkt Mitternacht wurde nichts mehr übertragen.
Erst ein Restart des Service brachte sie wieder zum laufen.Gibt es wo ein Log, das man anschauen könnte?
-
gerade aufgefallen, bei mir genauso.....
-
dito
Jun 2 00:00:00 iobroker wetterstation.sh[133]: /home/pi/wetterstation/wetterstation.sub: line 583: [: : integer expression expected Jun 2 00:00:00 iobroker wetterstation.sh[133]: /home/pi/wetterstation/wetterstation.sub: line 584: [: : integer expression expected Jun 2 00:00:00 iobroker wetterstation.sh[133]: /home/pi/wetterstation/wetterstation.sub: line 585: [: : integer expression expected Jun 2 00:00:00 iobroker wetterstation.sh[133]: /home/pi/wetterstation/wetterstation.sub: line 586: [: : integer expression expected Jun 2 00:00:00 iobroker wetterstation.sh[133]: /home/pi/wetterstation/wetterstation.sub: line 587: [: : integer expression expected Jun 2 00:00:00 iobroker wetterstation.sh[956120]: (standard_in) 1: syntax error Jun 2 00:00:00 iobroker wetterstation.sh[956123]: (standard_in) 1: syntax error Jun 2 00:00:00 iobroker wetterstation.sh[133]: /home/pi/wetterstation/wetterstation.sub: line 1951: [: : integer expression expected Jun 2 00:00:00 iobroker wetterstation.sh[956134]: (standard_in) 1: syntax error Jun 2 00:00:01 iobroker wetterstation.sh[956146]: (standard_in) 1: syntax error Jun 2 00:00:01 iobroker wetterstation.sh[956148]: (standard_in) 12: syntax error Jun 2 00:00:01 iobroker wetterstation.sh[956152]: (standard_in) 1: syntax error
In den betreffenden 500er Zeilen steht
#Wetter erfassen und bestimmen if [ "$LUFTDRUCK" -le "980" ]; then WETTER_AKTUELL="stürmisch, Regen"; fi if [ "$LUFTDRUCK" -gt "980" ] && [ "$LUFTDRUCK" -le "1000" ]; then WETTER_AKTUELL="regnerisch"; fi if [ "$LUFTDRUCK" -gt "1000" ] && [ "$LUFTDRUCK" -le "1020" ]; then WETTER_AKTUELL="wechselhaft"; fi if [ "$LUFTDRUCK" -gt "1020" ] && [ "$LUFTDRUCK" -le "1040" ]; then WETTER_AKTUELL="sonnig"; fi if [ "$LUFTDRUCK" -gt "1040" ]; then WETTER_AKTUELL="trocken, Gewitter"; fi