NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Sodele, V2.5.0 goes final:
Neues Release des Wetterstation WLAN-Skriptes auf GitHub V2.5.0
Läuft
und diesmal habe ich die Wetterstation.js nicht vergessen -
@nashra sagte in [Linux Shell-Skript] WLAN-Wetterstation:
und diesmal habe ich die Wetterstation.js nicht vergessen
Loggt schon wer seit einem Jahr die Außentemperatur bzw. hat eine Anzeige bei Min/Max/Avg - 365 Tage (ich meine nicht die +/- 99.99°C )? Zum testen konnte ich bei mir nur 10 Monate nehmen + hat damit funktioniert, aber man weiß ja nie...
-
@sborg
Moin, gestern habe ich diese Möglichkeit der Einbindung einer Wetterstation erst entdeckt. Das sieht ja wirklich sehr gut aus. Besten Dank.
Dann habe ic V2.5.0 installiert, nach Anleitung. Aber ich habe da Probleme.
Die Daten werden von einer DNT Weatherscreen PRO geliefert, im IOBroker auch angezeigt.
Erst sind sie grün, dann kurz schwarz, abschließend rot.
In Grafana kann ich mir einige Daten anschauen, andere nicht, weil in der Datenbank angeblich keine Daten sind.
Luftfeuchtigkeit wird angezeigt.
Aussentemperatur nicht.
Als Beispiel.
Was mache ich falsch, dass einige Daten gespeichert werden, andere wieder nicht?DNT Weatherscreen PRO
Raspberry 4b
InfluxDBBrauche ich für die Datenbank einen weiteren Adapter? Einen für Grafana habe ich eingerichtet.....
pi@raspi-iobroker:~ $ sudo 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 Sat 2021-02-20 15:55:00 GMT; 4h 57min ago Main PID: 5214 (wetterstation.s) Tasks: 5 (limit: 4915) CGroup: /system.slice/wetterstation.service ├─ 5214 /bin/bash /home/pi/Wetterstation/wetterstation.sh ├─28702 /bin/bash /home/pi/Wetterstation/wetterstation.sh ├─28703 timeout 126 nc -nlvw 1 -p 4283 ├─28704 sed -n 1 p └─28705 nc -nlvw 1 -p 4283
Feb 20 20:49:30 raspi-iobroker.site wetterstation.sh[5214]: Connection from 192.168.0.48 42346 received! Feb 20 20:49:32 raspi-iobroker.site wetterstation.sh[5214]: Listening on [0.0.0.0] (family 2, port 4283) Feb 20 20:50:10 raspi-iobroker.site wetterstation.sh[5214]: Connection from 192.168.0.48 13795 received! Feb 20 20:50:13 raspi-iobroker.site wetterstation.sh[5214]: Listening on [0.0.0.0] (family 2, port 4283) Feb 20 20:50:34 raspi-iobroker.site wetterstation.sh[5214]: Connection from 192.168.0.48 20228 received! Feb 20 20:50:36 raspi-iobroker.site wetterstation.sh[5214]: Listening on [0.0.0.0] (family 2, port 4283) Feb 20 20:51:06 raspi-iobroker.site wetterstation.sh[5214]: Connection from 192.168.0.48 8070 received! Feb 20 20:51:08 raspi-iobroker.site wetterstation.sh[5214]: Listening on [0.0.0.0] (family 2, port 4283) Feb 20 20:51:38 raspi-iobroker.site wetterstation.sh[5214]: Connection from 192.168.0.48 9672 received! Feb 20 20:51:40 raspi-iobroker.site wetterstation.sh[5214]: Listening on [0.0.0.0] (family 2, port 4283) pi@raspi-iobroker:~ $
-
@christian-3 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
In Grafana kann ich mir einige Daten anschauen, andere nicht, weil in der Datenbank angeblich keine Daten sind.
Luftfeuchtigkeit wird angezeigt.
Aussentemperatur nicht.
Als Beispiel.
Was mache ich falsch, dass einige Daten gespeichert werden, andere wieder nicht?Du benötigst Influx und den zugehörigen Influx-Adapter.
Dann musst du alle DP, die du in Grafana anzeigen möchstest, mit dem Influx-Adapter loggen (Schraubenschlüssel beim jeweiligen DP). -
@negalein Schon klar und auch installiert, sonst könnte ich mir wohl kaum die Luftfeuchtigkeit anzeigen lassen.
-
@christian-3 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Schon klar und auch installiert, sonst könnte ich mir wohl kaum die Luftfeuchtigkeit anzeigen lassen.
Sorry, wollte nur helfen.
Es kann ja sein, dass das oder das oder das nicht gemacht/vergessen wurde.Du hast gefragt
Brauche ich für die Datenbank einen weiteren Adapter? Einen für Grafana habe ich eingerichtet.....
.
Da stand nichts von Influx.sonst könnte ich mir wohl kaum die Luftfeuchtigkeit anzeigen lassen.
Könnte, kann alles sein.
Können wir nicht wissen, von wo du die Luftfeuchte herbekommst.Zeig zumindest mal Screenshots. Dann sieht man was.
werden alle DP befüllt?
Einstellung zum loggen?
... -
@negalein Meine Vermutung liegt ja eher in der Datenbank bzw. in deren Befüllung. (grün/schwarz/rote Werte)
In den Logs finde ich folgenden Hinweis, mit dem ich nichts anfangen kann.influxdb.0 2021-02-20 20:09:53.716 warn / "{\"error\":\"partial write: field type conflict: input field \\\"value\\\" on measurement \\\"javascript.0.Wetterstation.Aussentemperatur\\\" is type float, already exists as type string dropped=1 influxdb.0 2021-02-20 20:09:53.716 warn (31169) Error on writePoint("{"value":7.38,"time":"2021-02-20T20:09:53.702Z","from":"system.adapter.influxdb.0","q":0,"ack":false}): Error: {"error":"partial write: field type conflict: input field \
-
@christian-3 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Erst sind sie grün, dann kurz schwarz, abschließend rot.
Hi, dass ist "normal" und dem Simple-RESTful-Adapter geschuldet, da man beim gleichzeitigen schreiben vieler Werte kein ack=true setzen kann (dann wären sie schwarz). Einige Werte schreibe ich einzeln, da geht es dann = die sind schwarz
Also nix daraus machen, ist an der Stelle reine Kosmetik@christian-3 sagte in [Linux Shell-Skript] WLAN-Wetterstation:
mit dem ich nichts anfangen kann.
influxdb.0 2021-02-20 20:09:53.716 warn / "{\"error\":\"partial write: field type conflict: input field \\\"value\\\" on measurement \\\"javascript.0.Wetterstation.Aussentemperatur\\\" is type float, already exists as type string dropped=1 influxdb.0 2021-02-20 20:09:53.716 warn (31169) Error on writePoint("{"value":7.38,"time":"2021-02-20T20:09:53.702Z","from":"system.adapter.influxdb.0","q":0,"ack":false}): Error: {"error":"partial write: field type conflict: input field \
Ich schon
Zum kleinen Teil Anwenderfehler, zum Großteil Softwareproblem und zum Teil auch einfach kein Glück gehabt...
Ich werde zu dem Thema wohl noch einen Wiki-Artikel verfassen...
Du hast beim Einrichten des Influx-Logging für "Aussentemperatur" (die zB. bei dir nicht funktioniert) den Datentyp auf "Automatic" stehen gelassen. Soweit eigentlich richtig, aber dummerweise war dann der 1. Messwert der in die neue Datenreihe geschrieben wurde nicht eindeutig genug. So hat er ihn nicht als Zahl (=float), sondern als Text (=string) erkannt und die Datenreihe "Aussentemperatur" so angelegt, dass alle Werte "string" sind.
Jetzt kommt ein neuer Messwert vom Typ "float" und kann dann nicht in die InfluxDB geschrieben werden, da er ja einen string möchte:measurement \"javascript.0.Wetterstation.Aussentemperatur\" is type float, already exists as type string dropped=1
"Messwert Aussentemperatur ist eine Zahl, existiert aber als Text --> schmeiße ihn weg"
Du musst also zuerst beim loggen des DPs "Aussentempertur" von "Automatic" auf "Number/Nummer" umstellen.
Da man leider den Datentyp einer angelegten Datenreihe in Influx nachträglich nicht mehr ändern kann (string-->float), musst du in Influx die kpl. Datenreihe "Aussentemperatur" droppen. -
@sborg said in [Linux Shell-Skript] WLAN-Wetterstation:
Du musst also zuerst beim loggen des DPs "Aussentempertur" von "Automatic" auf "Number/Nummer" umstellen.
Da man leider den Datentyp einer angelegten Datenreihe in Influx nachträglich nicht mehr ändern kann (string-->float), musst du in Influx die kpl. Datenreihe "Aussentemperatur" droppen.Nachdem ich da lange nach gesucht hatte als Anfänger...
influx -username <user> -database <db>( wahrscheinlich iobroker ) -password <pw
drop measurement "javascript.0.Wetterstation.Aussentemperatur"Ich habe auch öfter noch das Problem das nichts/nicht das richtige angezeigt wird weil
- noch keine aggregierten Werte da sind (Woche Monat Jahr)
- per default alles auf mean() steht (-> select last())
Und manchmal findet er auch einfach keine Werte bei mir was aber an dem Datentyp roblem liegen kann, das habe ich bestimmt auch nicht richtig eingestellt...
-
@rand Besten Dank für Deine Hinweise.
Zunächst habe ich es mit droppen probiert, Datenbanken sind nicht so ganz mein Ding.
Da weiterhin Fehlermeldung im Log zu sehen waren und ich so recht nicht wusste, wie und wo, habe ich eine weitere Datenbank installiert. Und dieses Mal hatte ich Glück, der erste Wert war wohl gut genug, diese zweite Datenbank wird nun mit Daten gefüllt.
Tolle Sache, Danke. -
@christian-3 Ne, Glück war das diesmal nicht
Du hast Influx dazu "gezwungen" es als "Zahl" anzulegen, da du in den Einstellungen "Number" definiert hast. Steht es da auf "Automatic", dann brauchst du GlückMan kann sich auch den entsprechenden Typ anschauen. Dabei muss halt ein Zahlenwert "float" sein, ein Text eben "string":
...aber wie erwähnt, sollte hier bspw. bei der Aussentemperatur dann string stehen, hilft nur droppen...
Deswegen am besten nie den "Automatic"-Modus wählen, schließlich wisst(*) ihr was in dem Datenpunkt stehen wird.(*)... und nu? Das ist doch aber String: 18 °C
Steht doch auch beim Maus-Over als "Wert"...
...Noppe, hier wird gleichzeitig die "Unit" (=Einheit des DPs) mit angezeigt. Es hilft also im Zweifelsfall wirklich nur ein Klick auf den Wert des Datenpunktes, dann sieht man tatsächlich nur den reinen Inhalt des DPs: 18 (und das ist eben eine Zahl)...und bevor jemand auf die Idee kommt: Nein, das hat speziell mit diesem Projekt hier nichts zu tun, dass gilt ioB übergreifend und ist immer so
-
Hallo ich kriege keine Daten aus meiner Wetterstation WS3500.
pi@raspberrypi:~/WLAN-Wetterstation $ sudo ./wetterstation.sh --debug Connection to 192.168.178.12 8087 port [tcp/*] succeeded! Listening on [0.0.0.0] (family 2, port 1080) Messwerteblock: Nicht alle Werte werden unterstützt (abhängig vom Modell der Wetterstation und dem verwendeten Protokoll)! Temperatur Innen : °C Temperatur Aussen : °C Taupunkt : °C Gefühlte Temperatur : °C Luftfeuchte Innen : % Luftfeuchte Aussen : % Windgeschwindkeit : km/h Windböengeschwindkeit : km/h max. Windböe : km/h Windrichtung : ° Windrichtung : Luftdruck absolut : hPa Luftdruck relativ : hPa Regenrate : mm/h Regenstatus : Regen seit Regenbeginn : mm Regen Stunde : mm Regen Tag : mm Regen Woche : mm Regen Monat : mm Regen Jahr : mm Regen Gesamt : mm Sonnenstrahlung : W/m² UV-Index : Zeitstempel : Firmware : Batteriestand: : Gateway-Modell : Zusatzsensoren: Datenstring für ioBroker: DATA von Wetterstation: Debug VAR: Installationsverzeichnis: /home/pi/WLAN-Wetterstation IPP: 192.168.178.12:8087 WS_PORT: 1080 WS_POLL: 16 PRE_DP: javascript.0.Wetterstation WEB: HTTP WS_PROT: Ecowitt DP50/60/70/100/200: 0 | 0 | 0 | 0 | 0 Script-Version: V2.5.0 Config-Version: V2.5.0 Sub-Version: V2.5.0 Kommunikationsfehler!
wetterstation.conf
### Settings V2.5.0 ----------------------------------------------------------- #Debuging einschalten [true/false] / default: false / Ausgabe der Messwerte debug=false #ioBroker-IP und Port der Simple-Restful-API [xxx.xxx.xxx.xxx:xxxxx] IPP=192.168.178.12:8087 #Protokoll der Wetterstation [1/2/9] / 1=Wunderground ; 2=Ecowitt ; 9=Sainlogic Profi / default: 1 WS_PROTOKOLL=2 #Anzahl der vorhandenen Zusatzsensoren / default: 0 ANZAHL_DP50=0 ANZAHL_DP60=0 ANZAHL_DP70=0 ANZAHL_DP100=0 ANZAHL_DP200=0 #Protokoll (HTTP oder HTTPS) / default: HTTP WEB=HTTP #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 / ohne InfluxDB alles leer lassen #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx] INFLUX_API= #Name, User und Passwort der InfluxDB-Datenbank INFLUX_DB= INFLUX_USER= INFLUX_PASSWORD= #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 ############################################################################################# ### 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 ############################################# ############################################################################################# ### Ende Usereinstellungen ###EoF
-
@west Und die Wetterstation ist richtig konfiguriert?
-
@west said in [Linux Shell-Skript] WLAN-Wetterstation:
Hallo ich kriege keine Daten aus meiner Wetterstation WS3500.
Was mich daran erinnert, wenn man ein Gateway ohne Sensoren einbindet ist die Stringlänge <200 und (zumindestens ältere Versionen) schmeisst einen Fehler; was einen als Anfänger doch etwas irritiert...
-
-
@west
sollte da nicht mehr in PATH stehen?
Bei mir steht: /weatherstation/updateweatherstation.php? -
@latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:
sollte da nicht mehr in PATH stehen?
definitiv
siehe Wiki
-
-
@negalein
Wenn man das Wunderground-Protokolle verwendet ja.### Settings V2.5.0 ----------------------------------------------------------- #Debuging einschalten [true/false] / default: false / Ausgabe der Messwerte debug=false #ioBroker-IP und Port der Simple-Restful-API [xxx.xxx.xxx.xxx:xxxxx] IPP=192.168.178.12:8087 #Protokoll der Wetterstation [1/2/9] / 1=Wunderground ; 2=Ecowitt ; 9=Sainlogic Profi / default: 1 WS_PROTOKOLL=1 #Anzahl der vorhandenen Zusatzsensoren / default: 0 ANZAHL_DP50=0 ANZAHL_DP60=0 ANZAHL_DP70=0 ANZAHL_DP100=0 ANZAHL_DP200=0 #Protokoll (HTTP oder HTTPS) / default: HTTP WEB=HTTP #User-Authentifizierung falls benutzt; sonst leer lassen AUTH_USER= AUTH_PASS= #Port der Wetterstation WS_PORT=8084 #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 / ohne InfluxDB alles leer lassen #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx] INFLUX_API= #Name, User und Passwort der InfluxDB-Datenbank INFLUX_DB= INFLUX_USER= INFLUX_PASSWORD= #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 ############################################################################################# ### 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 ############################################# ############################################################################################# ### Ende Usereinstellungen ###EoF
-
/wetterstation.sh --data
pi@raspberrypi:~/WLAN-Wetterstation $ ./wetterstation.sh --data Connection to 192.168.178.12 8087 port [tcp/*] succeeded! Warte maximal 38 Sekunden auf Datenpaket der Wetterstation... Listening on [0.0.0.0] (family 2, port 8084)
Habe vor ein paar Tage ein Firmware Update gemacht.