NEWS
ESPeasy Rules mit mehreren "if" Befehlen (gelöst)
-
Hallo zusammen
Ich versuche gerade eine Steuerung für die Pumpe der Wassertasche in meinem Kachelofen zu bauen.
Ich steuere da eine Alpha 1 l Pumpe per PWM mit einem ESP32 an. Den Rückkanal übersetzt ein Arduino Pro mini und sendet das Signal per Serial an den ESP32. Dann sind noch zwei DS18b20 Thermistoren und ein Oled Display angeschlossen.
Das Ziel ist, dass im Rücklauf immer dieselbe Temperatur herrscht. Dazu habe ich ein Rules erstelltOn System#Boot do //When the ESP boots, do looptimerset_ms,1,4000 // Start loop timer 1, 4000 msec interval PWM,21,1023 endon On Rules#Timer=1 do if [Ruecklauf#Ruecklauf] > [Pumpe#SollTemp]+1 and [Ruecklauf#Ruecklauf] < [Pumpe#SollTemp]+5 and [Pumpe#Befehl]<100 TaskValueSet,5,1, (100-([Pumpe#Befehl]+1))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]+1 PWM,21, [Dummy#Pumpe2] if [Ruecklauf#Ruecklauf] > [Pumpe#SollTemp]+6 and [Pumpe#Befehl]<100 TaskValueSet,5,1, (100-([Pumpe#Befehl]+1))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]+5 PWM,21, [Dummy#Pumpe2] if [Ruecklauf#Ruecklauf] < [Pumpe#SollTemp]-1 and [Ruecklauf#Ruecklauf] > [Pumpe#SollTemp]-5 and [Pumpe#Befehl]>0 and [Dummy#Startprogramm]=0 TaskValueSet,5,1, (100-([Pumpe#Befehl]+1))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]-1 PWM,21, [Dummy#Pumpe2] if [Ruecklauf#Ruecklauf] < [Pumpe#SollTemp]-6 and [Pumpe#Befehl]>0 and [Dummy#Startprogramm]=0 TaskValueSet,5,1, (100-([Pumpe#Befehl]+1))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]-5 PWM,21, [Dummy#Pumpe2] endif endon
Leider wird nur der erste if Befehl berücksichtigt. Kann mir jemand sagen wie ich den Code abändern muss?
So sieht das Projekt aktuell aus: -
@hafo
Ich konnte es nach längerem suchen selber lösen. Es gibt nun den Befehl "elseif" für meine Zwecke. Das sieht dann so aus und läuft.On System#Boot do //When the ESP boots, do looptimerset_ms,1,4000 // Start loop timer 1, 500 msec interval PWM,21,1023 TaskValueSet,5,1,1023 TaskValueSet,4,4,50 // Vorlauftemperatur einstellen endon On Rules#Timer=1 do if [Ruecklauf#Ruecklauf] > [Pumpe#SollTemp] and [Ruecklauf#Ruecklauf] <= [Pumpe#SollTemp]+5 and [Pumpe#Befehl]<100 and [Pumpe#Befehl]>5 TaskValueSet,5,1, (100-([Pumpe#Befehl]+1))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]+1 PWM,21, [Dummy#Pumpe2] elseif [Ruecklauf#Ruecklauf] > [Pumpe#SollTemp]+5 and [Pumpe#Befehl]<96 and [Pumpe#Befehl]>5 TaskValueSet,5,1, (100-([Pumpe#Befehl]+5))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]+5 PWM,21, [Dummy#Pumpe2] elseif [Ruecklauf#Ruecklauf] > [Pumpe#SollTemp] and [Pumpe#Befehl]<6 TaskValueSet,5,1,920 TaskValueSet,4,3,10 PWM,21, [Dummy#Pumpe2] elseif [Ruecklauf#Ruecklauf] < [Pumpe#SollTemp] and [Ruecklauf#Ruecklauf] >= [Pumpe#SollTemp]-5 and [Pumpe#Befehl]>10 and [Dummy#Startprogramm]=0 TaskValueSet,5,1, (100-([Pumpe#Befehl]-1))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]-1 PWM,21, [Dummy#Pumpe2] elseif [Ruecklauf#Ruecklauf] < [Pumpe#SollTemp]-5 and [Pumpe#Befehl]>14 and [Dummy#Startprogramm]=0 TaskValueSet,5,1, (100-([Pumpe#Befehl]-5))*10.23 TaskValueSet,4,3, [Pumpe#Befehl]-5 PWM,21, [Dummy#Pumpe2] elseif [Ruecklauf#Ruecklauf] < [Pumpe#SollTemp] and [Pumpe#Befehl]<11 and [Dummy#Startprogramm]=0 TaskValueSet,5,1,1023 TaskValueSet,4,3,0 PWM,21,1023 endif endon