Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Microcontroller
  5. ESPeasy Rules mit mehreren "if" Befehlen (gelöst)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.9k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.3k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.4k

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

Geplant Angeheftet Gesperrt Verschoben Microcontroller
2 Beiträge 1 Kommentatoren 1.6k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H Offline
    H Offline
    hafo
    schrieb am zuletzt editiert von hafo
    #1

    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 Antwort Letzte Antwort
    0
    • H 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 Offline
      H Offline
      hafo
      schrieb am zuletzt editiert von
      #2

      @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 Antwort Letzte Antwort
      1
      Antworten
      • In einem neuen Thema antworten
      Anmelden zum Antworten
      • Älteste zuerst
      • Neuste zuerst
      • Meiste Stimmen


      Support us

      ioBroker
      Community Adapters
      Donate

      803

      Online

      32.4k

      Benutzer

      81.6k

      Themen

      1.3m

      Beiträge
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
      ioBroker Community 2014-2025
      logo
      • Anmelden

      • Du hast noch kein Konto? Registrieren

      • Anmelden oder registrieren, um zu suchen
      • Erster Beitrag
        Letzter Beitrag
      0
      • Home
      • Aktuell
      • Tags
      • Ungelesen 0
      • Kategorien
      • Unreplied
      • Beliebt
      • GitHub
      • Docu
      • Hilfe