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
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",
];
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]
Code: Alles auswählen
RedirectMatch 301 ^/(?!ausnahme).* http://www.machart-studios.de
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