diff --git a/ajax/heater.php b/ajax/heater.php index ad14354..884b247 100644 --- a/ajax/heater.php +++ b/ajax/heater.php @@ -9,30 +9,39 @@ if (checkLogin()) { if (isset($_POST["setMode"]) || isset($_GET["setMode"])) { - //send new value - $_POST["setMode"] = intval($_POST["setMode"]) + intval($_GET["setMode"]); - if($_POST["setMode"] > 0 && $_POST["setMode"] < 60){ - $pwr = $_POST["setMode"]*100; - $headers[] = "GET /set?mode=man&pwr=".$pwr." HTTP/1.1"; - $headers[] = "Host: ".$hostname; - $headers[] = ""; - $remote = fsockopen("tcp://".$hostname, 80, $errno, $errstr, 5); - fwrite($remote, implode("\r\n", $headers)."\r\n"); - $file = ''; - $file .= fread($remote, 1024); - fclose($remote); - }elseif($_POST["setMode"] == 0){ - $headers[] = "GET /set?mode=eco&pwr=0 HTTP/1.1"; - $headers[] = "Host: ".$hostname; - $headers[] = ""; - $remote = fsockopen("tcp://".$hostname, 80, $errno, $errstr, 5); - fwrite($remote, implode("\r\n", $headers)."\r\n"); - $file = ''; - $file .= fread($remote, 1024); - fclose($remote); + /* + * Der Wert kommt aus dem Formular (POST) oder von Hand aus der + * Adresse (GET) - immer nur einer von beiden. Frueher wurden beide + * addiert; der fehlende erzeugte eine PHP-Warnung, und die stand dann + * als Meldung im Browser. + * + * 0 = Automatik (Ueberschuss), 1..60 = feste Leistung in 100 W. Der + * Regler reicht bis 60; die alte Pruefung "< 60" liess genau 6,0 kW + * still nicht durch. + */ + $stufe = intval($_POST["setMode"] ?? $_GET["setMode"] ?? 0); + if ($stufe >= 1 && $stufe <= 60) { + $pfad = "/set?mode=man&pwr=" . ($stufe * 100); + } elseif ($stufe === 0) { + $pfad = "/set?mode=eco&pwr=0"; + } else { + $pfad = null; + } + if ($pfad !== null) { + $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); + } 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; - } } else { $close = 1;