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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [GELÖST] id Übergabe an Function klappt nicht

NEWS

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

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

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

[GELÖST] id Übergabe an Function klappt nicht

Scheduled Pinned Locked Moved Skripten / Logik
8 Posts 6 Posters 1.0k Views
  • 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.
  • M Offline
    M Offline
    mctom
    wrote on last edited by
    #1

    Hallo zusammen,

    hier ein Auszug aus einem Script von mir:

    var = idRArbeitenTuer = "hm-rpc.0.IEQ123456.1.LEVEL"/*Rollo-Arbeiten-Tuer.LEVEL*/,
    idKArbeitenTuer = "hm-rpc.0.IEQ123456.1.STATE"/*Kontakt-Arbeiten-Tuer.STATE*/,
    idRolloStatus = "javascript.0.Rollo.Steuerung.Status"/*Rollo.Steuerung.Status*/;
    
    on({id: idKArbeitenTuer, change: "ne"}, function () {
    	kontakt (idKArbeitenTuer,idRArbeitenTuer);
    });
    
    function kontakt (namekontakt,namerollo){
        log("kontaktänderung " + namerollo + namekontakt);
        if(getState(namekontakt) === 2 && getState(idRolloStatus) === 2)setState(namerollo,20);
        if(getState(namekontakt) === 0 && getState(idRolloStatus) === 2)setState(namerollo,0);
    }
    
    

    Leider funktioniert das ganze nicht so wie es soll.

    Der Aufruf der Function klappt soweit. Allerdings bekomme ich nicht die korrekte Übergabe der IDs hin. Da die Anführungszeichen entfernt werden.

    Kann mir jemand helfen und vielleicht einen Tipp geben ?

    Gruß

    Michael

    1 Reply Last reply
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      wrote on last edited by
      #2

      Hey,

      hat mit den Anführungszeichen nichts zu tun. Ich denke eher das es daran liegt das ein "getState()" ein Objekt zurückgibt und nicht den Wert!!

      Du musst getState().val nutzen um den Wert zu bekommen!+

      Ingo

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Reply Last reply
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        wrote on last edited by
        #3
        var = idRArbeitenTuer
        

        Das funktioniert trotz dem Gleichheitszeichen hinter dem var?

        Das Gleichheitszeichen gehört nach meiner Meinung nicht nicht da hin.

        Adapter: Fritzbox, Unify Circuit
        Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

        1 Reply Last reply
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          wrote on last edited by
          #4

          Ja, das ist auch falsch. Hatte ich glatt übersehen

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Reply Last reply
          0
          • arteckA Offline
            arteckA Offline
            arteck
            Developer Most Active
            wrote on last edited by
            #5
            var idRArbeitenTuer = "hm-rpc.0.IEQ123456.1.LEVEL"/*Rollo-Arbeiten-Tuer.LEVEL*/;
            var idKArbeitenTuer = "hm-rpc.0.IEQ123456.1.STATE"/*Kontakt-Arbeiten-Tuer.STATE*/;
            var idRolloStatus = "javascript.0.Rollo.Steuerung.Status"/*Rollo.Steuerung.Status*/;
            
            on({id: idKArbeitenTuer, change: "ne"}, function () {
               kontakt (idKArbeitenTuer,idRArbeitenTuer);
            });
            
            function kontakt (namekontakt,namerollo) {
                log("kontaktänderung " + namerollo + namekontakt);
                if (getState(namekontakt) === 2 && getState(idRolloStatus) === 2) {
                	setState(namerollo,20);
                }
                if (getState(namekontakt) === 0 && getState(idRolloStatus) === 2) {
                	setState(namerollo,0);
                }
            }
            

            und hinten kein komma am variablendeklarationsende

            probier das mal..

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

            1 Reply Last reply
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              wrote on last edited by
              #6

              @arteck:

              und hinten kein komma am variablendeklarationsende `
              Deklarationen per Komma trennen ist vollkommen ok, solange hinter dem letzten ein Semikolon steht. Nur das = direkt hinter <u>var</u> darf nicht sein.

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Reply Last reply
              0
              • D Offline
                D Offline
                dwm
                wrote on last edited by
                #7
                var idRArbeitenTuer = "hm-rpc.0.IEQ123456.1.LEVEL"/*Rollo-Arbeiten-Tuer.LEVEL*/;
                var idKArbeitenTuer = "hm-rpc.0.IEQ123456.1.STATE"/*Kontakt-Arbeiten-Tuer.STATE*/;
                var idRolloStatus = "javascript.0.Rollo.Steuerung.Status"/*Rollo.Steuerung.Status*/;
                
                on({id: idKArbeitenTuer, change: "ne"}, function () {
                   kontakt (idKArbeitenTuer,idRArbeitenTuer);
                });
                
                function kontakt (namekontakt,namerollo) {
                    log("kontaktänderung " + namerollo + namekontakt);
                    if (getState(namekontakt).val === 2 && getState(idRolloStatus).val === 2) {
                       setState(namerollo,20);
                    }
                    if (getState(namekontakt).val === 0 && getState(idRolloStatus).val === 2) {
                       setState(namerollo,0);
                    }
                }
                

                … die .val nach den getStates haben noch gefehlt.

                Noch ein Tipp ... ich würde das mit mindestens 5s Verzögerung schalten. Sonst kriegt das Rollo immer Zuckungen, wenn jemand kurz mal den Hebel hin- und herdreht.

                Also:

                var idRArbeitenTuer = "hm-rpc.0.IEQ123456.1.LEVEL"/*Rollo-Arbeiten-Tuer.LEVEL*/;
                var idKArbeitenTuer = "hm-rpc.0.IEQ123456.1.STATE"/*Kontakt-Arbeiten-Tuer.STATE*/;
                var idRolloStatus = "javascript.0.Rollo.Steuerung.Status"/*Rollo.Steuerung.Status*/;
                var RolloTimer = null;
                
                on({id: idKArbeitenTuer, change: "ne"}, function () {
                   if (RolloTimer !== null) 
                       clearTimeout(RolloTimer);
                   RolloTimer = setTimeout( function() {kontakt (idKArbeitenTuer,idRArbeitenTuer);},5000);
                });
                
                function kontakt (namekontakt,namerollo) {
                    log("kontaktänderung " + namerollo + namekontakt);
                    if (getState(namekontakt).val === 2 && getState(idRolloStatus).val === 2) {
                       setState(namerollo,20);
                    }
                    if (getState(namekontakt).val === 0 && getState(idRolloStatus).val === 2) {
                       setState(namerollo,0);
                    }
                    RolloTimer=null;
                }
                
                

                Das ruft dann die Routine für Kontaktänderung erst nach 5s nach der letzten Statusänderung auf.

                BTDTBTTS …

                Werner

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mctom
                  wrote on last edited by
                  #8

                  Danke an alle für die Hilfe.

                  Da hatte ich am Anfang wohl Tomaten auf den Augen.

                  Die Idee mit den 5s habe ich direkt auch übernommen.

                  Gruß

                  Michael

                  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

                  774

                  Online

                  32.4k

                  Users

                  81.5k

                  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