Heizstab: keine PHP-Warnung beim Einstellen, 6,0 kW wirksam, Ausfall gemeldet

- setMode kam aus POST oder GET, addiert wurden beide - der fehlende gab
  "Undefined array key", und die Warnung stand als Meldung im Browser.
  Jetzt wird der vorhandene genommen.
- Der Regler reicht bis 60 (6,0 kW), die Pruefung liess nur < 60 zu; ganz
  rechts geschah still nichts.
- Ist der Heizstab nicht erreichbar, kommt "Der Heizstab ist nicht
  erreichbar." statt weiterer PHP-Fehler aus fwrite auf eine gescheiterte
  Verbindung.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-15 14:44:15 +02:00
co-authored by Claude Opus 5
parent 865dd61535
commit fcd0b92785
+30 -21
View File
@@ -9,30 +9,39 @@ if (checkLogin()) {
if (isset($_POST["setMode"]) || isset($_GET["setMode"])) { if (isset($_POST["setMode"]) || isset($_GET["setMode"])) {
//send new value /*
$_POST["setMode"] = intval($_POST["setMode"]) + intval($_GET["setMode"]); * Der Wert kommt aus dem Formular (POST) oder von Hand aus der
if($_POST["setMode"] > 0 && $_POST["setMode"] < 60){ * Adresse (GET) - immer nur einer von beiden. Frueher wurden beide
$pwr = $_POST["setMode"]*100; * addiert; der fehlende erzeugte eine PHP-Warnung, und die stand dann
$headers[] = "GET /set?mode=man&pwr=".$pwr." HTTP/1.1"; * als Meldung im Browser.
$headers[] = "Host: ".$hostname; *
$headers[] = ""; * 0 = Automatik (Ueberschuss), 1..60 = feste Leistung in 100 W. Der
$remote = fsockopen("tcp://".$hostname, 80, $errno, $errstr, 5); * Regler reicht bis 60; die alte Pruefung "< 60" liess genau 6,0 kW
fwrite($remote, implode("\r\n", $headers)."\r\n"); * still nicht durch.
$file = ''; */
$file .= fread($remote, 1024); $stufe = intval($_POST["setMode"] ?? $_GET["setMode"] ?? 0);
fclose($remote); if ($stufe >= 1 && $stufe <= 60) {
}elseif($_POST["setMode"] == 0){ $pfad = "/set?mode=man&pwr=" . ($stufe * 100);
$headers[] = "GET /set?mode=eco&pwr=0 HTTP/1.1"; } elseif ($stufe === 0) {
$headers[] = "Host: ".$hostname; $pfad = "/set?mode=eco&pwr=0";
$headers[] = ""; } else {
$remote = fsockopen("tcp://".$hostname, 80, $errno, $errstr, 5); $pfad = null;
fwrite($remote, implode("\r\n", $headers)."\r\n"); }
$file = ''; if ($pfad !== null) {
$file .= fread($remote, 1024); $remote = @fsockopen("tcp://" . $hostname, 80, $errno, $errstr, 5);
if ($remote) {
fwrite($remote, "GET " . $pfad . " HTTP/1.1\r\nHost: " . $hostname . "\r\nConnection: close\r\n\r\n");
stream_set_timeout($remote, 5);
fread($remote, 1024);
fclose($remote); fclose($remote);
} else {
// Ohne Verbindung eine verstaendliche Meldung statt eines PHP-Fehlers.
// Bewusst Status 200: submitFormAjax() in common.js zeigt die
// Antwort nur dann als Meldung an.
echo "Der Heizstab ist nicht erreichbar.";
}
} }
$close = 1; $close = 1;
} }
} else { } else {
$close = 1; $close = 1;