Termostat praca domowa

<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>for in / for of</title>
</head>
<body>
    
<script>

//WALIDACJA DANYCH
function validateData(min, max, input1, input2){
if (input1 === null || input1 === "") {
    alert("Nie podano żadnej wartości"); 
    return false;
} else if (input2 === null || input2 === "") { // Sprawdź, czy wartości są liczbami
    alert("Nie podano żadnej wartości"); 
    return false;
} else if (isNaN(input1)) {
    alert("To nie jest liczba"); 
    return false;
} else if (isNaN(input2)) {
    alert("to nie jest liczba"); // Sprawdź czy są numerem
    return false;
} else if (!Number.isInteger(min)) {
    alert("To nie jest liczba całkowita"); // Sprawdź, czy są liczbami całkowitymi 
    return false;
} else if (!Number.isInteger(max)) {
    alert("To nie jest liczba całkowita"); 
    return false;
} else if (min<0 || min>50) {   
    alert("Wartości nie mieszczą się w zakresie");//Sprawdź czy wartości mieszczą się w zakresie
    return false;
} else if (max<0 || max>50) {   
    alert("Wartości nie mieszczą się w zakresie 0-50C");
    return false;
} else if (min>max) {
    alert("Podano złe wartości");//Sprawdź czy minimum jest mniejsze od max
    return false;
}
return true;
}

//OBLICZANIE ŚREDNIEJ TEMPERATURY
function averageTemperature(min,max){
return (min+max)/2;
}


//KOREKTA PID
function correction(averageTemperature, currentTemperature, sumErrors, prevError,  valueP, valueI, valueD){
let error = averageTemperature - currentTemperature;
let P = valueP*error;
sumErrors += error;
let I = valueI*sumErrors;
let D = valueD*(error-prevError);
let correction = P+I+D;

return{
                correction: correction,
                sumErrors: sumErrors,
                prevError: error, 
            }
}


//SYMULACJA PĘTLA 40 ITERACJI Z ALGORYTMEM PID
function thermostatSimulation(averageTemperature){
let currentTemperature = 10;
let valueP = 0.3;
let valueI = 0.3;
let valueD = 0.3;
let sumErrors = 0;
let prevError = 0;
    
    console.log("Temperatura optymalna:" + averageTemperature + "°C");
    console.log("Temperatura startowa: " + currentTemperature + "°C");
    
    for (let i=1; i<=40; i++){
    let wynik = correction (
        averageTemperature,
        currentTemperature,
        sumErrors,
        prevError,
        valueP,
        valueI,
        valueD
    );

//Komunikat zależny od temperatury
if (averageTemperature > currentTemperature) {
    console.log("Za zimno — zwiększam temperaturę");
} else if (averageTemperature < currentTemperature) {
    console.log("Za gorąco — zmniejszam temperaturę");
} else {
    console.log("Temperatura jest idealna");
}

//Aktualizacja zmiennych
    currentTemperature += wynik.correction;
    sumErrors = wynik.sumErrors;
    prevError = wynik.prevError;

    console.log("Iteracja" + i + ":Temperatura =" +currentTemperature.toFixed(2)+"°C");
}
}

//Pętla główna
let min, max;
let correctData = false;

//Pobieranie danych
do {
let input1 = prompt("Podaj minimalną temperaturę");
let input2 = prompt("Podaj maksymalną temperaturę");
min = Number(input1);
max = Number(input2); 

correctData = validateData (min, max, input1, input2);
} while (!correctData); 
console.log("Uruchamiam termostat");
console.log("Temperatura minimalna:" + min + "°C");
console.log("Temperatura maxymalna:" + max + "°C");

let optimalTemperature = averageTemperature(min,max); 
thermostatSimulation (optimalTemperature);


</script>
</body>
</html>