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 endonLeider 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:
-
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 endonLeider 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
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden