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. [Gelöst] Keymatic Fernbedienung mit SPS

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Gelöst] Keymatic Fernbedienung mit SPS

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
22 Beiträge 5 Kommentatoren 2.3k Aufrufe
  • Ä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.
  • DutchmanD Offline
    DutchmanD Offline
    Dutchman
    Developer Most Active Administrators
    schrieb am zuletzt editiert von
    #11

    @TOBO:

    Also ich gebe es auf. Mit script bekomme ich es nicht hin. `

    noe das machen wir nicht das schaffen wa schon :)

    ich kappiere nur total nicht was du hiermit meinst (vielleicht zu spaet fuer mich…)

    @TOBO:

    LD     M0.0
    UN     A0.2
    S      A0.2, 1
    R      M0.0, 1
    
    LD     M0.0
    U      A0.2
    R      A0.2, 1
    R      M0.0, 1
    
    ```` ` 
    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      TOBO
      schrieb am zuletzt editiert von
      #12

      Veegiss das. Ist nur das SPS Programm. Damit gehts sofort.

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #13

        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?

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          TOBO
          schrieb am zuletzt editiert von
          #14

          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 Antwort Letzte Antwort
          0
          • T Offline
            T Offline
            TOBO
            schrieb am zuletzt editiert von
            #15

            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 Antwort Letzte Antwort
            0
            • blauholstenB Offline
              blauholstenB Offline
              blauholsten
              Developer
              schrieb am zuletzt editiert von
              #16

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

              Entwickler vom: - Viessman Adapter
              - Alarm Adapter

              1 Antwort Letzte Antwort
              0
              • DutchmanD Offline
                DutchmanD Offline
                Dutchman
                Developer Most Active Administrators
                schrieb am zuletzt editiert von
                #17

                @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 Antwort Letzte Antwort
                0
                • T Offline
                  T Offline
                  TOBO
                  schrieb am zuletzt editiert von
                  #18
                  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 Antwort Letzte Antwort
                  0
                  • P Offline
                    P Offline
                    pix
                    schrieb am zuletzt editiert von
                    #19
                    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

                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                    1 Antwort Letzte Antwort
                    0
                    • T Offline
                      T Offline
                      TOBO
                      schrieb am zuletzt editiert von
                      #20

                      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 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        TOBO
                        schrieb am zuletzt editiert von
                        #21

                        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 Antwort Letzte Antwort
                        0
                        • T Offline
                          T Offline
                          TOBO
                          schrieb am zuletzt editiert von
                          #22

                          Habe es gefunden und es geht jetzt.

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

                          Ohne State funktioniert es.

                          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

                          343

                          Online

                          32.6k

                          Benutzer

                          82.2k

                          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