Installation Teil 2 - SBorg2014/WLAN-Wetterstation GitHub Wiki

Einrichtung des Skriptes auf dem Linux-Client

Wir kopieren die drei Dateien wetterstation.sh, wetterstation.sub und wetterstation.conf aus dem entpackten Package mittels WinSCP in ein Verzeichnis auf dem Linux-Client. Dafür eignet sich bspw. ein "home"-Verzeichnis (wir nehmen mal /home/iobroker(*) an). Die wetterstation.sh muss "ausführbar" sein (WinSCP) oder per Putty: chmod +x wetterstation.sh im /home/iobroker - Verzeichnis ausführen.

(*) Dies dient nur als Beispiel. Bei einem Raspberry könnte dies zB. /home/pi sein, oder wenn ihr unter dem Usernamen edgar arbeitet/euch einloggt, dann eben /home/edgar. Ihr müsst nur die Rechte an diesem Verzeichnis (mit-)besitzen.


Konfiguration des Skriptes:

Um die Konfiguration anpassen zu können ist die Datei wetterstation.conf zu editieren (z.B. mittels "nano"): nano wetterstation.conf

Wichtig: Möchte man später das Addon Wetterstation-Statistik nutzen, so müssen die Datenpunkte unter javascript.x oder 0_userdata.x (x = Instanz; normalerweise "0") verbleiben, da nur hier der Javascript-Adapter das anlegen von Ordnern/Datenpunkten zulässt! Auch die Bezeichnungen wie bspw. "Aussentemperatur" der Datenpunkte dürfen nicht geändert werden, da dass Addon genau auf diese Bezeichnung später zugreift.

