Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Anfänger if und if else

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Anfänger if und if else

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mike1976 last edited by Jey Cee

      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?

      arteck 1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active @mike1976 last edited by

        @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

        1 Reply Last reply Reply Quote 0
        • M
          mike1976 last edited by mike1976

          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 Reply Last reply Reply Quote 0
          • J.A.R.V.I.S.
            J.A.R.V.I.S. Developer last edited by J.A.R.V.I.S.

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

            Support us

            ioBroker
            Community Adapters
            Donate

            557
            Online

            31.8k
            Users

            80.0k
            Topics

            1.3m
            Posts

            javascript
            3
            4
            308
            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