Import von Ecowitt-Daten in WSWin (WSWin-Version)

Für Geräte von froggit
Antworten
Benutzeravatar
olicat
Offline
Beiträge: 2018
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 28 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Import von Ecowitt-Daten in WSWin (WSWin-Version)

#1

Beitrag von olicat »

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

Code: Alles auswählen

$txt_dir_csv = "."
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:

Code: Alles auswählen

[WSWinData]
        path=/var/www/html/ecowitt
        write list = @users
        read only = No
        create mask = 0770
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
Benutzeravatar
wneudeck
Offline
Beiträge: 919
Registriert: 27 Nov 2020, 23:23
Wohnort: Donauwörth
Hat sich bedankt: 2 mal
Danksagung erhalten: 73 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (WSWin-Version)

#2

Beitrag von wneudeck »

Hallo,
da hier die Dateiüberwachung von WSWIN angesprochen wird, stelle ich mal einen Link zu einem meiner diversen Videos ein, die sich damit befassen. Das mag vielleicht die Kurzanleitung von Oliver etwas ergänzen:
https://www.pc-wetterstation.de/filme/w ... achung.mp4
Pitt
Offline
Beiträge: 93
Registriert: 08 Dez 2020, 14:16
Danksagung erhalten: 7 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (WSWin-Version)

#3

Beitrag von Pitt »

Hallo Oliver

Endlich mal eine "idiotensichere" Erklärung zur Einrichtung. Habe das auch schon so ähnlich nebenher laufen. Da ich nicht weiß, ob Wswin auf einem Rechner in mehreren Instanzen laufen kann, läuft das bei mir nur hin und wieder zur Datensicherung der GW1000 auf einem anderen Rechner. Kann mich nicht von meiner WS2500 trennen, deshalb läuft die weiter und versorgt noch einige Dienste und unseren örtliche Radiosender.
Da auf meinem etwas zugeknöptem Server kein Samba läuft, gehe ich den Umweg über eine .bat, welche uber die Zeitsteuerung2 aufgerufen wird und per wget die erzeugte wswin.csv vom Server abruft, solange der Rechner läuft.
Funktioniert tadellos und ist sicherheitstechnisch komplett unbedenklich.
Benutzeravatar
Tex
Offline
Beiträge: 383
Registriert: 07 Dez 2020, 18:32
Wohnort: Woldegk
Hat sich bedankt: 19 mal
Danksagung erhalten: 67 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (WSWin-Version)

#4

Beitrag von Tex »

....ob Wswin auf einem Rechner in mehreren Instanzen laufen kann,
Eindeutig, Ja!
Pitt
Offline
Beiträge: 93
Registriert: 08 Dez 2020, 14:16
Danksagung erhalten: 7 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (WSWin-Version)

#5

Beitrag von Pitt »

Gut zu wissen. Wollte kein Risiko eingehen und mir damit die Installation zerstören.
Benutzeravatar
olicat
Offline
Beiträge: 2018
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 28 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (WSWin-Version)

#6

Beitrag von olicat »

Hi!
Da auf meinem etwas zugeknöptem Server kein Samba läuft, gehe ich den Umweg über eine .bat, welche uber die Zeitsteuerung2 aufgerufen wird und per wget die erzeugte wswin.csv vom Server abruft, solange der Rechner läuft.
Das ist ein sehr guter Hinweis, denn ein externer Webserver bei einem Hoster, der auch PHP unterstuetzt ist relativ leicht eingerichtet und haeufig bereits vorhanden.

Dort dann das PHP-File hinterlegt sorgt zumindest dafuer, dass die Daten gespeichert werden.
Der Abruf der Daten kann dann jederzeit per Batchdatei mit wget oder curl (oder auch per FTP) erfolgen, ohne sich Gedanken ueber Samba oder das lokale Netzwerk machen zu muessen.
Auf einem Notebook muesste man dazu nichtmal im lokalen Netzwerk sein - eine Internetverbindung reicht aus.

Einzig der belegte Speicherplatz wird auf dem Server immer groesser - aber das ist bei der Datenmenge, die die Wetterstation sendet, vermutlich zu vernachlaessigen.
Und natuerlich koennte jeder, der den genauen Link der Datei kennt (INFILE), die Daten der Wetterstation dort abrufen.

Diese Batchdatei koennte etwa im Autostart von Windows abgelegt werden - dann wuerde der Abruf einmalig nach Start des Rechners erfolgen.
Man koennte auch eine WSWinStart.bat erzeugen, die erst den Abruf der Daten erledigt und anschliessend WSWin startet, was dann sofort Zugriff auf die neuen Daten haette.
Oder man nutzt tatsaechlich die Aufgabenplanung (Scheduler) - der das auch im Intervall erledigen kann.

Eine Batchdatei zum Abruf koennte dann so:

Code: Alles auswählen

@echo off
rem get wswin.csv created by ecowitt.php from remote server
rem wget for Windows: http://gnuwin32.sourceforge.net/packages/wget.htm

rem INFILE - where to find the wswin.csv on remote server
set INFILE=http://192.168.15.100/WSWin/wswin.csv

rem OUTFILE - where to save the wswin.csv in local file system
set OUTFILE=C:\WSWIN\IMPORT\WSWIN.CSV

rem if you use wget:
wget -q -O %OUTFILE% %INFILE%
oder bei Einsatz von curl so:

Code: Alles auswählen

@echo off
rem get wswin.csv created by ecowitt.php from remote server
rem curl for Windows: https://curl.se/windows/

rem INFILE - where to find the wswin.csv on remote server
set INFILE=http://192.168.15.100/WSWin/wswin.csv

rem OUTFILE - where to save the wswin.csv in local file system
set OUTFILE=C:\WSWIN\IMPORT\WSWIN.CSV

rem for curl:
curl -s -o %OUTFILE% %INFILE%
aussehen.
Jeweils sollte INFILE und OUTFILE auf die eigenen Gegebenheiten angepasst werden. Dazu einfach die tatsaechliche URL (mit http oder https) bzw. den Ort der von WSWin abgefragten wswin.csv eintragen/aendern.

Ob man wget oder curl nutzt, ist Geschmackssache. Beide Versionen habe ich hier getestet.

Gruss, Oliver
Antworten