Ecowitt/Froggit php-Script updateweatherstation.php

Fragen, Anregungen zur PC-Wetterstations-Software

Moderatoren: Werner, Tex, weneu

ML1601
Beiträge: 10
Registriert: 26 Feb 2025 12:25

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von ML1601 »

@Werner

Vielen Dank, jetzt ist alles klar.

Die Daten sind durch das Hinzufügen von 'temp7c','temp8c' und 'humidity7' von Sensor ID13 auf Sensor ID16 "gerutsch".
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Hi Werner,

nach 5 Jahren bester Zusammenarbeit zwischen "updateweatherstation.php" und Deinem WSWin, musste ich leider meinen Raspi komplett neu aufsetzen (Pi-Hole hatte zu viele schwerwiegende Sicherheitslücken).

Nun hat der Raspi einen anderen Webserver (lighttpd mit nachinstallierten 8.4 php-Modul) - aber daran kann es eigentlich nicht liegen.
Wenn ich mit meinem Browser den Raspi und die darauf liegende "updateweatherstation.php" ansteuere kommt auf dem Browser Folgendes

Warning: Array to string conversion in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 461

17.07.2026 16:01:51 192.168.1.10 400 bad request - no passkey nor ID sent Array

Klar, es hat sich natürlich auf dem neuen Rasp was geändert, aber den neuen Besitzer (nicht mehr 'pi') brauchte ich ja bisher in Deiner PHP-Datei noch nie mitteilen und Schreibrechte ist in dem Verzeichnis für Jedem (777) vorhanden. Auch die php hat 777 - kann also jeder ausführen und laut Browserfenster wird sie ja auch ausgeführt.

Hast Du eine Idee woran es liegen könnte? Schon mal Danke im voraus....
WSWin // Klimalogger // WS 300 PC // Ecowitt
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Ich hab hier mal die genauen Fehler meines Webservers herausgeschrieben, die alle 5 Minuten erscheinen, wenn ecowitt Daten schickt:

Code: Alles auswählen

