Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. ESPeasy Rules mit mehreren "if" Befehlen (gelöst)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ESPeasy Rules mit mehreren "if" Befehlen (gelöst)

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      hafo last edited by hafo

      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 erstellt

      On 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:

      8.jpg

      H 1 Reply Last reply Reply Quote 0
      • H
        hafo @hafo last edited by

        @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
        
        1 Reply Last reply Reply Quote 1
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        921
        Online

        31.7k
        Users

        79.7k
        Topics

        1.3m
        Posts

        1
        2
        1407
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo