Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

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

Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#1

Beitrag von olicat »

Hallo!

Wie ich im Beitrag hier schon schrieb, ist das Einlesen von Ecowitt-Daten in WSWin sehr einfach, wenn man einen Webserver zur Verfuegung hat.
Dafuer ist keine X-CSV-Erstellung noetig. Das CSV-Format wird nativ durch WSWin unterstuetzt.

Dazu hatte ich im Ursprung die Loesung von Werner Krenn empfohlen.
Diese Loesung hat jedoch ein paar kleinere Einschraenkungen, die mich dazu veranlassten, selbst ein paar Zeilen php zusammenzustricken.
Die Vorteile sind:
- da Fokus auf Erzeugung eines WSWin-CSVs liegt (mehr macht das Script nicht), deutlich uebersichtlicher
- keine umrechnungsbedingten fehlerhaften Werte bei leeren Sensorwerten (etwa -17.8 bei den Temperaturwerten)
- keine Sensorkonfiguration noetig - es wird ein statisches CSV-File mit allen von WSWin verarbeitbaren Werten erzeugt
- verarbeitet auch Daten, die per WU-Protokoll (etwa von Bresser-Stationen) eingeliefert werden
- verarbeitet die Daten mehrerer unterschiedlicher Stationen - fuer jede Station wird ein eigenes CSV erzeugt
- durch PASSKEY- bzw. User/Passwort-Abfrage sicherer - nicht jeder kann seine Daten einliefern und ggf. die WSWin-Daten "stoeren"
- Daten mit einem aelteren Zeitstempel werden verworfen und nicht ans CSV angefuegt
- Integration von WN35 (Blattfeuchte) und WN34 (Bodentemperatur)

Es werden WSWin-kompatible CSV-Dateien erzeugt, die folgenden Aufbau haben:

Code: Alles auswählen

;;1;17;133;2;18;35;36;45;134;42;41;3;19;4;20;5;21;6;22;7;23;8;24;29;30;31;32;25;26;27;28;37;13;14;15;16
Diese Dateien koennen durch eine Batchdatei bei Start des Rechners oder auch per Aufgabenplanung automatisch im Intervall per wget/curl abgerufen und in einem durch WSWin zu ueberwachenden Verzeichnis abgelegt werden.
Selbtverstaendlich lassen sich die CSV-Dateien aber auch auf anderen Wegen wie Samba, FTP, NFS etc. zum WSWin-Rechner uebertragen.
Die Verarbeitung durch WSWin erfolgt dann durch die Funktion "automatische Dateiueberwachung" tatsaechlich automatisch.

Einrichtung:
Fuer den Empfang im Ecowitt-Format ist im php-Script eigentlich nur die Variable

Code: Alles auswählen

  $EW_allowed = [
                  "000102030405060708090A0B0C0D0E0F",
                ];
anzupassen. Der PASSKEY der eigenen Station sollte anstatt der hier als Platzhalter vorgesehenen "000102030405060708090A0B0C0D0E0F" eingetragen werden.
Kennt man den PASSKEY der eigenen Station nicht, kann man auch in der durch das php-Script erzeugten Datei unknownsources.txt nachsehen - dort werden alle nicht autorisierten Einlieferungsversuche protokolliert.

Die grundsaetzliche Inbetriebnahme gliedert sich also in diese Punkte:
1. Einrichten der custom server-Funktion an der Wetterstation
2. Ablegen des Scriptes in einem Verzeichnis /wswin/
3. pruefen der unknownsources.txt auf dem Webserver und uebertragen des PASSKEY ...
4. ... in $EW_allowed (copy&paste)
5. Batchdatei zum Abholen der CSV-Datei einrichten
6. WSWin fuer autom. Dateiueberwachung konfigurieren

Bekanntes Problem:
Wenn der http-Server automatisch per 301-redirect eine Umleitung nach https macht, kommen die Nutzdaten nicht beim Script an!
Fuer den Sender sieht eigentlich alles ok aus, nur werden seine Daten am Server eben nicht empfangen.
Fuer das Verzeichnis, in dem die php-Datei liegt muss die 301-Umleitung abgeschaltet werden!

Die Nutzung des Ports 443 per WS View funktioniert bei den meisten Webserverkonfigurationen leider auch nicht, da die Station kein SSL kann und somit versucht, plain http auf dem fuer SSL vorgesehenen Port 443 zu senden, was der Webserver meist mit der Fehlermeldung 400 - Bad request verweigert.

Wenn die Umleitung per .htaccess-Datei erfolgt, kann in dieser Datei das Verzeichnis, in dem die php-Datei liegt, einfach von der Regel ausgenommen werden.
Als Idee so etwas in der Art (ich habe leider keine passende Vorlage zum Testen hier):

Code: Alles auswählen

RewriteEngine on
RewriteRule !^ausnahme($|/) http://example.com%{REQUEST_URI} [L,R=301]
oder

