Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Temperatur Hysterese bei If Verschachtelung

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    702

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Temperatur Hysterese bei If Verschachtelung

Scheduled Pinned Locked Moved JavaScript
8 Posts 4 Posters 701 Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    Diamand2k22
    wrote on last edited by
    #1

    Hallo zusammen, ich baue mein Skript zur Zeit um und will meine Akku Ladesteuerung in Abhängigkeit der Puffertempereratur (Heizstab Ohmpilot) steuern. Das ganze ist Prognosebasierend über den PV Forecast.

    Ich habe mich schon etwas versucht,
    es sollen 5 Grad Schalthysterese zwischen den else if Bedingungen sein.
    Aktuell ist es so, wenn der Puffer z.B. 52 Grad hat, wäre keine Bedingung erfüllt,
    wie löse ich das am besten?

     if (FC >= 80) {
        // netzdienlich
        //             5 ,6, 7, 8, 9,10,11, 12, 13, 14,  15, 16 17, 18  Uhr
        if (SOC < 25) {
          Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
        } else {
          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
        }
        } else if (FC >=40 && PufferTemp >55) {
        // verteilen
          Laden_Mit =   [0, 0, 0, 6, 12, 12, 12, 12, 12, 18, 18, 24, 36, 100];
        } else if (FC >=40 && PufferTemp <50) {
          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
        } else if (FC <40 && PufferTemp >55) {
        // Hamstern 
          Laden_Mit = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100];   
        } else if (FC <40 && PufferTemp <50){
        // Pufferspeicher laden  
          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
          }
    

    Danke für die Hilfe!

    geschildG 1 Reply Last reply
    0
    • D Diamand2k22

      Hallo zusammen, ich baue mein Skript zur Zeit um und will meine Akku Ladesteuerung in Abhängigkeit der Puffertempereratur (Heizstab Ohmpilot) steuern. Das ganze ist Prognosebasierend über den PV Forecast.

      Ich habe mich schon etwas versucht,
      es sollen 5 Grad Schalthysterese zwischen den else if Bedingungen sein.
      Aktuell ist es so, wenn der Puffer z.B. 52 Grad hat, wäre keine Bedingung erfüllt,
      wie löse ich das am besten?

       if (FC >= 80) {
          // netzdienlich
          //             5 ,6, 7, 8, 9,10,11, 12, 13, 14,  15, 16 17, 18  Uhr
          if (SOC < 25) {
            Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
          } else {
            Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
          }
          } else if (FC >=40 && PufferTemp >55) {
          // verteilen
            Laden_Mit =   [0, 0, 0, 6, 12, 12, 12, 12, 12, 18, 18, 24, 36, 100];
          } else if (FC >=40 && PufferTemp <50) {
            Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
          } else if (FC <40 && PufferTemp >55) {
          // Hamstern 
            Laden_Mit = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100];   
          } else if (FC <40 && PufferTemp <50){
          // Pufferspeicher laden  
            Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
            }
      

      Danke für die Hilfe!

      geschildG Offline
      geschildG Offline
      geschild
      wrote on last edited by
      #2

      @diamand2k22 said in Temperatur Hysterese bei If Verschachtelung:

      if (SOC < 25) {
      Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
      } else {
      Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
      }

      nach diesem <else> ist Ende, die weiter <else if> werden nicht mehr bearbeitet.

      D 1 Reply Last reply
      0
      • geschildG geschild

        @diamand2k22 said in Temperatur Hysterese bei If Verschachtelung:

        if (SOC < 25) {
        Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
        } else {
        Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
        }

        nach diesem <else> ist Ende, die weiter <else if> werden nicht mehr bearbeitet.

        D Offline
        D Offline
        Diamand2k22
        wrote on last edited by
        #3

        @geschild

        Aber nur wenn obere IF Bedingung FC >= 80 erfüllt ist oder?

        OliverIOO T 2 Replies Last reply
        0
        • D Diamand2k22

          @geschild

          Aber nur wenn obere IF Bedingung FC >= 80 erfüllt ist oder?

          OliverIOO Offline
          OliverIOO Offline
          OliverIO
          wrote on last edited by OliverIO
          #4

          @diamand2k22

          als erstes ist es dringend notwendig richtig einzurücken, so das solche verschachtelten Bedingungen auch lesbar sind.
          anstatt der kombinierten Prüfungen, würde ich die einzeln aufschreiben ungefähr wie folgt

          if (FC >= 80) {
              if (SOC < 25) {
              } else {
              }
          }
          if (FC >= 40 && FC <80) {
              if (Puffertemp > 55) {
              } 
              if (Puffertemp < 55) {
              } 
          }
          if (FC <40) {
              if (Puffertemp > 55) {
              } 
              if (Puffertemp < 55) {
              } 
          }
          
          
          

          Meine Adapter und Widgets
          TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
          Links im Profil

          1 Reply Last reply
          0
          • D Diamand2k22

            @geschild

            Aber nur wenn obere IF Bedingung FC >= 80 erfüllt ist oder?

            T Do not disturb
            T Do not disturb
            ticaki
            wrote on last edited by ticaki
            #5

            @diamand2k22

            let istAn = getState('heizung oder was auch immer').val
            
            if (FC >= 80) {
                // netzdienlich
                //             5 ,6, 7, 8, 9,10,11, 12, 13, 14,  15, 16 17, 18  Uhr
                if (SOC < 25) {
                    Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
                } else  {// hier ist in deinem Skript ein Fehler die else greift immer 
                    Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                } // hier hab ich das else deshalb entfernt
            
                if (FC >= 40 && PufferTemp > (istAn ? 50 : 55) ) {
                    istAn = true
                    // verteilen
                    Laden_Mit = [0, 0, 0, 6, 12, 12, 12, 12, 12, 18, 18, 24, 36, 100];
                } else if (FC >= 40 && PufferTemp < (!istAn ? 50 : 55)) {
                    istAn = false
                    Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                } else if (FC < 40 && PufferTemp > (istAn ? 50 : 55)) {
                    istAn = true
                    // Hamstern 
                    Laden_Mit = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100];
                } else if (FC < 40 && PufferTemp < (!istAn ? 50 : 55)) {
                    // Pufferspeicher laden  
                    istAn = false
                    Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
                }
            }
            // hier dann heizung schalten oder datenpunkt setzten der beim nächsten durchlauf gelesen wird.
            

            Ich verstehe es aber nicht ganz. Was schaltet da die Heizung an?

            Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

            Spenden

            OliverIOO D 2 Replies Last reply
            0
            • T ticaki

              @diamand2k22

              let istAn = getState('heizung oder was auch immer').val
              
              if (FC >= 80) {
                  // netzdienlich
                  //             5 ,6, 7, 8, 9,10,11, 12, 13, 14,  15, 16 17, 18  Uhr
                  if (SOC < 25) {
                      Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
                  } else  {// hier ist in deinem Skript ein Fehler die else greift immer 
                      Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                  } // hier hab ich das else deshalb entfernt
              
                  if (FC >= 40 && PufferTemp > (istAn ? 50 : 55) ) {
                      istAn = true
                      // verteilen
                      Laden_Mit = [0, 0, 0, 6, 12, 12, 12, 12, 12, 18, 18, 24, 36, 100];
                  } else if (FC >= 40 && PufferTemp < (!istAn ? 50 : 55)) {
                      istAn = false
                      Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                  } else if (FC < 40 && PufferTemp > (istAn ? 50 : 55)) {
                      istAn = true
                      // Hamstern 
                      Laden_Mit = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100];
                  } else if (FC < 40 && PufferTemp < (!istAn ? 50 : 55)) {
                      // Pufferspeicher laden  
                      istAn = false
                      Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
                  }
              }
              // hier dann heizung schalten oder datenpunkt setzten der beim nächsten durchlauf gelesen wird.
              

              Ich verstehe es aber nicht ganz. Was schaltet da die Heizung an?

              OliverIOO Offline
              OliverIOO Offline
              OliverIO
              wrote on last edited by
              #6

              @ticaki
              ist ja eigentlich egal, was es da schaltet.
              das Problem hier ist, das vor lauter Bedingungen die Übersicht verloren gegangen ist, so das das schlecht wartbar ist und evtl. Fehler, die nicht unbedingt Laufzeitfehler sein müssen, das erwartete Ergebnis verhindern.

              Meine Adapter und Widgets
              TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
              Links im Profil

              D 1 Reply Last reply
              1
              • OliverIOO OliverIO

                @ticaki
                ist ja eigentlich egal, was es da schaltet.
                das Problem hier ist, das vor lauter Bedingungen die Übersicht verloren gegangen ist, so das das schlecht wartbar ist und evtl. Fehler, die nicht unbedingt Laufzeitfehler sein müssen, das erwartete Ergebnis verhindern.

                D Offline
                D Offline
                Diamand2k22
                wrote on last edited by
                #7

                @ticaki @oliverio

                danke für eure Vorschläge!
                das Skript ist erstmal nur ein grober Test und wird noch verfeinert, nur das umsetzen mit der Hysterese hab ich nicht kapiert, damit der Heizstab nicht ständig ein und auschaltet beim Schwellwert. Ich werde mal testen!

                1 Reply Last reply
                0
                • T ticaki

                  @diamand2k22

                  let istAn = getState('heizung oder was auch immer').val
                  
                  if (FC >= 80) {
                      // netzdienlich
                      //             5 ,6, 7, 8, 9,10,11, 12, 13, 14,  15, 16 17, 18  Uhr
                      if (SOC < 25) {
                          Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
                      } else  {// hier ist in deinem Skript ein Fehler die else greift immer 
                          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                      } // hier hab ich das else deshalb entfernt
                  
                      if (FC >= 40 && PufferTemp > (istAn ? 50 : 55) ) {
                          istAn = true
                          // verteilen
                          Laden_Mit = [0, 0, 0, 6, 12, 12, 12, 12, 12, 18, 18, 24, 36, 100];
                      } else if (FC >= 40 && PufferTemp < (!istAn ? 50 : 55)) {
                          istAn = false
                          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                      } else if (FC < 40 && PufferTemp > (istAn ? 50 : 55)) {
                          istAn = true
                          // Hamstern 
                          Laden_Mit = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100];
                      } else if (FC < 40 && PufferTemp < (!istAn ? 50 : 55)) {
                          // Pufferspeicher laden  
                          istAn = false
                          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
                      }
                  }
                  // hier dann heizung schalten oder datenpunkt setzten der beim nächsten durchlauf gelesen wird.
                  

                  Ich verstehe es aber nicht ganz. Was schaltet da die Heizung an?

                  D Offline
                  D Offline
                  Diamand2k22
                  wrote on last edited by Diamand2k22
                  #8

                  @ticaki said in Temperatur Hysterese bei If Verschachtelung:

                  @diamand2k22

                  let istAn = getState('heizung oder was auch immer').val
                  
                  if (FC >= 80) {
                      // netzdienlich
                      //             5 ,6, 7, 8, 9,10,11, 12, 13, 14,  15, 16 17, 18  Uhr
                      if (SOC < 25) {
                          Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100];
                      } else  {// hier ist in deinem Skript ein Fehler die else greift immer 
                          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                      } // hier hab ich das else deshalb entfernt
                  
                      if (FC >= 40 && PufferTemp > (istAn ? 50 : 55) ) {
                          istAn = true
                          // verteilen
                          Laden_Mit = [0, 0, 0, 6, 12, 12, 12, 12, 12, 18, 18, 24, 36, 100];
                      } else if (FC >= 40 && PufferTemp < (!istAn ? 50 : 55)) {
                          istAn = false
                          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100];
                      } else if (FC < 40 && PufferTemp > (istAn ? 50 : 55)) {
                          istAn = true
                          // Hamstern 
                          Laden_Mit = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100];
                      } else if (FC < 40 && PufferTemp < (!istAn ? 50 : 55)) {
                          // Pufferspeicher laden  
                          istAn = false
                          Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
                      }
                  }
                  // hier dann heizung schalten oder datenpunkt setzten der beim nächsten durchlauf gelesen wird.
                  

                  Ich verstehe es aber nicht ganz. Was schaltet da die Heizung an?

                  @ticaki

                  die Heizung ist kein separater Datenpunkt! Es wird im Skript einfach die Ladeleistung des Akkus herabgesetzt (in den Klammern und somit zieht der Heizstab den PV Überschuss weg. Leider gibt es bei dem Gen24 Wechelrichter keinen Datenpunkt in der Modbus Schnittstelle um die Priorisierung zu ändern, somit muss ich die Ladeleistung des Akkus drosseln, damit der Heizstab (hängt am Ohmpilot) mehr Überschuss bekommt!

                  1 Reply Last reply
                  0

                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                  With your input, this post could be even better 💗

                  Register Login
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  621

                  Online

                  32.7k

                  Users

                  82.6k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe