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. Skripten / Logik
  4. Anfänger if und if else

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.4k

Anfänger if und if else

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
4 Beiträge 3 Kommentatoren 406 Aufrufe 3 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.
  • M Offline
    M Offline
    mike1976
    schrieb am zuletzt editiert von Jey Cee
    #1

    Hallo,
    ich schon wieder :-(

    Habe mir mal eine vergleich abfrage gebastelt, aber irgendwie bleib meine abfrage immer in einer hängen bis ich das script neu starte:

    const wert_1 = getState("javascript.0.Test.wert_1").val;
    const wert_2 = getState("javascript.0.Test.wert_2").val;
    
    on(wert_1 || wert_2, function (obj) {    
    if (istwert  >= vorgabe_ID4_min) {
     {setState(sollwert, getState(sollwert_ID4).val)
    }
    }
    
    else if (istwert >= vorgabe_ID3_min) {
     {setState(sollwert, getState(sollwert_ID3).val)
    }
    }
    
    else if (istwert >= vorgabe_ID2_min) {
     {setState(sollwert, getState(sollwert_ID2).val)
     }
    }
    
    else if (istwert >= vorgabe_ID1_min) {
     {setState(sollwert, getState(sollwert_ID1).val)
     }
    }
    
    else if (istwert >= 1) {
     {setState(sollwert, 30); //ersatzwert
     } 
    }
    });
    

    Ich will eigentlich immer den grössten vergleich nutzten.
    Bin wahrscheinlich komplett daneben oder?

    arteckA 1 Antwort Letzte Antwort
    0
    • M mike1976

      Hallo,
      ich schon wieder :-(

      Habe mir mal eine vergleich abfrage gebastelt, aber irgendwie bleib meine abfrage immer in einer hängen bis ich das script neu starte:

      const wert_1 = getState("javascript.0.Test.wert_1").val;
      const wert_2 = getState("javascript.0.Test.wert_2").val;
      
      on(wert_1 || wert_2, function (obj) {    
      if (istwert  >= vorgabe_ID4_min) {
       {setState(sollwert, getState(sollwert_ID4).val)
      }
      }
      
      else if (istwert >= vorgabe_ID3_min) {
       {setState(sollwert, getState(sollwert_ID3).val)
      }
      }
      
      else if (istwert >= vorgabe_ID2_min) {
       {setState(sollwert, getState(sollwert_ID2).val)
       }
      }
      
      else if (istwert >= vorgabe_ID1_min) {
       {setState(sollwert, getState(sollwert_ID1).val)
       }
      }
      
      else if (istwert >= 1) {
       {setState(sollwert, 30); //ersatzwert
       } 
      }
      });
      

      Ich will eigentlich immer den grössten vergleich nutzten.
      Bin wahrscheinlich komplett daneben oder?

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @mike1976 bissel zu viele klammern...

      const wert_1 = getState("javascript.0.Test.wert_1").val;
      const wert_2 = getState("javascript.0.Test.wert_2").val;
      
      on(wert_1 || wert_2, function (obj) {    
      
        if (istwert  >= vorgabe_ID4_min) {
         setState(sollwert, getState(sollwert_ID4).val)
        } else if (istwert >= vorgabe_ID3_min) {
                     setState(sollwert, getState(sollwert_ID3).val)
              } else if (istwert >= vorgabe_ID2_min) {
                      setState(sollwert, getState(sollwert_ID2).val)
                     } else if (istwert >= vorgabe_ID1_min) {
                            setState(sollwert, getState(sollwert_ID1).val)
                     } else if (istwert >= 1) {
                        setState(sollwert, 30); //ersatzwert
                     }
      });
      

      Tipp: gewöhne dir an Code zu formatieren

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      1 Antwort Letzte Antwort
      0
      • M Offline
        M Offline
        mike1976
        schrieb am zuletzt editiert von mike1976
        #3
        on({id: "javascript.0.Test.wert_1"}, function (obj) { 
              
          if (sollwert>= vorgabe_ID4_min) {
           setState(sollwert, getState(sollwert_ID4).val)
          } else if (sollwert>= vorgabe_ID3_min) {
                       setState(sollwert, getState(sollwert_ID3).val)
                } else if (sollwert>= vorgabe_ID2_min) {
                        setState(sollwert, getState(sollwert_ID2).val)
                       } else if (sollwert>= vorgabe_ID1_min) {
                             setState(sollwert, getState(sollwert_ID1).val)
                       } else if (sollwert>= 1) {
                          setState(sollwert, 30); //ersatzwert
                       }
                       
        });
        if (sollwert>= vorgabe_ID1_min) log(sollwert_ID1);
        if (sollwert>= vorgabe_ID2_min) log(sollwert_ID2);
        if (sollwert>= vorgabe_ID3_min) log(sollwert_ID3);
        if (sollwert>= vorgabe_ID4_min) log(sollwert_ID4);
        

        hmm... die vergleiche kommen zu stande,
        aber die sollwert übergabe bleibt immer in einem vergleich hängen und
        erst wenn ich das script neustarte geht er in den next richtigen vergleich.

        ist der ablauf nicht so:

        1.) on({id: "javascript.0.Test.wert_1"}, bei wert änderung
        2.) code wird abgearbeitet von oben nach unten und alle vergleiche werden neu ausgewertet.

        Habe mal bewusst "on(wert_1 || wert_2," weggelassen weil bei den tut sich gar nichts.

        1 Antwort Letzte Antwort
        0
        • J.A.R.V.I.S.J Offline
          J.A.R.V.I.S.J Offline
          J.A.R.V.I.S.
          Developer
          schrieb am zuletzt editiert von J.A.R.V.I.S.
          #4

          Hey,

          Punkt 1 ist soweit richtig.

          Wenn du die folgenden Zeilen meinst, die nur einmalig ausgeführt werden, dann ist die Annhame richtig, da diese nur einmal beim starten durchlaufen werden. Anderfalls müsstest du sie in den on() Teil mit einbauen.

          if (sollwert>= vorgabe_ID1_min) log(sollwert_ID1);
          if (sollwert>= vorgabe_ID2_min) log(sollwert_ID2);
          if (sollwert>= vorgabe_ID3_min) log(sollwert_ID3);
          if (sollwert>= vorgabe_ID4_min) log(sollwert_ID4);
          

          J.A.R.V.I.S.

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          682

          Online

          32.7k

          Benutzer

          82.3k

          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