NEWS
[Linux Shell-Skript] WLAN-Wetterstation
-
@tom2964 Geht auch ohne Display (zumindest das Skript, ob die Station auf Dauer ohne Display läuft...? Weiß ev. jemand anderes). Die Außenstation muss die Daten halt nur per WLAN im "Wunderground-Format" senden, was die Froggit zB. macht
-
@tom2964
Bei meiner Wetterstation braucht man das Display schon, da die Basisstation per Funk ans Display überträgt und das Display über WLAN den Zugang zum Internet herstellt. -
Welches Model wäre es denn genau was one display geht
-
Ich glaube nicht, dass hier jemand eine Wetterstation ohne Display betreibt. Deswegen wird das mE. keiner beantworten können. Für das Skript ist kein Display erforderlich, dass wertet lediglich die "gefunkten" Daten der Wetterstation aus. Ob aber auf Dauer die Wetterstation an sich ohne Display läuft...? Wäre wohl eine Frage an den/die Hersteller.
-
Hallo, bin jetzt endlich hier beim Script dabei nachdem ich Probleme Hatte den Custom Server zu aktivieren.
Jetz klappt bei mir der erste Test mit folgender Ausgabe nicht:
pi@Servazamba:~/ioBroker $ ./wetterstation.sh --debug nc: Permission denied (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error (standard_in) 1: syntax error [ { "id": "javascript.0.Wetterstation.Innentemperatur", "val": -17.77 }, { "id": "javascript.0.Wetterstation.Aussentemperatur", "val": -17.77 }, { "id": "javascript.0.Wetterstation.Taupunkt", "val": -17.77 }, { "id": "javascript.0.Wetterstation.Chillfaktor", "val": -17.77 }, { "id": "javascript.0.Wetterstation.Innenfeuchtigkeit", "val": "" }, { "id": "javascript.0.Wetterstation.Aussenfeuchtigkeit", "val": "" }, { "id": "javascript.0.Wetterstation.Wind", "val": "" }, { "id": "javascript.0.Wetterstation.Wind_max", "val": "" }, { "id": "javascript.0.Wetterstation.Windrichtung", "val": "" }, { "id": "javascript.0.Wetterstation.Druck_absolut", "val": "" }, { "id": "javascript.0.Wetterstation.Druck_relativ", "val": "" }, { "id": "javascript.0.Wetterstation.Regen_aktuell", "val": "" }, { "id": "javascript.0.Wetterstation.Regen_Tag", "val": "" }, { "id": "javascript.0.Wetterstation.Regen_Woche", "val": "" }, { "id": "javascript.0.Wetterstation.Regen_Monat", "val": "" }, { "id": "javascript.0.Wetterstation.Sonnenstrahlung", "val": "" }, { "id": "javascript.0.Wetterstation.UV_Index", "val": "" }, { "id": "javascript.0.Wetterstation.Zeitstempel", "val": "19.01.2020 01:00:00" } ] Messwerteblock: Temperatur Innen : -17.77 °C Temperatur Aussen : -17.77 °C Taupunkt : -17.77 °C Chill-Faktor : -17.77 °C Luftfeuchte Innen : % Luftfeuchte Aussen : % Windgeschwindkeit : km/h max. Windgeschwindkeit : km/h Windrichtung : ° Luftdruck absolut : hPa Luftdruck relativ : hPa Regen aktuell : mm Regen Tag : mm Regen Woche : mm Regen Monat : mm Sonnenstrahlung : W/m² UV-Index : Zeitstempel : 19.01.2020 01:00:00 Datenstring für ioBroker: javascript.0.Wetterstation.Innentemperatur=-17.77&javascript.0.Wetterstation.Aussentemperatur=-17.77&javascript.0.Wetterstation.Taupunkt=-17.77&javascript.0.Wetterstation.Chillfaktor=-17.77&javascript.0.Wetterstation.Innenfeuchtigkeit=&javascript.0.Wetterstation.Aussenfeuchtigkeit=&javascript.0.Wetterstation.Wind=&javascript.0.Wetterstation.Wind_max=&javascript.0.Wetterstation.Windrichtung=&javascript.0.Wetterstation.Druck_absolut=&javascript.0.Wetterstation.Druck_relativ=&javascript.0.Wetterstation.Regen_aktuell=&javascript.0.Wetterstation.Regen_Tag=&javascript.0.Wetterstation.Regen_Woche=&javascript.0.Wetterstation.Regen_Monat=&javascript.0.Wetterstation.Sonnenstrahlung=&javascript.0.Wetterstation.UV_Index=&javascript.0.Wetterstation.Zeitstempel=19.01.2020 01:00:00 Debug VAR: Installationsverzeichnis: /home/pi/ioBroker IPP: 192.168.178.20:8087 WS_PORT: 80 WS_POLL: 16 PRE_DP: javascript.0.Wetterstation Script-Version: V0.1.1 Config-Version: V0.1.1
Was bedeutet "nc: Permission denied"?
Die Berechtigungen der .sh habe ich mit: "chmod +x wetterstation.sh" im Order per Putty vergeben.Wenn ich "sudo ./wetterstation.sh --debug" starte werden die korrekten Werte angezeigt.
-
@Rushmed
Ok, hat sich erledigt, auf Port 9999 gehts ohne sudo. -
Ich habe die WiKi angepasst, leider einfach vergessen
Einige Linux-Distris verlangen bei Ports kleiner als 1025 root-Rechte. -
So jetzt laüft erstmal alles im ioBroker.
Vielen Dank für das tolle Script und die ausführliche und gut verständliche Anleitung.Zwei Fragen hab ich aber noch.
-
Ist es normal dass Werte der Datenpunkte im Object view nicht bestätigt werden un daher rot bleiben?
-
Ich habe sowohl in WS View als auch in der Scriptconfig 16 s Pollzeit eingestellt, bekomme die Werte aber stets alle 32 s.
Ist nicht tragisch aber ich hätte Aktualisierung alle 16 s erwartet.
-
-
@Rushmed, das ist sehr erfreulich!
@Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ist es normal dass Werte der Datenpunkte im Object view nicht bestätigt werden un daher rot bleiben?
Ja bei mir auch
@Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ich habe sowohl in WS View als auch in der Scriptconfig 16 s Pollzeit eingestellt, bekomme die Werte aber stets alle 32 s.
Ist nicht tragisch aber ich hätte Aktualisierung alle 16 s erwartet.Ist mir auch schon aufgefallen, unter 30 s geht nichts
Die verwendbaren Wetterdienste aus WS View bekommen die Daten alle 60 s übermittelt - da haben wir zumindest einen Vorteil -
@Latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ist mir auch schon aufgefallen, unter 30 s geht nichts
Die verwendbaren Wetterdienste aus WS View bekommen die Daten alle 60 s übermittelt - da haben wir zumindest einen Vorteil
Ja und vor allem ist der Weg der Daten viel kürzer und die Protokollierung ausfallsicherer. -
@Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ja und vor allem ist der Weg der Daten viel kürzer und die Protokollierung ausfallsicherer.
ABSOLUT !!!
-
@Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ist es normal dass Werte der Datenpunkte im Object view nicht bestätigt werden un daher rot bleiben?
Ja. Der Simple-RESTful-Adapter kann beim Bulk-Update kein Ack=true setzen, dass geht nur beim Schreiben einzelner Datenpunkte. 15 Werte schreiben mit Sicherheitsverzögerung = 20 Sekunden ... nicht gerade prickelnd.
@Rushmed sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Ist nicht tragisch aber ich hätte Aktualisierung alle 16 s erwartet.
Ich ehrlich gesagt auch. Anscheinend kann man zwar 16 Sekunden einstellen, sie schickt aber wohl nur im 30 Sekundentakt. Ich ziehe vom Poll-Intervall 5 Sekunden ab = das Skript macht 11 Sekunden gar nix, dann startet der "nc" und wartet auf ein Datenpaket welches nun nach 5 Sekunden eintrudeln müsste.
Könnt es mal auf 16 Sekunden stehen lassen, Skript stoppen (pkill -9 wetterstation.*), nc mittels nc -lv xxxx (xxxx=Port) starten. Wenn ein Paket angekommen ist Sekundenanzeige auf der Uhr merken, sofort nc wieder starten --> kommt nächstes Paket nun nach ~ 16 oder 30 Sekunden? -
-
@Rushmed Na supi
Dann ist es wie ich es mir schon dachte. Im 30 Sekunden-Takt genügt ja auch (Batterielebensdauer), aber trotzdem blöd, dass man dann in der APP auch bis zu 16 Sekunden runter stellen kann. Ich ändere dann mal das Mindestintervall auf 30 Sekunden ab. -
Sagt mal was ist denn jetzt die schlauste Art meine Wetterdaten zu loggen wenn ich die immer am Jahresende in Excel aufbereiten will?
Mit dem History Adapter sehe ich da noch keinen Weg. -
@Rushmed
ich verwende den Datenexport von weathercloud, komprimiere je Tag und je Monat und erstelle so die Jahres/Monats/Tagesstatistiken und Verläufe -
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Eine Möglichkeit wäre, wenn es bspw. immer um 23:59, 0:00 oder 0:01 auftritt (also regelmäßig), dass Skript anzuhalten und neu zu starten:
crontab -e
unter "@reboot /home/iobroker/wetterstation.sh &" noch eine weiteren cronjob anfügen:
2 0 * * * pkill -9 wetterstation.* && /home/iobroker/wetterstation.sh &
(wieder darauf achten, dass noch eine Leerzeile folgt!)
speichern --> fertig
also etwa so:> @reboot /home/iobroker/wetterstation.sh & > 2 0 * * * pkill -9 wetterstation.* && /home/iobroker/wetterstation.sh &
/home/iobroker natürlich anpassen, 2 0 * * * ggf. anpassen, bedeutet "jeden Tag um 0:02 Uhr"
funktioniert tadellos, seither keine Verbindungsabbrüche mehr
-
@Latzi Dann kommt das so ins WiKi.
Ich hätte ja noch gerne den Batteriestatus, aber der wird leider nicht übertragen (was sollte auch Wunderground mit diesem "Messwert" anfangen...?).
Mir schwebt aber noch ein DP ala "Kommunikationsfehler" vor. Wenn bspw. 5x hintereinander keine korrekten Messwerte übertragen wurden, wird der DP "true". Dann kann man darauf triggern und in der VIS anzeigen lassen oder was auch immer...
So bekäme man bspw. auch zeitnah leere Batterien mit -
@SBorg gute Idee
@SBorg sagte in [Linux Shell-Skript] WLAN-Wetterstation:
Wenn bspw. 5x hintereinander keine korrekten Messwerte übertragen wurden
PS: Das setzt voraus, dass nc durchlaufen wird, ich bin mir nicht sicher was eigentlich gegen Mitternacht passiert, wenn keine Daten mehr kommen.
-
@Latzi Ich habe da schon ein Konstrukt. Aktuell starte ich 5 Sekunden vor dem Ende des Poll-Intervalls den nc. Kommt ein Datenpaket (egal ob gültig oder nicht) beendet sich der nc von alleine und die empfangenen Daten werden ausgewertet.
Meine neue Idee ist nun, dass ich den nc nur max. 10 Sekunden laufen lasse und dann automatisch beende. Dabei gibt es zwei Szenarien:- es kommt innerhalb der 10 Sekunden ein Datenpaket
- es kommt kein Datenpaket und der nc wird terminiert
Ich prüfe nun das Datenpaket, ob es zB. "/weatherstation/updateweatherstation.php?ID=[Bezeichnung]" enthält, dann dürfte es zumindest ein Datenpaket mit Wetterdaten sein (ev. wird alle zz Stunden xyz geschickt, wann und wohin uns nicht interessiert) und ob es eine Mindestlänge von 400 Zeichen (je nach ID, Passwortlänge + Messwerten sind +/- 430 Zeichen normal) hat.