Folgende Parameter sind den eigenen Gegebenheiten einzustellen (Parameter in Kleinschrift sind eher nur für den temporären Einsatz gedacht):

  • debug: Ausgabe der Messwerte, mögliche Parameter sind true oder false, default false. Für den Erstversuch hilfreich, um zu sehen ob die Daten korrekt ankommen (gleiche Funktion wie der Aufruf mittels --debug). Bei true wird die Ausführung des Skriptes aber nach einem Durchlauf abgebrochen!
  • RESET_KOMFEHLER: Verhalten des Datenpunktes "Kommunikationsfehler" bei einem Problem, mögliche Parameter sind true oder false, default false. Soll der Datenpunkt automatisch resettet werden? siehe auch WiKi
  • logging: schreibt die empfangenen RAW-Werte der Wetterstation in die Datei YYYYMMTT_station.log im aktuellen Installationsverzeichnis. Mögliche Parameter sind true oder false, default false.
  • IPP: IP-Adresse des ioBrokers samt Port des Simple-RESTful Adapters. Format ist xxx.xxx.xxx.xxx:port_nr (z.B. 192.168.1.100:8087)
  • WS_PROTOKOLL: je nach gewähltem Protokoll in der APP bzw. Nutzung per eigenem DNS-Server (Protokoll #9)
  • ANZAHL_WHxxx: Anzahl der benutzten WH31 Zusatzsensoren
  • ANZAHL_DPxxx: Anzahl der benutzten DP40/50/60/70/100/200/250/300 Zusatzsensoren
  • WEB: HTTP oder HTTPS, je nachdem ob die Übertragung der Daten (un)verschlüsselt erfolgen soll. Dies muss natürlich dann auch im Simple-RESTful Adapter des ioBrokers aktiviert sein.
  • AUTH_USER / AUTH_PASS: Username und Passwort falls die Nutzer-Authentifizierung benutzt werden soll. Sonst einfach leer lassen.
  • WS_PORT: Port an den die Wetterstation sendet. Dies wird in der WS View App eingestellt (Punkt 7 der Einstellungen). Bei Protokoll #9 muss Port-Nummer 80 benutzt werden!
  • WS_POLL: Abfrageintervall der Wetterstation. Hier ist der Wert aus der WS View App zu übernehmen (Punkt 8 der Einstellungen)
  • WS_ID: Name der Wetterstation. Hier ist der Wert aus der WS View App zu übernehmen (Punkt 5 der Einstellungen). Entfällt bei Nutzung des "Ecowitt"-Protokolls
  • PRE_DP: Ort, wo die Datenpunkte mit den Wetterinformationen im ioBroker angelegt werden soll (z.B. javascript.0.Wetterstation oder 0_userdata.0.MeinWetter oä.). Dies ist seitens des ioBrokers nur unter "javascript..." oder "0_userdata..." zulässig!
  • INFLUX_xxx: Protokoll, IP und Port, Bucket, Token und Organisation der InfluxDB. Wird für die Datenpunkte Min-/Max-Aussentemperatur der letzten 24 Stunden, Min-/Max-/Avg-Aussentemperatur vor einem Jahr und meteorologischen Sommer benötigt (diese Datenpunkte bleiben sonst leer).
  • SONNENSCHEIN_TXTFORMAT: in welchem Format die Textanzeige der Sonnenscheindauer erfolgen soll
  • WETTERCOM_ID und WETTERCOM_PW (optional): siehe bei Installation wetter.com
  • OpenSenseMap (optional): siehe bei Installation OpenSenseMap
  • Windy (optional): siehe bei Installation Windy
  • AWEKAS (optional): siehe bei Installation AWEKAS
  • WeatherObservationsWebsite (WOW) (optional): siehe bei Installation WeatherObservationsWebsite

Das war´s auch schon mit der Konfiguration des Skriptes.

Anlegen der Datenobjekte im ioBroker: Wir öffnen wetterstation.js aus dem Paket mit einem Texteditor, kopieren uns den gesamten Inhalt in die Zwischenablage und wechseln zum ioBroker. Dort wählen wir "Skripte" und legen per Klick auf das "+" ein neues Javascript vom Typ "Javascript" an. Speicherort (unter common) und Bezeichnung sind frei wählbar. In dieses leere Skript fügen wir nun den Inhalt der Zwischenablage ein. Falls eine andere Instanz des Javascript-Adapters oder eine andere Datenobjektstruktur benutzt wird/werden soll, muss noch let DP="0_userdata.0.Wetterstation." angepasst (identische Einstellung wie in der wetterstation.conf unter PRE_DP) werden. Falls das Gateway und/oder Zusatzsensoren (DP40/50/60/70/100/200/250/300 bzw. deren WHxxx-Derivate oder andere Typen) benutzt werden muss deren Anzahl nun noch eingetragen werden.

Datenobjekte in ioBroker Nun klicken wir auf "Speichern" und in der linken Liste auf das "rote Playsymbols" bei dem neu angelegtem Skript. Nach ein paar Sekunden können wir dann das Skript durch anklicken des nun "grünen Pausezeichens" wieder stoppen (entsprechende Meldung im Log-Fenster erscheint). Das Skript legt lediglich die Ordnerstruktur und die Datenobjekte an, damit man dies nicht einzeln per Hand erledigen muss 😉 Es muss nicht laufen und wird nicht mehr gebraucht (kann also sogar gelöscht werden).
Wir sind jetzt schon auf der Zielgeraden...

Erster Test: Am einfachsten wird das Script mit der Option --debug gestartet. Wir geben im /home/iobroker-Verzeichnis ein: ./wetterstation.sh --debug
Zuerst wird nun überprüft ob jq, bc und dc auf dem System installiert sind und ggf. nachinstalliert. Danach folgt die Prüfung ob netcat ("nc") korrekt installiert ist (sollte der aktuelle User keine root-Rechte haben, wird die Eingabe des root-Passwortes zum nachinstallieren bzw. ändern der nc-Version nötig).

Es kann beim allerersten Test passieren, dass hier nun eine Fehlermeldung wie parse error: Invalid numeric literal at line 1, column 10 oder ähnliche erscheint. Solange aber (siehe unten) danach Daten im ioBroker stehen, ist trotzdem alles in Ordnung. Dies kann passieren wenn man den ungünstigsten Augenblick beim testen erwischt und dann Daten vom ioBroker/InfluxDB gelesen werden sollen, die aber wegen einer Neueinrichtung/1. Test noch nicht vorliegen können (leider lässt sich der Fehler auch nicht so ohne weiteres abfangen).

Je nachdem wann die Wetterstation das letzte Datenpaket gesendet hat, kann es nun bis zum eingestellten Intervall dauern bis Daten empfangen werden. Im Beispiel sollten also spätestens nach 60 Sekunden ein Datenpaket eintreffen. Dann sollte es in etwa so aussehen:
Ausgabe der Daten mit Debug-Option

Dabei sollte der Block "Temperatur Innen" ... "Zeitstempel" plausible, aktuelle Werte enthalten und im ioBroker unter "0_userdata.x" bzw. "javascript.x" (x=die Instanz unter dem alles läuft) zu finden sein: Datenobjekte in ioBroker

Sofern bis hierhin alles geklappt hat, macht es Sinn die Datenaufbereitung dauerhaft laufen zu lassen. Dazu muss das Skript als Autostart angelegt werden. Vorher noch sicherstellen, dass in der Datei wetterstation.conf der Parameter debug=false gesetzt ist (bei true läuft das Skript nur einmalig!).


Einstellung als Autostart (Möglichkeit #1 per systemd): Sofern möglich sollte diese Variante benutzt werden, da sie wesentlich Anwender freundlicher ist. Mittels ./ws_updater.sh --service geschieht dies automatisch, alternativ per Hand: Wir legen zuerst im Terminalfenster die nötige Datei an sudo nano /etc/systemd/system/wetterstation.service
Diese bekommt folgenden Inhalt:

[Unit]
Description=Service für ioBroker Wetterstation

[Service]
User=
Group=
ExecStart=/home/iobroker/wetterstation.sh

[Install]
WantedBy=multi-user.target

Die Description ist frei wählbar, der Service muss ggf. entsprechend Eurem Pfades angepasst werden, je nach dem wo Ihr das Skript liegen habt. User und Group sind idR. identisch. Hier wird der Name eingetragen unter dem ihr euch einloggt (beim Raspberry zB. standardmäßig pi) Speichern und mittels sudo chmod +x /etc/systemd/system/wetterstation.service ausführbar machen.
Damit das Skript verfügbar ist den Daemon neu laden: sudo systemctl daemon-reload
Damit es beim booten automatisch geladen wird: sudo systemctl enable wetterstation.service

Steuern kann man das Skript dann folgendermaßen:
Start: sudo systemctl start wetterstation
Stop: sudo systemctl stop wetterstation
Neustart (zB. bei Änderungen): sudo systemctl restart wetterstation
Status: systemctl status wetterstation


Einstellung als Autostart (Möglichkeit #2 per cronjob): Wir benutzen im Terminalfenster einen beliebigen Editor (z.B. nano) und bearbeiten den Autostart mit crontab -e (als Benutzer mit root-Rechten) oder sudo crontab -e (falls keine root-Rechte) und erweitern das Dokument zB. ganz am Ende, oder an einer gewünschten Stelle, mit folgenden Zeilen:

@reboot /home/iobroker/wetterstation.sh &
2 0 * * * pkill -9 wetterstation.sh && /home/iobroker/wetterstation.sh &

(/home/iobroker ist das Installationsverzeichnis, ersichtlich in der debug-Ausgabe, wetterstation.sh ist der Name des Skriptes). Die zweite Zeile beendet und startet jede Nacht um 0:02 Uhr das Skript neu.

Wichtig ist hierbei, falls es am Ende eingefügt wurde, dass nach dem & noch mindestens eine Leerzeile folgt, sonst laufen sämtliche cronjobs nicht mehr!

Nach dem Speichern der Datei und einem Neustart des Linux-Clients läuft die Datenübertragung automatisch und die Wetterdaten werden im eingestellten Zeitintervall übermittelt (dies kann im Datenpunkt Zeitstempel überprüft werden). Kleiner Hinweis am Rande: Es funktioniert nicht das Skript in einer Putty-Session dauerhaft zu starten. Solange die Sitzung aktiv ist läuft es zwar, mit beenden der Sitzung wird dann aber auch das Skript beendet...


Bei etwaigen Fragen oder Problemen lohnt ein Blick in die FAQ
Für Statistik-Freaks lohnt sich eventuell auch das Addon Wetterstation-Statistik
Wer seine Daten auf OpenSenseMap bereitstellen möchte, dem wird hier geholfen: OpenSenseMap-Installation
Wer seine Daten auf Windy bereitstellen möchte, dem wird hier geholfen: Windy-Installation
Wer seine Daten auf Wetter.com bereitstellen möchte, dem wird hier geholfen: wetter.com-Installation
Wer seine Daten auf AWEKAS.at bereitstellen möchte, dem wird hier geholfen: AWEKAS.at-Installation
Wer seine Daten auf WeatherObservationsWebsite bereitstellen möchte, dem wird hier geholfen: WeatherObservationsWebsite-Installation

⚠️ **GitHub.com Fallback** ⚠️