Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Keymatic Fernbedienung mit SPS

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Gelöst] Keymatic Fernbedienung mit SPS

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pix last edited by

      Hallo,

      das Abrufen der Objekte in den If-Bedingungen ist falsch. Ausserdem ist idDst machmal true und manchmal 0

      var idSrc = "hm-rpc.0.OEQ0119854.3.PRESS_SHORT";
      var idDst = "s7.0.Outputs.0.Lin_Licht";
      var Flag = "s7.0.Markers.0.Flag_Licht";
      
      subscribe ({id: idSrc, val:true}, function(data) {
         setState(Flag,true);
         //log(getState(Flag).val);
      });
      
      on(Flag, function(dp) {  // Triggern bei Änderung
      
      IF (getState(IdDst.State).val  == "0" );
      {
        setState(idDst,true);
          setState(Flag,false);
      }
      
      IF (getState(IdDst.State).val == "1" );
      {
        setState(idDst,false);
          setState(Flag,false);
      }
      });
      
      

      Gruß

      Pix

      PS: Kannst du den Thread Titel noch in Keymatic Fernbedienung mit SPS ändern?

      1 Reply Last reply Reply Quote 0
      • T
        TOBO last edited by

        Ja ja, die liebe Syntax. Da brauch ich noch ein bisschen.

        Das Zweite If könnte man auch durch einfügen von Else im esten ersetzen.

        Das bekomme ich auch nicht hin.

        Wenn Du mir das noch zeigen könntest, bin ich ein glücklicher Mann

        Großen Dank

        ToBo

        PS: müsste es nicht auch funktionieren, wenn ich bei dem Flag in der Deklaration die Zuordnung zu einem Merker in der SPS weglasse und Flag dann eine interne Variable ist ?

        1 Reply Last reply Reply Quote 0
        • T
          TOBO last edited by

          Habe Deinen Code gerade getestet und leider kommt eine Mega Fehlermeldung.

          • avascript.0 ReferenceError: IF is not defined at Object. (script.js.HM_to_S7.Lin-Licht:12:1) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3237:17) at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3256:28) at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3256:28) at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3045:37) at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:93:25)

          ` > avascript.0 2017-06-21 10:23:00.900 info Stop script script.js.HM_to_S7.Lin-Licht

          javascript.0 2017-06-21 10:22:58.334 error at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:93:25)

          javascript.0 2017-06-21 10:22:58.334 error at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3045:37)

          javascript.0 2017-06-21 10:22:58.334 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17)

          javascript.0 2017-06-21 10:22:58.334 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17)

          javascript.0 2017-06-21 10:22:58.334 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3256:28)

          javascript.0 2017-06-21 10:22:58.334 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3256:28)

          javascript.0 2017-06-21 10:22:58.334 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3237:17)

          javascript.0 2017-06-21 10:22:58.334 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48

          javascript.0 2017-06-21 10:22:58.334 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48)

          javascript.0 2017-06-21 10:22:58.334 error at Object. (script.js.HM_to_S7.Lin-Licht:12:1)

          javascript.0 2017-06-21 10:22:58.334 error ReferenceError: IF is not defined

          javascript.0 2017-06-21 10:22:58.328 error pmessage io.s7.0.Markers.0.Flag_Licht {'val':false,'ack':true,'ts':1498033378325,'q':0,'from':'system.adapter.s7.0','lc':1498033378325} IF is not defined

          javascript.0 2017-06-21 10:22:56.830 error at RedisClient. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInRedis.js:93:25)

          javascript.0 2017-06-21 10:22:56.830 error at change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:3045:37)

          javascript.0 2017-06-21 10:22:56.830 error at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17)

          javascript.0 2017-06-21 10:22:56.830 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17)

          javascript.0 2017-06-21 10:22:56.830 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3256:28)

          javascript.0 2017-06-21 10:22:56.830 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3256:28)

          javascript.0 2017-06-21 10:22:56.830 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3237:17)

          javascript.0 2017-06-21 10:22:56.830 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48

          javascript.0 2017-06-21 10:22:56.830 error at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48)

          javascript.0 2017-06-21 10:22:56.830 error at Object. (script.js.HM_to_S7.Lin-Licht:12:1)

          javascript.0 2017-06-21 10:22:56.830 error ReferenceError: IF is not defined

          javascript.0 2017-06-21 10:22:56.825 error pmessage io.s7.0.Markers.0.Flag_Licht {'val':true,'ack':false,'ts':1498033376821,'q':0,'from':'system.adapter.javascript.0','lc':1498033376821} IF is not defined

          javascript.0 2017-06-21 10:22:53.280 info script.js.HM_to_S7.Lin-Licht: registered 2 subscriptions and 0 schedules `

          1 Reply Last reply Reply Quote 0
          • blauholsten
            blauholsten Developer last edited by

            JavaScript ist case sensitiv, IF muss klein geschrieben werden…...if

            1 Reply Last reply Reply Quote 0
            • Dutchman
              Dutchman Developer Most Active Administrators last edited by

              @TOBO:

              Ja ja, die liebe Syntax. Da brauch ich noch ein bisschen.

              Das Zweite If könnte man auch durch einfügen von Else im esten ersetzen.

              Das bekomme ich auch nicht hin.

              Wenn Du mir das noch zeigen könntest, bin ich ein glücklicher Mann `

              du meinst den code

              IF (getState(IdDst.State).val  == "0" );
              {
                setState(idDst,true);
                  setState(Flag,false);
              }
              
              IF (getState(IdDst.State).val == "1" );
              {
                setState(idDst,false);
                  setState(Flag,false);
              }
              });
              
              

              umsetzen in eine elseif

              IF (getState(IdDst.State).val  == "0" ){
                setState(idDst,true);
                setState(Flag,false);
              } elseif (getState(IdDst.State).val == "1"){
                  setState(idDst,false);
                  setState(Flag,false);
              };
              
              

              ?

              1 Reply Last reply Reply Quote 0
              • T
                TOBO last edited by

                on(Flag, function(dp) {  // Triggern bei Änderung
                
                

                Soweit ich es verstehe, bedeutet obiger Code, das diese Funktion jedesmal bearbeitet wird, wenn sich der Status der Vaiable Flag ändert

                In diesem Fall von 0 –> 1 --> 0

                Ich möchte aber nur, dass die Funktion bearbeitet wird, wenn Flag von 0 --> 1 geht.

                Geht das auch ?

                1 Reply Last reply Reply Quote 0
                • P
                  pix last edited by

                  on({id: Flag,
                      val: 1,
                      oldVal: 0,
                      change: 'ne'
                  }, function(dp) {
                     // tue was (kein if mehr nötig)
                  });
                  

                  oder wenn Flag sowieso nur 0 oder 1 sein kann (und eine Nummer ist und kein String)

                  on({id: Flag,
                      change: 'gt'
                  }, function(dp) {  // Wert größer als alter Wert
                     // tue was (kein if mehr nötig)
                  });
                  

                  oder klassisch:

                  on(Flag,
                  function(dp) {  // Wert größer als alter Wert
                     if ((dp.state.val =="1") && (dp.oldState.val ==="0")) log('Neuer Wert');
                  
                  });
                  

                  steht alles hier: https://github.com/ioBroker/ioBroker.ja ... some-state

                  Gruß

                  Pix

                  1 Reply Last reply Reply Quote 0
                  • T
                    TOBO last edited by

                    Super und Danke.

                    Ich sehe halt viele Scripts, die super vereinfacht geschrieben sind. Auch wenn sie funktionieren, verstehe ich doch mit der kompletten, nicht einfachen Schreibweise eher was da passiert.

                    Gruss.

                    ToBo

                    1 Reply Last reply Reply Quote 0
                    • T
                      TOBO last edited by

                      Ich dachte das wär es nun und ich weiss wie es geht und schon gehts eben nicht.

                      Ich habe nun das hier:

                      var idSrc = "hm-rpc.0.OEQ0119854.3.PRESS_SHORT";
                      var idDst = "s7.0.Outputs.0.Lin_Licht";
                      var Flag = "s7.0.Markers.0.Flag_Licht";
                      
                      subscribe ({id: idSrc, val:true}, function(data) {
                      log(getState(idDst).val);
                      
                      if (getState(idDst.State).val  === false )
                      {
                       setState(idDst,true);
                        log(getState(idDst).val);
                        log("True setzen");
                       } else {
                       setState(idDst,false);
                         log(getState(idDst).val);
                         log(" else false setzen");
                      }
                      
                      });
                      
                      

                      Es wird ausschließlich der Else teil bearbeitet. idDst ist definitiv false, aber wird nicht erkannt. Habe es auch mit

                      if (getState(idDst.State).val  == "0" )
                      

                      versucht. Gleiche Ergebnis. Im IOBroker Log habe ich auch eine Warnung "State "undefined" not found"

                      1 Reply Last reply Reply Quote 0
                      • T
                        TOBO last edited by

                        Habe es gefunden und es geht jetzt.

                        if (getState(idDst).val  == "0" )
                        

                        Ohne State funktioniert es.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        451
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        5
                        22
                        2127
                        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