Code: Alles auswählen

RedirectMatch 301 ^/(?!ausnahme).* http://www.machart-studios.de
Wer eine allgemeingueltige Loesung per .htaccess hat oder kennt - bitte mitteilen.
Danke!

Die letzte Version des Scriptes laesst sich hier downloaden.
Im ZIP enthalten sind das PHP-Script selbst, eine Anleitung sowie eine Beispiel-CSV und Batch-Dateien fuer den Abruf der Daten.

Changelog:

Code: Alles auswählen

17.10.22 v0.3
         nutzt drain_piezo als dailyrainin wenn es ausschliesslich einen WS90-Sensor gibt
30.01.22 v0.2a
         da einige Web-Hoster PHP-Funktionen verbieten (etwa tail) erfolgt nun eine alternative Pruefung des Einlieferungsintervalls
28.01.22 v0.2
         Intervallpruefung kann mit $mininterval = 0 abgeschaltet werden
19.08.21 v0.1b - Achtung! moegliches Kompatibilitaetsproblem mit aelteren Daten
         Werte der Blattfeuchtesensoren (WN35) werden von 0..99 nach 0..15 umgerechnet
         Ausgabe-CSV enthaelt nun Komma als Dezimalpunkt fuer bessere Excel-Kompatibilitaet ($useKomma=True)
19.04.21 Anpassungen an den enthaltenen Batchdateien
         nun mit Unterstuetzung von Leerzeichen im Ausgabedateinamen und autom. Erstellung des Ausgabeverzeichnisses
11.04.21 Anpassung der wget-data.bat zur Vermeidung von Problemen bei SSL
10.04.21 v0.1a - Fehlerbereinigung, Aufraeumarbeiten
09.04.21 v0.1 - initial
Gruss, Oliver
Zuletzt geändert von olicat am 17 Okt 2022, 11:01, insgesamt 7-mal geändert.
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#2

Beitrag von olicat »

Hi!

Eine neue Version des php-Scriptes ist im ersten Beitrag enthalten.

Schoenes Wochenende!

Oliver
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#3

Beitrag von olicat »

Hi!

Bei Einsatz der wget-data.bat aus dem Paket des ersten Beitrags konnte es passieren, dass die CSV-Datei nicht abgeholt wurde, weil wget den Download per SSL von einer Seite mit selbstsigniertem Zertifikat unterband.
Ich habe das Batch-File entsprechend angepasst, so das dies nun klappen sollte.
Die aktualisierte Fassung findet sich im ZIP-File des ersten Beitrags.
Danke an Pitt fuer den Hinweis.

Ansonsten kann das aber auch ohne erneutem Download von Euch selbst geaendert werden.
Im Batchfile wget-data.bat muss einfach die Zeile

Code: Alles auswählen

wget -q -O %OUTFILE% %INFILE%
durch

Code: Alles auswählen

wget --no-check-certificate -q -O %OUTFILE% %INFILE%
ersetzt werden.

Schoenen Sonntag!

Oliver
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#4

Beitrag von olicat »

Hi!

Ich habe im ZIP-Paket des ersten Beitrags nun nochmal die beiden Batchdateien angepasst.
Jetzt darf der Ausgabedateiname OUTFILE auch Leerzeichen enthalten und ein nicht existierendes Ausgabeverzeichnis wird automatisch erzeugt.

Gruss, Oliver
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#5

Beitrag von olicat »

Hi!

Fuer Nutzer, die auch Blattfeuchtesensoren (WN35) im Einsatz haben wird es demnaechst ein Update des php-Scriptes geben, das die eingehenden Blattfeuchtewerte im Wertebereich 0..99 (Ecowitt-Format) auf den WSWin-kompatiblen Bereich 0..15 (Davis) umrechnet.

Bei Interesse an einem Beta-Test bitte melden - ich warte noch auf die Lieferung meines WN35 ...

Gruss, Oliver
ffelix
Offline
Beiträge: 2
Registriert: 27 Jan 2022, 10:04
Hat sich bedankt: 1 mal

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#6

Beitrag von ffelix »

Hallo Oliver,

ich hatte in den letzten Tagen u.a. diese Lösung, als auch die originale Version auf einem externen Webserver getestet.

Nun bin ich kein wirklicher php, Websever, batch-Datei und Programmierexperte, allerdings hab ich mittlerweile hinbekommen, dass die Wetterdaten auf dem externen Webserver gespeichert und automatisch mit der batch-Datei per Windows Aufgabenverwaltung auf dem Computer gespeichert und wieder in WsWin eingelesen werden. Super Sache! Danke dafür.

Jetzt zum eigentlichen Problem:

Bei mir funktioniert nur die originale Version auf dem Webserver. Die alternative Version (welche ich eigentlich bevorzugen würde) funktioniert nur genau einmal, danach bekomme ich einen Error 429 too many requests. Was könnte die Ursache sein? Irgendetwas muss den Webserver an der alternativen php-Datei "stören". Von der Station werden die Daten an die php-Datei jede Minute gesendet. Die originale Datei läuft wie gesagt perfekt durch. Den redirect auf https habe ich ausgeschaltet ... vorher lief es erwartungsgemäß gar nicht.

Grüße
Felix
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#7

Beitrag von olicat »

Hi!
funktioniert nur genau einmal, danach bekomme ich einen Error 429 too many requests
Liefert die Station weiterhin ein und Du erhaeltst den 429 beim Abholen mit dem Batch-Script oder liefert das PHP-Script schon beim Hochladen durch die Station den Fehler?
Wenn der 429er vom PHP-Script gemeldet wird, pruefe bitte im PHP-Script den Wert $mininterval - oder setze den probehalber mal auf 0.
Und schick mir mal bitte die letzte Zeile des Ausgabefiles PASSKEY-wswin.csv auf dem Server (oder das ganze File) per PM.

Oliver
ffelix
Offline
Beiträge: 2
Registriert: 27 Jan 2022, 10:04
Hat sich bedankt: 1 mal

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#8

Beitrag von ffelix »

Hallo,

das php-script liefert beim Hochladen durch die Station schon den Fehler. Da ich gerade nicht Zuhause bin kann ich erst heute Abend testen, ob es mit der Änderung von $mininterval funktioniert.

Die csv schicke ich.

Grüße
Felix
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 412 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#9

Beitrag von olicat »

Hi!

Bei einer Fehlersuche stellte ich ueberrascht fest, das ich die letzte Version des PHP-Scripts ja noch gar nicht online gestellt hatte.
Dabei ist die schon seit August letzten Jahres fertig und bringt eigentlich zwei ganz nette Features mit:

v0.1b 19.08.2021
- convert leaf wetness (WN35) from 0..99 to 0..15
- replace all decimal points with comma for better Excel-handling ($useKomma)

Im geaenderten Ausgabeformat lag wohl auch der Grund, weshalb ich diese Version noch nicht veroeffentlicht hatte.
Spaeter hatte ich das dann wohl einfach vergessen ...
Zwar sollte es WSWin grundsaetzlich egal sein, ob die Zahlenwerte mit Komma oder mit Punkt enthalten sind.
Aber Excel koennte da bei unterschiedlichen Zahlenformaten innerhalb einer Datei durchaus Schwierigkeiten machen.

Fuer neue Nutzer bringt die neue Version jedoch eine bessere Excel-Kompatibilitaet mit - ein Doppelklick auf die CSV-Datei und man kann sofort - ohne weitere Aenderungen - die Daten ordentlich formatiert im Excel sehen. Und das die Blattfeuchtewerte nun im Davis-Format angegeben sind dient einer besseren Vergleichbarkeit.

Aus aktuellem Anlass habe ich nun eine weitere Version fertiggestellt, die neue Nutzer ohne Probleme einfach nutzen koennen.
Alt-Nutzer sollten vor einem Update nochmal die Daten durch WSWin einlesen und die vorhandene CSV-Datei auf dem Server umbenennen oder loeschen. Das Script erzeugt bei Eingang neuer Daten eine neue Datei im neuen - dann wieder konsistenten - CSV-Format.
Alternativ kann man auch den Schalter $useKomma auf False setzen - dann wird das CSV im bisherigen Format weitergeschrieben.

Die neue Version v0.2 bringt als einziges neues Feature die Moeglichkeit, die Intervallpruefung durch Setzen von $mininterval = 0; komplett abzuschalten. Dies kann notwendig sein, wenn die Uhrzeiten von Webserver und Wetterstation unterschiedlich sind und dieses Problem nicht anderweitig loesbar ist. Als Standard wird jedoch geprueft, ob der zuletzt eingegangene Datensatz wenigstens 60 Sekunden alt ist.

Bevor ich nun die Version im ersten Post austausche, eine Frage:
Wird das ueberhaupt von irgendjemanden produktiv genutzt? Muss ich mir also bzgl. des Updates weitere Gedanken machen?
Mag das vorher mal jemand testen?

Oliver
Benutzeravatar
herbiy
Offline
Beiträge: 188
Registriert: 07 Dez 2020, 19:17
Wohnort: 1140 Wien Hackinger Straße 42-44
Hat sich bedankt: 7 mal
Danksagung erhalten: 27 mal
Kontaktdaten:

Re: Import von Ecowitt-Daten in WSWin (alternative WSWin-Version multi/complete)

#10

Beitrag von herbiy »

Hallo Oliver.

Ich würde es testen, wenn du mir mitteilt wo ich es finde!

Lg.Herbert
Herbiy's Wetternetzwerk www.herbiy.at
Antworten