2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "unknown user" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 572
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "dailyrainin" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1023
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "drain_2" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1026
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "drain_piezo" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1027
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "rrate_2" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1028
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string ** float in /var/www/html/weatherstation/ecowitt/updateweatherstation.php:1055
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:Stack trace:
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:#0 /var/www/html/weatherstation/ecowitt/updateweatherstation.php(1055): pow()
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:#1 {main}
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:  thrown in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1055
Das Schlimmste ist wohl der Fatalerror. Ist übrigens das Neueste updateweatherstation.php
Natürlich kann man den Server noch konfigurieren (weiß noch nicht wie, aber der Error 400 ist eigentlich immer ein Clientfehler und in meinen Augen sind das alles php-Warnungen und Fehler, aber in Webservereinstellungen bin auch absoluter Laie.

Der Server hat allerdings ein anderes Upload-Directory eingestellt, was in Klammern steht -> server.upload-dirs = ( "/var/cache/lighttpd/uploads" )

€dit (18.07 | 23:05) Fehlerblock ausgetauscht - Vorher stand noch der Fehlerblock von einem älteren Script
Sorry, wegen dem 2.ten Beitrag - ich habe den Editierknopf einfach übersehen.
Zuletzt geändert von Volker S am 18 Jul 2026 22:06, insgesamt 1-mal geändert.
WSWin // Klimalogger // WS 300 PC // Ecowitt
Benutzeravatar
Werner
Site Admin
Beiträge: 6179
Registriert: 04 Dez 2001 01:00
Wohnort: Lackenhäuser
Danksagung erhalten: 152 mal
Kontaktdaten:

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Werner »

17.07.2026 16:01:51 192.168.1.10 400 bad request - no passkey nor ID sent Array
Diese Meldung sagt eigentlich aus, dass gar keine Daten ankommen.

... deshalb schlägt dann auch die weitere Auswertung fehl.
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Also das php-Script wird ja alle 5 Minuten von ecowitt aufgerufen und ausgeführt. Genau wie bei dem alten Rasbi mit dem Debian Buster und bei einem inkludierten Webbrowser von Pi-Hole. Da funktioniert das dann auch fehlerfrei. Also Daten kommen ganz klar an - definitiv.

Nicht das wir uns falsch verstehen - bei dem Test in meiner ersten Mail habe ich das Script aufgerufen (192.168.1.10) und dabei natürlich keine Daten übertragen. Die zweite Mail darunter ist die Reaktion auf ecowitt - da werden also Daten übertragen (alle 5 Minuten erscheint der gleiche Fehlerblock im Log vom Webserver).
Ich kann bei dem neuen System aber kein altes php-Modul installieren. Ich vermute daher das es daran liegt. Bloß was mache ich jetzt?
WSWin // Klimalogger // WS 300 PC // Ecowitt
Benutzeravatar
Werner
Site Admin
Beiträge: 6179
Registriert: 04 Dez 2001 01:00
Wohnort: Lackenhäuser
Danksagung erhalten: 152 mal
Kontaktdaten:

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Werner »

Irgendwas stimmt bei Dir nicht:

Code: Alles auswählen

Undefined array key "drain_2" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 923
Undefined array key "drain_piezo" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 924
Die genannten key's kommen in einer Zeile vor und nicht in zwei Zeilen:

Code: Alles auswählen

  if (isset($wd['drain_piezo'])) {@$wd['drain_2'] = intomm($wd['drain_piezo']);}
Und die genannten Zeilennummer stimmen eigentlich auch nicht überein.
Ist das das jetzt verwendete Script? - letzte Änderung im März
"# 2026-03-18 wh52_xx ist set soilmTemp1..16 then this values are written to csv"

Ich habe das Script jetzt auf meinem Raspi mit PHP Version 8.4.23 und Apache Webserver gestestet.
Es gab kein Problem!
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Ja sorry, ich habe erst gerade gesehen, dass ich den Fehlerblock von einem älteren Script hier eingestellt habe. Ich habe den Block oben ausgetauscht, bzw. füge ich hier nochmal ein:

Code: Alles auswählen

2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "unknown user" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 572
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "dailyrainin" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1023
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "drain_2" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1026
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "drain_piezo" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1027
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Warning:  Undefined array key "rrate_2" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1028
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string ** float in /var/www/html/weatherstation/ecowitt/updateweatherstation.php:1055
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:Stack trace:
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:#0 /var/www/html/weatherstation/ecowitt/updateweatherstation.php(1055): pow()
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:#1 {main}
2026-07-18 23:00:21: (mod_fastcgi.c.444) FastCGI-stderr:  thrown in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1055
In der letzten Zeile (bei den Histories) des Scriptes steht:
# 2026-03-18 wh52_xx ist set soilmTemp1..16 then this values are written to csv
ergo, ja - ist von März.
Gibt es den Apache Webserver auch in 'klein'. Ich habe ein Raspi Zero WH und mir wurde der "lighttpd" daher empfohlen. Aber zur Not muss ich ihn wohl runter schmeißen.
Es gibt auch noch ein Supportforum von lighttpd - ich weiß aber nicht ob es reicht das php-Script und die dazugehörigen Fehler dort zu zeigen. Sie scheinen zwar viel lösen zu können, aber ich weiß ja noch nicht mal wie das mit dem Passkey funktioniert.

...gerade gehört, dass der Apache2 auch für mich eine Möglichkeit wäre.
Habe den Apache2 nun am laufen - und die gleichen Warnungen und Fehler erhalten:

Code: Alles auswählen

[Sun Jul 19 10:00:22.370652 2026] [php:warn] [pid 10614:tid 10614] [client 192.168.1.39:63216] PHP Warning:  Undefined array key "unknown user" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 572
[Sun Jul 19 10:00:22.373729 2026] [php:warn] [pid 10614:tid 10614] [client 192.168.1.39:63216] PHP Warning:  Undefined array key "dailyrainin" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1023
[Sun Jul 19 10:00:22.373932 2026] [php:warn] [pid 10614:tid 10614] [client 192.168.1.39:63216] PHP Warning:  Undefined array key "drain_2" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1026
[Sun Jul 19 10:00:22.374046 2026] [php:warn] [pid 10614:tid 10614] [client 192.168.1.39:63216] PHP Warning:  Undefined array key "drain_piezo" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1027
[Sun Jul 19 10:00:22.374157 2026] [php:warn] [pid 10614:tid 10614] [client 192.168.1.39:63216] PHP Warning:  Undefined array key "rrate_2" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1028
[Sun Jul 19 10:00:22.374780 2026] [php:error] [pid 10614:tid 10614] [client 192.168.1.39:63216] PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string ** float in /var/www/html/weatherstation/ecowitt/updateweatherstation.php:1055\nStack trace:\n#0 /var/www/html/weatherstation/ecowitt/updateweatherstation.php(1055): pow()\n#1 {main}\n  thrown in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1055
WSWin // Klimalogger // WS 300 PC // Ecowitt
Benutzeravatar
Werner
Site Admin
Beiträge: 6179
Registriert: 04 Dez 2001 01:00
Wohnort: Lackenhäuser
Danksagung erhalten: 152 mal
Kontaktdaten:

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Werner »

Habe den Apache2 nun am laufen - und die gleichen Warnungen und Fehler erhalten:
Deine gezeigten Fehlermeldung beziehen sich auf 2 Zeilen.
Im Script werden die aber in einer Zeile verarbeitet.
Und das kann nicht sein.

Script modifiziert ?!
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Nein, weder in dem Script vom März, noch in dem älteren Script. Ich habe es auch gerade noch mal erneut runter geladen und direkt rüber kopiert. Bleibt alles so...
Vielleicht ne Einstellungssache vom Apache?
WSWin // Klimalogger // WS 300 PC // Ecowitt
Benutzeravatar
Werner
Site Admin
Beiträge: 6179
Registriert: 04 Dez 2001 01:00
Wohnort: Lackenhäuser
Danksagung erhalten: 152 mal
Kontaktdaten:

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Werner »

Was steht bei Dir im Script in der Zeile 1026, 1027 und 1028 ?
Denn die Fehlermeldung bezieht sich u.a. auf diese Zeilen.

Wird die Debug-Datei geschrieben?
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Code: Alles auswählen

$userain = $wd['drain_2'];
$userainin = $wd['drain_piezo'];
$userainrate = $wd['rrate_2'];
...und nein, es wird keine debug-Datei geschrieben. Ich habe auch mal versucht den Passkey ins Array von '$EW_allowed' einzutragen (was ich ja bisher auch nie gebraucht hatte). Hat aber auch nichts genützt.
WSWin // Klimalogger // WS 300 PC // Ecowitt
Benutzeravatar
Werner
Site Admin
Beiträge: 6179
Registriert: 04 Dez 2001 01:00
Wohnort: Lackenhäuser
Danksagung erhalten: 152 mal
Kontaktdaten:

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Werner »

Code: Alles auswählen

 if (!isset($wd['dailyrain'])) {@$wd['dailyrain'] = intomm($wd['dailyrainin']);}
...
$userainin = $wd['dailyrainin'];
...
if ( ( ($rainusepiezo == 1) and ($rainpiezo == 1) ) or (!isset($wd['dailyrainin'])) )
{
$userain = $wd['drain_2'];
$userainin = $wd['drain_piezo'];
$userainrate = $wd['rrate_2'];
} 
D.h Du hast
$rainusepiezo auf 1 gesetzt (WS90 oder WS85 vorhanden)
und auch $rainpiezo auf 1 gesetzt
oder
Undefined array key "dailyrainin" in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1023
Deine Station liefert

Code: Alles auswählen

dailyrainin
nicht
Dann vor
$userainin = $wd['dailyrainin'];

Code: Alles auswählen

if (!isset($wd['dailyrainin'])) {@$wd['dailyrainin'] = mmtoin($wd['dailyrain']);}
und für den Fehler: Undefined array key "unknown user"
brauchst Du auch '$EW_allowed' oder $allowAny = True;

Was ist das für eine Station?
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Ich selber habe an dem Script nie was gemacht. Ich habe es immer nur in das Verzeichnis kopiert und es funktionierte. So war es immer bei meinem alten Raspi Buster. Auch wenn ich den alten Raspi Buster boote klappt alles, auch mit verschieden alten php-Scripte.
Im Script steht zwar, man sollte den Passkey vom Error.log (des Webservers) ins Script eintragen - weil es aber sofort so funktionierte ($allowAny = True;), habe ich das natürlich nicht gemacht.
Hier mal die funktionierenden Start-Settings meines alten Buster (ich kann den immer noch booten, falls Du davon etwas brauchst):

Code: Alles auswählen

# *** SETTINGS START ***

# Debug
$debug = True;                                             # for debugging purpose - switch to False
$debugonly = True;
$debug_org = False;
$dbgfile = "debug.txt";                                     # save all requests if $debug enabled
$debugx = True;

$EW_allowed = [
                  "36??862C94AB46D8F2D931A7F9F630BF",		#HP2550
	      "2B??DCAD45EE1E946D216BBBBE377A0B",		#WS2900
	      "EF??41D10F8F070C344513CDE8E1E9AA",		#HP3500
	      "08A6C0EBE247DC33D4495BD7BA419ABC",		#GW1100
                ];
# for WU stations you have to configure a username and a corresponding password here
$WU_allowed = array(
                  'werner' => '12345678',
                  'werner1' => '12345678',
	      'werner2' => '12345678',
                );
$allowAny = True;                                           # allow any weather station without user verification
Und das sind die Startsettings vom Script beim neuen Raspi Debian 13 Trixie:

Code: Alles auswählen

# *** SETTINGS START ***

# Debug
$debug = True;                                             # for debugging purpose - switch to False
$debugonly = True;
$debug_org = False;
$dbgfile = "debug.txt";                                     # save all requests if $debug enabled
$debugx = True;

$EW_allowed = [
                  "36??862C94AB46D8F2D931A7F9F630BF",		#HP2550
	      "2B??DCAD45EE1E946D216BBBBE377A0B",		#WS2900
	      "EF??41D10F8F070C344513CDE8E1E9AA",		#HP3500
	      "08A6C0EBE247DC33D4495BD7BA419ABC",		#GW1100
                ];
# for WU stations you have to configure a username and a corresponding password here
$WU_allowed = array(
                  'werner' => '12345678',
                  'werner1' => '12345678',
	      'werner2' => '12345678',
                );
$allowAny = True;                                           # allow any weather station without user verification

Wie gesagt, ich verändere das Script nicht und ausgelesen wird eine Ecowitt GW2000A. Empfangene Sensoren sind z.Z.: die inneren Sensoren -> Temperatur, Druck, Feuchtigkeit und von meinem Garten werden z.Z. nur 1xBodenfeuchte und 1xTemperatur inkl.Feuchte empfangen.

Ich habe gerade mal in meinem alten Buster nachgeschaut. Der Webserver (der automatisch mit pi-hole mit kam (lighttpd) und den ich benutzte, hatte im eigentlichen error.log nichts stehen, aber im error-pihole.log vom 17.07.2026 (da habe ich ihn nochmal gebootet).
Das sieht nach den gleichen Warnungen aus - nur der schwerwiegende Fehler fehlt. Das php-Script ist entwickelt worden am 15.03.2025 (letzte Zeile: # 2025-03-15 vpd umrechnen nach kPa (da inHg)):

Code: Alles auswählen

2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined index: unknown user in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 518
2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined index: dailyrainin in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 953
2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined index: drain_2 in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 956
2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined index: drain_piezo in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 957
2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined index: rrate_2 in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 958
2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined index: windgustmph in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1043
2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined variable: neu in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 1256
2026-07-17 14:50:21: (mod_fastcgi.c.421) FastCGI-stderr: PHP Notice:  Undefined variable: sqlerror in /var/www/html/weatherstation/ecowitt/updateweatherstation.php on line 2801
WSWin // Klimalogger // WS 300 PC // Ecowitt
Benutzeravatar
Werner
Site Admin
Beiträge: 6179
Registriert: 04 Dez 2001 01:00
Wohnort: Lackenhäuser
Danksagung erhalten: 152 mal
Kontaktdaten:

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Werner »

Ich habe jetzt Google gefragt, wo das Problem liegt!

Nach Google muss sichergestellt sein
das bei php8.4 und Verwendung von pow(), der Wert ein float-Wert ist.

Warum es bei mir funktioniert, ich komme allerdings ursprünglich von php5, immer hochaktualisert auf jetzt
php8.4 , kann ich nicht sagen, da nie eine entsprechende Änderung notwendig war.

Hab die updateweatherstation.php jetzt im User-Bereich entsprechend angepasst.
Volker S
Beiträge: 128
Registriert: 06 Jan 2008 00:48
Hat sich bedankt: 2 mal

Re: Ecowitt/Froggit php-Script updateweatherstation.php

Beitrag von Volker S »

Echt erst ab php-Version 8.4? Da bin ich mit meinem Systemupdate/neu flashen ja gerade erst rein geraten. Wieder son echter Murphy...
Ja, und es funktioniert wieder. Vielen lieben Dank für Deine Mühe.
WSWin // Klimalogger // WS 300 PC // Ecowitt
Antworten