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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Javascript - Verständnisproblem mit if ...

NEWS

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

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

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

Javascript - Verständnisproblem mit if ...

Scheduled Pinned Locked Moved JavaScript
16 Posts 4 Posters 1.1k Views 3 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.
  • E ErazorVIP

    Hallo Sorry wenn ich hier mal was ganz simples fragen muss. Ich habe hier ein Problem mit einer If Abfrage.

    folgendes teste ich aber jedes mal bei false geht er trotzdem durch das if durch...:

    
    on({id: 'javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1'/*Timer Solar Plug1*/, change: "ne"}, (obj) => {
    log(obj.state.val)
    
        if (getState('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1'))  {
        log("in if")
        }
        else {
            log("nothing")
        }
    
    
    })
    

    else ruft er bei false nicht auf. Was mache ich falsch?

    Gruß

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by paul53
    #2

    @ErazorVIP sagte:

    Was mache ich falsch?

    Du prüfst das gesamte Zustandsobjekt (state), was immer true liefert, wenn vorhanden. Richtig wäre

        if (getState('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1').val)  {
    

    oder besser

        if (obj.state.val)  {
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    E K 2 Replies Last reply
    0
    • paul53P paul53

      @ErazorVIP sagte:

      Was mache ich falsch?

      Du prüfst das gesamte Zustandsobjekt (state), was immer true liefert, wenn vorhanden. Richtig wäre

          if (getState('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1').val)  {
      

      oder besser

          if (obj.state.val)  {
      
      E Offline
      E Offline
      ErazorVIP
      wrote on last edited by
      #3

      @paul53 DANKE!

      1 Reply Last reply
      0
      • paul53P paul53

        @ErazorVIP sagte:

        Was mache ich falsch?

        Du prüfst das gesamte Zustandsobjekt (state), was immer true liefert, wenn vorhanden. Richtig wäre

            if (getState('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1').val)  {
        

        oder besser

            if (obj.state.val)  {
        
        K Offline
        K Offline
        klassisch
        Most Active
        wrote on last edited by
        #4

        @paul53 sagte in Javascript - Verständnisproblem mit if ...:

        oder besser

            if (obj.state.val)  {
        

        warum ist das besser und wo finde ich mehr Informationen dazu?
        Erinnere mich ganz dunkel daran, daß man damit auch den vorherigen Status des Objscts abfragen kann, ohne das selbst zwischenspeichern zu müssen. Habe aber leider nichts mehr dazu gefunden.

        paul53P N 2 Replies Last reply
        0
        • K klassisch

          @paul53 sagte in Javascript - Verständnisproblem mit if ...:

          oder besser

              if (obj.state.val)  {
          

          warum ist das besser und wo finde ich mehr Informationen dazu?
          Erinnere mich ganz dunkel daran, daß man damit auch den vorherigen Status des Objscts abfragen kann, ohne das selbst zwischenspeichern zu müssen. Habe aber leider nichts mehr dazu gefunden.

          paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by paul53
          #5

          @klassisch sagte:

          warum ist das besser

          Weil das in der lokalen Variablen obj bereits vorliegt und nicht erst durch eine Funktion abgeholt werden muss (Ressourcenverbrauch).

          @klassisch sagte in Javascript - Verständnisproblem mit if ...:

          wo finde ich mehr Informationen dazu?

          In der Funktions-Doku.

          @klassisch sagte in Javascript - Verständnisproblem mit if ...:

          daß man damit auch den vorherigen Status des Objscts abfragen kann

          Ja, bei on()

          obj.oldState
          

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          K 1 Reply Last reply
          1
          • K klassisch

            @paul53 sagte in Javascript - Verständnisproblem mit if ...:

            oder besser

                if (obj.state.val)  {
            

            warum ist das besser und wo finde ich mehr Informationen dazu?
            Erinnere mich ganz dunkel daran, daß man damit auch den vorherigen Status des Objscts abfragen kann, ohne das selbst zwischenspeichern zu müssen. Habe aber leider nichts mehr dazu gefunden.

            N Offline
            N Offline
            Nahasapee
            wrote on last edited by Nahasapee
            #6

            @klassisch und wenn du in deinem else sowieso "nothing" machen willst und nur auf true reagieren willst kannst du es auch gleich in dein trigger setzen , dann brauchst du gar nix mehr prüfen.

            on({id: 'javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1'/*Timer Solar Plug1*/, change: "ne" , val :true},(obj)=>{});
            
            1 Reply Last reply
            0
            • paul53P paul53

              @klassisch sagte:

              warum ist das besser

              Weil das in der lokalen Variablen obj bereits vorliegt und nicht erst durch eine Funktion abgeholt werden muss (Ressourcenverbrauch).

              @klassisch sagte in Javascript - Verständnisproblem mit if ...:

              wo finde ich mehr Informationen dazu?

              In der Funktions-Doku.

              @klassisch sagte in Javascript - Verständnisproblem mit if ...:

              daß man damit auch den vorherigen Status des Objscts abfragen kann

              Ja, bei on()

              obj.oldState
              
              K Offline
              K Offline
              klassisch
              Most Active
              wrote on last edited by
              #7

              @paul53

              so langsam beginnt es zu dämmern.
              Bisher habe ich verwendet

              on({id: 'javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1', change: "ne"}, function() {
              	result = getState('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1').val;
              });
              

              und mich gefragt, warum das Objekt zweimal anfassen muß.
              Muß man aber nicht, geht auch so

              on({id: 'javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1', change: "ne"}, (obj){
              	result = obj.state.val;	
              });
              

              und es geht noch mehr wie zB. oldState.

              Ist dabei obj ein fester Begriff oder köönte das auch data123 oder so heißen?

              paul53P 1 Reply Last reply
              0
              • K klassisch

                @paul53

                so langsam beginnt es zu dämmern.
                Bisher habe ich verwendet

                on({id: 'javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1', change: "ne"}, function() {
                	result = getState('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1').val;
                });
                

                und mich gefragt, warum das Objekt zweimal anfassen muß.
                Muß man aber nicht, geht auch so

                on({id: 'javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1', change: "ne"}, (obj){
                	result = obj.state.val;	
                });
                

                und es geht noch mehr wie zB. oldState.

                Ist dabei obj ein fester Begriff oder köönte das auch data123 oder so heißen?

                paul53P Offline
                paul53P Offline
                paul53
                wrote on last edited by paul53
                #8

                @klassisch sagte:

                köönte das auch data123 oder so heißen?

                Ja. Ich verwende dp, das es das statische Objekt und den Zustand (state, oldState) liefert.

                on('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1', function(dp) { // triggert bei Wertänderung
                   let val = dp.state.val;	
                });
                

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                K 1 Reply Last reply
                0
                • paul53P paul53

                  @klassisch sagte:

                  köönte das auch data123 oder so heißen?

                  Ja. Ich verwende dp, das es das statische Objekt und den Zustand (state, oldState) liefert.

                  on('javascript.0.Visuobjekte.SoftSwitch.Timer_Solar_Plug1', function(dp) { // triggert bei Wertänderung
                     let val = dp.state.val;	
                  });
                  
                  K Offline
                  K Offline
                  klassisch
                  Most Active
                  wrote on last edited by
                  #9

                  @paul53 Danke, also dp als Abkürzung für data point. Muß man die unterscheiden, wenn man mehree "on" statements im Script hat, also dp01, dp02 ?

                  paul53P 1 Reply Last reply
                  0
                  • K klassisch

                    @paul53 Danke, also dp als Abkürzung für data point. Muß man die unterscheiden, wenn man mehree "on" statements im Script hat, also dp01, dp02 ?

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #10

                    @klassisch sagte:

                    Muß man die unterscheiden, wenn man mehree "on" statements im Script hat, also dp01, dp02 ?

                    Nein, Funktionsparameter sind lokal, d.h. nur innerhalb der jeweiligen Callback-Funktion gültig.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    K 1 Reply Last reply
                    0
                    • paul53P paul53

                      @klassisch sagte:

                      Muß man die unterscheiden, wenn man mehree "on" statements im Script hat, also dp01, dp02 ?

                      Nein, Funktionsparameter sind lokal, d.h. nur innerhalb der jeweiligen Callback-Funktion gültig.

                      K Offline
                      K Offline
                      klassisch
                      Most Active
                      wrote on last edited by
                      #11

                      @paul53 Danke! Falls man das schachteln würde (wobei mir bei on jetzt nichts dazu einfiele), dann wäre eine andere Benennung wohl sinnvoll.

                      paul53P 1 Reply Last reply
                      0
                      • K klassisch

                        @paul53 Danke! Falls man das schachteln würde (wobei mir bei on jetzt nichts dazu einfiele), dann wäre eine andere Benennung wohl sinnvoll.

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #12

                        @klassisch sagte:

                        Falls man das schachteln würde (wobei mir bei on jetzt nichts dazu einfiele), dann wäre eine andere Benennung wohl sinnvoll.

                        I.d.R. nicht. Beim Schachteln von Triggern sollte man genau wissen, was man tut.

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        K 1 Reply Last reply
                        0
                        • paul53P paul53

                          @klassisch sagte:

                          Falls man das schachteln würde (wobei mir bei on jetzt nichts dazu einfiele), dann wäre eine andere Benennung wohl sinnvoll.

                          I.d.R. nicht. Beim Schachteln von Triggern sollte man genau wissen, was man tut.

                          K Offline
                          K Offline
                          klassisch
                          Most Active
                          wrote on last edited by
                          #13

                          @paul53 wenn wir schon bei solchen "Abkürzungen" sind: Kann man den Datenpunkt nach der Operation auch wieder vereinfacht zurückspeichern, also nicht mit setState(id, value), sondern mit dp. irgendwas?

                          paul53P 1 Reply Last reply
                          0
                          • K klassisch

                            @paul53 wenn wir schon bei solchen "Abkürzungen" sind: Kann man den Datenpunkt nach der Operation auch wieder vereinfacht zurückspeichern, also nicht mit setState(id, value), sondern mit dp. irgendwas?

                            paul53P Offline
                            paul53P Offline
                            paul53
                            wrote on last edited by
                            #14

                            @klassisch sagte:

                            Kann man den Datenpunkt nach der Operation auch wieder vereinfacht zurückspeichern,

                            Du meinst den Trigger-Datenpunkt ?

                            setState(dp.id, neuer_Wert);
                            

                            Damit löst man aber meist einen neuen Trigger aus.

                            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                            K 1 Reply Last reply
                            0
                            • paul53P paul53

                              @klassisch sagte:

                              Kann man den Datenpunkt nach der Operation auch wieder vereinfacht zurückspeichern,

                              Du meinst den Trigger-Datenpunkt ?

                              setState(dp.id, neuer_Wert);
                              

                              Damit löst man aber meist einen neuen Trigger aus.

                              K Offline
                              K Offline
                              klassisch
                              Most Active
                              wrote on last edited by
                              #15

                              @paul53 sagte in Javascript - Verständnisproblem mit if ...:

                              @klassisch sagte:

                              Kann man den Datenpunkt nach der Operation auch wieder vereinfacht zurückspeichern,

                              Du meinst den Trigger-Datenpunkt ?

                              Ja, den Datenpunkt, auf den man getriggert hat, dessen Wert man dann entnommen und verarbeitet hat und dessen neuen Wert man dann zurückspeichern möchte.

                              setState(dp.id, neuer_Wert);
                              

                              Damit löst man aber meist einen neuen Trigger aus.

                              Oh, das könnte dann oszillieren bzw. in einer Endlosschleife enden.

                              paul53P 1 Reply Last reply
                              0
                              • K klassisch

                                @paul53 sagte in Javascript - Verständnisproblem mit if ...:

                                @klassisch sagte:

                                Kann man den Datenpunkt nach der Operation auch wieder vereinfacht zurückspeichern,

                                Du meinst den Trigger-Datenpunkt ?

                                Ja, den Datenpunkt, auf den man getriggert hat, dessen Wert man dann entnommen und verarbeitet hat und dessen neuen Wert man dann zurückspeichern möchte.

                                setState(dp.id, neuer_Wert);
                                

                                Damit löst man aber meist einen neuen Trigger aus.

                                Oh, das könnte dann oszillieren bzw. in einer Endlosschleife enden.

                                paul53P Offline
                                paul53P Offline
                                paul53
                                wrote on last edited by
                                #16

                                @klassisch sagte:

                                Oh, das könnte dann oszillieren bzw. in einer Endlosschleife enden.

                                Ja, wenn man es nicht abfängt.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                606

                                Online

                                32.4k

                                Users

                                81.4k

                                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