Hallo,
ich habe folgendes Problem ich steuere Funksteckdose per arduino an und kann dies über ein Webinterface tun. Es soll aber auch möglich sein, dass eine Steckdose per Temperatur geschaltet wird, hierzu habe ich folgende Funktion unter loop eingefügt:
Nur habe ich jetzt das Problem, dass ich auch 3 sekunden warten muss wenn ich im Webinterface schalten möchte, kann man das delay so eingrenzen, das es nur auf die eine Funktion läuft? und nicht auf den ganzen Sketch? Und bevor einer fragt es geht auch ohne Delay nur ich möchte rechenlast vom Prozessor nehmen oder macht das nichts aus wenn er ununterbrochen prüft?
das Delay nur für eine Funktion laufen lassen geht nicht da delay den Sketch für die angegebene Zeit aufhält. Du kannst es mit millis() machen siehe:
Du kontrollierst einfach die Temperatur nur alle 3 Sekunden. Ich würde Dir auch raten den Zustand der Steckdose zwischenzuspeichern zb in der Variablen "Steckdose2" und nur bei einer Zustandsänderung den Befehl an die Steckdose zu senden.
// Initialiation wie im Beispiel
...
if(currentMillis - previousMillis > 3000)
{
previousMillis = currentMillis;
if (getTemp()<24 && Steckdose2==1)
{
mySwitch.switchOff("00001", 2); //-------Steckdose 2
Steckdose2==0;
}
if (getTemp()>=24 && Steckdose2==0){
mySwitch.switchOn("00001", 2); //-------Steckdose 2
Steckdose2==1;
}
}
Die Kontrolle es Internerinterfaces gibst Du außerhalb der oben aufgeführten if-Bedingung.
millis() liefert unsigned long dementsprechend mussen die Variablen deklariert werden, sonnst kommt es schnell zu einem überlauf
wenn du in deinen if einmal <=24 und einmal >=24 hast, was passier wenn du genau 24 hast?
du hast im zweiten if mySwitch.switchOff("00001", 2) da muss sicher ein mySwitch.switchOff("00000", 2) hin damit es aus geht.
Ich möchte auch ein paar Steckdosen übers web steuern könntst du deinen Code für den Webserver mal einstellen? Mir ist noch nicht so ganz klar, wie ich von meiner http Seite die variablen in meinem Arduino ändere