Import von Ecowitt-Daten in WSWin (WSWin-Version)
Verfasst: 05 Apr 2021, 00:01
Hi!
Fuer alle, die gerne eine WLAN-Wetterstation von Fine Offset/Ecowitt mit WSWin auswerten wollen:
Es gibt da auch eine vom Autor von WSWin (Werner Krenn) erstellte Loesung, die - auf einem NAS oder einem Rapsberry Pi installiert - relativ leicht einzurichten ist und als Daten-Logger fungiert, so das der WSWin-Windows-Rechner nicht rund um die Uhr laufen muss.
Achtung!
Diese Anleitung (?) ist noch nicht explizit durchgetestet - an einigen Stellen ist sie noch etwas vage und an ein/zwei Stellen bin ich mir noch nicht ganz sicher, ob die gewaehlten Einstellungen tatsaechlich optimal sind.
Es dient in erster Linie dazu, Euch das Verfahren im Grundsatz vorzustellen und eine Richtung fuer eigene Versuche vorzugeben.
Wenn ihr also Hinweise zur Verbesserung habt: gerne kommentieren. Wenn ihr konkrete Fragen habt oder nicht weiterkommt: bitte nachfragen.
Ich bin kein WSWin-Experte. Aber gemeinsam mit den hier anwesenden (ausgewiesenen) Experten sollten wir das hinbekommen!
Sollte es bereits eine aehnliche Anleitung fuer den Direktimport von Ecowitt geben: bitte mitteilen - ich muss (und will) das Rad nicht neu erfinden!
Diese Kurzanleitung ueberarbeite/erweitere ich bei entsprechenden Hinweisen von Euch gern.
Ich selbst habe dies einmalig hier durchgespielt (wobei einige Dinge wie Samba-Konfiguration und Webserver bereits gegeben waren).
Produktiv setze ich jedoch FOSHKplugin fuer die Erstellung der CSV-Datei ein.
0. Grundsaetzlicher Ablauf
Als Basis dient die ueber die App WS View einzurichtende Custom Server-Funktion, bei der die Wetterstation regelmaessig die Daten an ein frei definierbares Ziels sendet. Dieses Ziel ist in diesem Fall ein PHP-Script, das - moeglichst im lokalen Netzwerk - auf einem Web-Server abgelegt werden muss.
Das Script nimmt die Daten der Wetterstation - voellig unanhaengig von WSWin - entgegen, rechnet die Werte um und speichert sie in einer Datei wswin.csv, mit deren Aufbau WSWin ganz wunderbar (und von Hause aus!) umgehen kann.
WSWin wird dann dafuer eingerichtet, in einem Netzwerkverzeichnis diese CSV abzuholen und einzulesen. Dies kann einmalig bei jedem Start von WSWin erfolgen oder auch waehrend dessen WSWin aktiv ist.
Wird WSWin geschlossen laufen die Wetterstationsdaten weiterhin im Logger (auf dem Webserver) auf und werden dort gespeichert, bis WSWin sie das naechste Mal wieder abholt.
Ein zeitnahes Beliefern anderer Wetterdienste durch WSWin ist somit natuerlich nicht moeglich - hier waere eine permanente WSWin-Abholung der Daten erforderlich. Diese Loesung dient primaer der Zurverfuegungstellung der Wetterdaten an WSWin zur Auswertung/Analyse der Daten.
Wenn externe Ziele mit den Daten versorgt werden sollen, waere eine geeignetere Loesung dafuer der Betrieb von weewx oder FOSHKplugin auf einem stromsparenden Minicomputer wie dem Raspberry Pi (oder - aus Kostengruenden eher suboptimal - der dauerhafte 24/7 Betrieb von WSWin).
1. Download, Kopieren und Anpassen des Scriptes
Das Script ecowitt.php befindet sich in der ZIP-Datei ecowitt.zip - zu finden im Userbereich auf der WSWin-Downloadseite. Zum Download sind Benutzername und Passwort aus der Bestellbestaetigung Eurer WSWin-Lizens noetig,
Dieses Script gehoert dann auf den eigenen Webserver, am Besten in einem eigenen Unterverzeichnis, da man dieses Verzeichnis als Samba-Share freigeben muss. Sonst werden zwar die Daten gespeichert, WSWin kann auf diese jedoch nicht zugreifen.
Je nach Webserverkonfiguration kann der Pfad anders aussehen. Ich empfehle jedoch bei einer "normalen" Apache-Installation, das Script im Ordner /var/www/html/ecowitt/ abzulegen.
Die Zugriffsrechte des Verzeichnisses wie auch der PHP-Datei sollten denen der anderen Webserver-Dateien entsprechen - vermutlich mit Eigentuemer www-data:www-data und Attribut 644.
Im Script sind nur wenige Konfigurationsaenderungen vorzunehmen: in Zeile 90-121 sind alle Sensoren, die man im Einsatz hat, mit einer 1 zu versehen und alle anderen mit einer 0 zu deaktivieren.
2. Konfiguration der Wetterstation per WS View-App
Nach dem Start der App WS View (Android/iOS) geht man links oben auf Menu und dann weiter auf Device List. Dort werden saemtliche erkannte Wetterstationen zur Auswahl gestellt.
Dort waehlt man durch Antippen die gewuenschte Wetterstation aus.
Bei einer Konsolen-losen Station wie dem DP1500/GW1000 oder der WH2600Pro WIFI/WH2650 sieht man nun die Live-Daten. Hier muss erst durch ein Antippen von More oben rechts und der Auswahl Weather Services die Konfigurationsseite fuer die Wetterdienste aufgerufen werden.
Bei der HP1000SE Pro/WH2551C und vermutlich auch den anderen Stationen mit einer Konsole steht man bereits im Konfigurationsmenue fuer die Wetterdienste.
Oben rechts mit Next klickt man sich so lange durch (viermal), bis Customized als Ueberschrift ausgegeben wird.
Hier wird das benutzerdefinierte Ziel fuer den Versand der Wetterdaten konfiguriert:
Enable
Typ: Ecowitt
Server: der Name oder die IP-Adresse des Webservers, auf dem das PHP-Script abgelegt ist - Achtung! Ohne http:// und ohne weitere Pfadangabe eintragen
Path: das Verzeichnis in dem auf diesem Server die ecowitt.php liegt sowie der Name der php-Datei selbst - in meinem Beispiel /ecowitt/ecowitt.php
Port: 80
Upload Interval: beliebig - alle x Sekunden sendet die Station die Daten an das Ziel
Mit einem Klick auf Save wird diese Konfiguration in der Wetterstation gespeichert. Im eingetragenen Intervall sendet nun die Station die Daten im Ecowitt-Format an das PHP-Script auf der angegebenen Adresse.
Bitte beachten: eine Station von Fine Offset/Ecowitt hat nur genau EIN frei definierbares Weiterleitungsziel. Ist dieses bereits anderweitig in Gebrauch kann die hier vorgeschlagene Loesung nicht zum Einsatz kommen. Es gaebe zwar die Moeglichkeit, aus dem einen Weiterleitungsziel 50 zu machen. Doch dann koennte man auch gleich ganz auf die hier beschriebene Loesung verzichten und auch die Erzeugung der WSWin-CSV durch FOSHKplugin erledigen lassen.
3. Samba-Freigabe erzeugen
Ich setze hier voraus, das es bereits einen konfigurierten Samba-Server auf dem Host, auf dem der Webserver laeuft, gibt und wir nur eine neue Freigabe erzeugen muessen.
Theoretisch sollte es moeglich sein, durch Anpassung im php-Script das Zielverzeichnis der wswin.csv vorzugeben. Vermutlich muss man dazu nur den Eintrag in der php-Datei von "." auf das Homedirectory eines bekannten Nutzers aendern.
Dies wird jedoch ziemlich sicher in Rechteprobleme muenden, denn der ausfuehrende Nutzer des Webservers darf vermutlich keine Dateien im Home-Verzeichnis eines anderen Nutzers ablegen. Das ist gut so und auch aenderbar. Aber eben - gerade fuer den wenig geuebten Admin - durchaus anspruchsvoll und fehlertraechtig.
Daher habe ich das nicht weiter verfolgt und einfach das Verzeichnis ecowitt als Freigabe in der smb.conf definiert:
Unterhalb der letzten konfigurierten Freigabe erzeugen wir eine neue Freigabe:
Nach einem Neustart des Samba-Servers sollte die Freigabe ueber das Netzwerk mit \\ipadresse\WSWinData erreichbar (und beschreibbar) sein.
WSWin loescht die CSV-Datei nach dem erfolgreichen Einlesen. Daher benoetigt der angemeldete Nutzer in diesem Verzeichnis ebenfalls Schreibrechte.
Man sollte sich jedoch der Gefahren dieses Vorgehens bewusst sein!
In einem lokalen Netzwerk - ohne das von draussen auf den Webserver zugegriffen werden kann - sehe ich die Gefahren jedoch als nicht so schwerwiegend an.
4. Anpassungen im WSWin zum automatischen Einlesen vornehmen
Zur Einrichtung der automatischen Dateiueberwachung im WSWin sind folgende Einstellungen vorzunehmen:
Wetterstation/Interface/Dateiueberwachung:
Datei waehlen - hier muss die Datei wswin.csv auf ein vorher gemapptes Laufwerk auf unsere Freigabe \\ipadresse\WSWinData ausgewaehlt werden
vorher Daten konvertieren - aktivieren/Haken reinsetzen
Ueberwachung aktiv - aktivieren
10 Sekunden - eintragen
Datei/Optionen/Einstellungen
Aufzeichnung bei Start automatisch aktivieren - aktivieren
dabei Daten automatisch importieren/konvertieren - aktivieren
Datei/Optionen/Warnung/Pause:
bei Pause: 5m aktivieren - damit erfolgt nur alle 5 Minuten der Abruf der CSV-Datei
Nach einem Beenden und erneuten Start von WSWin sollten die Daten aus der wswin.csv auf der Freigabe \\ipadresse\WSWinData im 5-Minuten-Intervall automatisch eingelesen werden.
Soweit fuers Erste,
Frohe Ostern,
Oliver
Fuer alle, die gerne eine WLAN-Wetterstation von Fine Offset/Ecowitt mit WSWin auswerten wollen:
Es gibt da auch eine vom Autor von WSWin (Werner Krenn) erstellte Loesung, die - auf einem NAS oder einem Rapsberry Pi installiert - relativ leicht einzurichten ist und als Daten-Logger fungiert, so das der WSWin-Windows-Rechner nicht rund um die Uhr laufen muss.
Achtung!
Diese Anleitung (?) ist noch nicht explizit durchgetestet - an einigen Stellen ist sie noch etwas vage und an ein/zwei Stellen bin ich mir noch nicht ganz sicher, ob die gewaehlten Einstellungen tatsaechlich optimal sind.
Es dient in erster Linie dazu, Euch das Verfahren im Grundsatz vorzustellen und eine Richtung fuer eigene Versuche vorzugeben.
Wenn ihr also Hinweise zur Verbesserung habt: gerne kommentieren. Wenn ihr konkrete Fragen habt oder nicht weiterkommt: bitte nachfragen.
Ich bin kein WSWin-Experte. Aber gemeinsam mit den hier anwesenden (ausgewiesenen) Experten sollten wir das hinbekommen!
Sollte es bereits eine aehnliche Anleitung fuer den Direktimport von Ecowitt geben: bitte mitteilen - ich muss (und will) das Rad nicht neu erfinden!
Diese Kurzanleitung ueberarbeite/erweitere ich bei entsprechenden Hinweisen von Euch gern.
Ich selbst habe dies einmalig hier durchgespielt (wobei einige Dinge wie Samba-Konfiguration und Webserver bereits gegeben waren).
Produktiv setze ich jedoch FOSHKplugin fuer die Erstellung der CSV-Datei ein.
0. Grundsaetzlicher Ablauf
Als Basis dient die ueber die App WS View einzurichtende Custom Server-Funktion, bei der die Wetterstation regelmaessig die Daten an ein frei definierbares Ziels sendet. Dieses Ziel ist in diesem Fall ein PHP-Script, das - moeglichst im lokalen Netzwerk - auf einem Web-Server abgelegt werden muss.
Das Script nimmt die Daten der Wetterstation - voellig unanhaengig von WSWin - entgegen, rechnet die Werte um und speichert sie in einer Datei wswin.csv, mit deren Aufbau WSWin ganz wunderbar (und von Hause aus!) umgehen kann.
WSWin wird dann dafuer eingerichtet, in einem Netzwerkverzeichnis diese CSV abzuholen und einzulesen. Dies kann einmalig bei jedem Start von WSWin erfolgen oder auch waehrend dessen WSWin aktiv ist.
Wird WSWin geschlossen laufen die Wetterstationsdaten weiterhin im Logger (auf dem Webserver) auf und werden dort gespeichert, bis WSWin sie das naechste Mal wieder abholt.
Ein zeitnahes Beliefern anderer Wetterdienste durch WSWin ist somit natuerlich nicht moeglich - hier waere eine permanente WSWin-Abholung der Daten erforderlich. Diese Loesung dient primaer der Zurverfuegungstellung der Wetterdaten an WSWin zur Auswertung/Analyse der Daten.
Wenn externe Ziele mit den Daten versorgt werden sollen, waere eine geeignetere Loesung dafuer der Betrieb von weewx oder FOSHKplugin auf einem stromsparenden Minicomputer wie dem Raspberry Pi (oder - aus Kostengruenden eher suboptimal - der dauerhafte 24/7 Betrieb von WSWin).
1. Download, Kopieren und Anpassen des Scriptes
Das Script ecowitt.php befindet sich in der ZIP-Datei ecowitt.zip - zu finden im Userbereich auf der WSWin-Downloadseite. Zum Download sind Benutzername und Passwort aus der Bestellbestaetigung Eurer WSWin-Lizens noetig,
Dieses Script gehoert dann auf den eigenen Webserver, am Besten in einem eigenen Unterverzeichnis, da man dieses Verzeichnis als Samba-Share freigeben muss. Sonst werden zwar die Daten gespeichert, WSWin kann auf diese jedoch nicht zugreifen.
Je nach Webserverkonfiguration kann der Pfad anders aussehen. Ich empfehle jedoch bei einer "normalen" Apache-Installation, das Script im Ordner /var/www/html/ecowitt/ abzulegen.
Die Zugriffsrechte des Verzeichnisses wie auch der PHP-Datei sollten denen der anderen Webserver-Dateien entsprechen - vermutlich mit Eigentuemer www-data:www-data und Attribut 644.
Im Script sind nur wenige Konfigurationsaenderungen vorzunehmen: in Zeile 90-121 sind alle Sensoren, die man im Einsatz hat, mit einer 1 zu versehen und alle anderen mit einer 0 zu deaktivieren.
2. Konfiguration der Wetterstation per WS View-App
Nach dem Start der App WS View (Android/iOS) geht man links oben auf Menu und dann weiter auf Device List. Dort werden saemtliche erkannte Wetterstationen zur Auswahl gestellt.
Dort waehlt man durch Antippen die gewuenschte Wetterstation aus.
Bei einer Konsolen-losen Station wie dem DP1500/GW1000 oder der WH2600Pro WIFI/WH2650 sieht man nun die Live-Daten. Hier muss erst durch ein Antippen von More oben rechts und der Auswahl Weather Services die Konfigurationsseite fuer die Wetterdienste aufgerufen werden.
Bei der HP1000SE Pro/WH2551C und vermutlich auch den anderen Stationen mit einer Konsole steht man bereits im Konfigurationsmenue fuer die Wetterdienste.
Oben rechts mit Next klickt man sich so lange durch (viermal), bis Customized als Ueberschrift ausgegeben wird.
Hier wird das benutzerdefinierte Ziel fuer den Versand der Wetterdaten konfiguriert:
Enable
Typ: Ecowitt
Server: der Name oder die IP-Adresse des Webservers, auf dem das PHP-Script abgelegt ist - Achtung! Ohne http:// und ohne weitere Pfadangabe eintragen
Path: das Verzeichnis in dem auf diesem Server die ecowitt.php liegt sowie der Name der php-Datei selbst - in meinem Beispiel /ecowitt/ecowitt.php
Port: 80
Upload Interval: beliebig - alle x Sekunden sendet die Station die Daten an das Ziel
Mit einem Klick auf Save wird diese Konfiguration in der Wetterstation gespeichert. Im eingetragenen Intervall sendet nun die Station die Daten im Ecowitt-Format an das PHP-Script auf der angegebenen Adresse.
Bitte beachten: eine Station von Fine Offset/Ecowitt hat nur genau EIN frei definierbares Weiterleitungsziel. Ist dieses bereits anderweitig in Gebrauch kann die hier vorgeschlagene Loesung nicht zum Einsatz kommen. Es gaebe zwar die Moeglichkeit, aus dem einen Weiterleitungsziel 50 zu machen. Doch dann koennte man auch gleich ganz auf die hier beschriebene Loesung verzichten und auch die Erzeugung der WSWin-CSV durch FOSHKplugin erledigen lassen.
3. Samba-Freigabe erzeugen
Ich setze hier voraus, das es bereits einen konfigurierten Samba-Server auf dem Host, auf dem der Webserver laeuft, gibt und wir nur eine neue Freigabe erzeugen muessen.
Theoretisch sollte es moeglich sein, durch Anpassung im php-Script das Zielverzeichnis der wswin.csv vorzugeben. Vermutlich muss man dazu nur den Eintrag
Code: Alles auswählen
$txt_dir_csv = "."
Dies wird jedoch ziemlich sicher in Rechteprobleme muenden, denn der ausfuehrende Nutzer des Webservers darf vermutlich keine Dateien im Home-Verzeichnis eines anderen Nutzers ablegen. Das ist gut so und auch aenderbar. Aber eben - gerade fuer den wenig geuebten Admin - durchaus anspruchsvoll und fehlertraechtig.
Daher habe ich das nicht weiter verfolgt und einfach das Verzeichnis ecowitt als Freigabe in der smb.conf definiert:
Unterhalb der letzten konfigurierten Freigabe erzeugen wir eine neue Freigabe:
Code: Alles auswählen
[WSWinData]
path=/var/www/html/ecowitt
write list = @users
read only = No
create mask = 0770
WSWin loescht die CSV-Datei nach dem erfolgreichen Einlesen. Daher benoetigt der angemeldete Nutzer in diesem Verzeichnis ebenfalls Schreibrechte.
Man sollte sich jedoch der Gefahren dieses Vorgehens bewusst sein!
In einem lokalen Netzwerk - ohne das von draussen auf den Webserver zugegriffen werden kann - sehe ich die Gefahren jedoch als nicht so schwerwiegend an.
4. Anpassungen im WSWin zum automatischen Einlesen vornehmen
Zur Einrichtung der automatischen Dateiueberwachung im WSWin sind folgende Einstellungen vorzunehmen:
Wetterstation/Interface/Dateiueberwachung:
Datei waehlen - hier muss die Datei wswin.csv auf ein vorher gemapptes Laufwerk auf unsere Freigabe \\ipadresse\WSWinData ausgewaehlt werden
vorher Daten konvertieren - aktivieren/Haken reinsetzen
Ueberwachung aktiv - aktivieren
10 Sekunden - eintragen
Datei/Optionen/Einstellungen
Aufzeichnung bei Start automatisch aktivieren - aktivieren
dabei Daten automatisch importieren/konvertieren - aktivieren
Datei/Optionen/Warnung/Pause:
bei Pause: 5m aktivieren - damit erfolgt nur alle 5 Minuten der Abruf der CSV-Datei
Nach einem Beenden und erneuten Start von WSWin sollten die Daten aus der wswin.csv auf der Freigabe \\ipadresse\WSWinData im 5-Minuten-Intervall automatisch eingelesen werden.
Soweit fuers Erste,
Frohe Ostern,
Oliver