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

Für Geräte von froggit
Antworten
Benutzeravatar
olicat
Offline
Beiträge: 449
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 7 mal
Danksagung erhalten: 102 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!

Eine erste Version der php-Datei sowie ein Beispiel-CSV anbei.

Changelog:
09.04.21 v0.1 - initial
10.04.21 v0.1a - Fehlerbereinigung, Aufraeumarbeiten
11.04.21 Anpassung der wget-data.bat zur Vermeidung von Problemen bei SSL
19.04.21 Anpassungen an den enthaltenen Batchdateien
nun mit Unterstuetzung von Leerzeichen im Ausgabedateinamen und autom. Erstellung des Ausgabeverzeichnisses

Gruss, Oliver
Dateianhänge
Ecowitt-WSWin.zip
(22.11 KiB) 17-mal heruntergeladen
Zuletzt geändert von olicat am 19 Mai 2021, 11:33, insgesamt 4-mal geändert.
Benutzeravatar
olicat
Offline
Beiträge: 449
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 7 mal
Danksagung erhalten: 102 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: 449
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 7 mal
Danksagung erhalten: 102 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: 449
Registriert: 07 Dez 2020, 19:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 7 mal
Danksagung erhalten: 102 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
Antworten