Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Objekt-ID aus Objektnamen ermitteln ?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    663

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

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

Objekt-ID aus Objektnamen ermitteln ?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
11 Beiträge 2 Kommentatoren 4.0k 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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #1

    Wie kann ich außerhalb von "on / subscribe" aus dem Objektnamen die id ermitteln ?

    Voraussetzung: Der Name ist genau einmal vorhanden.

    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 Antwort Letzte Antwort
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      schrieb am zuletzt editiert von
      #2

      @paul53:

      Wie kann ich außerhalb von "on / subscribe" aus dem Objektnamen die id ermitteln ?

      Voraussetzung: Der Name ist genau einmal vorhanden. `

      ### getIdByName 
          getIdByName(name, alwaysArray)
      
      returns id of the object with given name. If there are more than one object with this name the result will be an array. If _alwaysArray_ flag is set, the result will be always an array if some ID found.
      
      

      Aber nur in der 0.5.4

      1 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #3

        Danke für die Ergänzung :D

        Würde ich gern testen, aber zur Zeit scheint es Probleme mit dem Zugriff auf GitHub zu geben.

        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 Antwort Letzte Antwort
        0
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          schrieb am zuletzt editiert von
          #4

          Ist mit noch eingefallen, dass auch das funktionieren sollte:

          $('channel[name=MyName]').each(function (id) {
              log(id + ' - ' + getObject(id).common.name);
          });
          $('state[name=MyName]').each(function (id) {
              log(id + ' - ' + getObject(id).common.name);
          });
          
          
          1 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            Beide Varianten hatte ich schon versucht.

            Bei der 1. Variante passiert nichts.

            Die 2. Variante liefert:

            javascript-0 2015-08-18 14:55:54 error script.js.Wohnen_Heizregler: TypeError: Cannot read property 'common' of undefined

            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 Antwort Letzte Antwort
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              schrieb am zuletzt editiert von
              #6

              Welchen Namen suchst du? Kannst du das Objekt, welches du suchst, zeigen?
              3473_home.txt
              3473_home2.txt

              1 Antwort Letzte Antwort
              0
              • paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #7

                Ich benötige die ID für die Initialisierung von Ist- und Sollwert bei Script-Start, da es sehr lange dauern kann, bis sich der Sollwert ändert.

                // 2-Punkt-Regler Raumheizung
                
                // Raumkurzname am Anfang des Datenpunktnamen
                var raum = "Wohnen";
                // halbe Hysterese in K
                var hh = 0.1;
                
                function hys(x, w) {
                    var dpname = raum + ".Heizen";
                    if (x <= w - hh) { setState(dpname, true);}
                    else if (x >= w + hh) { setState(dpname, false);}
                    log("2-Punkt: " + x + ", " + w);
                }
                
                var xname = raum + ".Temperatur";
                on({name: xname}, function(dp) {
                    this.x = dp.newState.val;
                    hys(this.x, this.w);
                });
                
                var wname = raum + ".Sollwert";
                on({name: wname}, function(dp) {
                    this.w = dp.newState.val;
                    hys(this.x, this.w);
                });
                
                // Script start
                var xid = "hm-rpc.1.CUX9002002.1.TEMPERATURE";  //getIdByName(xname);
                this.x = getState(xid).val;
                log("x: " + this.x);
                
                var wid = "hm-rpc.1.CUX9002002.2.SETPOINT";   //getIdByName(wname);
                this.w = getState(wid).val;
                log("w: " + this.w);
                
                

                Das sind die beiden Objekte:
                493_wohnen_sollwert.jpg
                493_wohnen_temperatur.jpg

                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 Antwort Letzte Antwort
                0
                • paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #8

                  Die Aktualisierung über ioBroker funktioniert noch immer nicht. Deshalb habe ich zum Testen mir die Datei "javascript.js" aus dem GitHub kopiert und ausgetauscht.

                  Die Funktion "getIdByName(name)" funktioniert einwandfrei :D :
                  ` > javascript-0 2015-08-18 17:14:37 info script.js.Wohnen_Heizregler: registered 2 subscriptions and 0 schedules

                  javascript-0 2015-08-18 17:14:37 info script.js.Wohnen_Heizregler: 2-Punkt: 25.8, 22.5

                  javascript-0 2015-08-18 17:14:37 info script.js.Wohnen_Heizregler: w: hm-rpc.1.CUX9002002.2.SETPOINT

                  javascript-0 2015-08-18 17:14:37 info script.js.Wohnen_Heizregler: x: hm-rpc.1.CUX9002002.1.TEMPERATURE

                  javascript-0 2015-08-18 17:14:37 info Start javascript script.js.Wohnen_Heizregler `
                  mit diesem Scriptende:

                  // Script start
                  var xid = getIdByName(xname);  //"hm-rpc.1.CUX9002002.1.TEMPERATURE";
                  this.x = getState(xid).val;
                  log("x: " + xid);
                  
                  var wid = getIdByName(wname);  //"hm-rpc.1.CUX9002002.2.SETPOINT";
                  this.w = getState(wid).val;
                  log("w: " + wid);
                  
                  hys(this.x, this.w);
                  
                  

                  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 Antwort Letzte Antwort
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #9

                    Hat man erst einmal die Objekt-ID des Datenpunktes, kann man das Script vereinfachen:

                    // 2-Punkt-Regler Raumheizung
                    
                    // Raumkurzname am Anfang des Datenpunktnamen
                    var raum = "Wohnen";
                    // halbe Hysterese in K
                    var hh = 0.1;
                    
                    var xid = getIdByName(raum + ".Temperatur");
                    var wid = getIdByName(raum + ".Sollwert");
                    var yid = getIdByName(raum + ".Heizen");
                    
                    function hys() {
                        var x = getState(xid).val;
                        var w = getState(wid).val;
                        if (x <= w - hh) { setState(yid, "Ein");}
                        else if (x >= w + hh) { setState(yid, "Aus");}
                    }
                    
                    on(xid, function() {
                        hys();
                    });
                    
                    on(wid, function() {
                        hys();
                    });
                    
                    // Script start
                    hys();
                    
                    

                    Könnte "getState()" auch mit dem Namen arbeiten, würde die ID nur selten benötigt werden.

                    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 Antwort Letzte Antwort
                    0
                    • BluefoxB Offline
                      BluefoxB Offline
                      Bluefox
                      schrieb am zuletzt editiert von
                      #10

                      @paul53:

                      Hat man erst einmal die Objekt-ID des Datenpunktes, kann man das Script vereinfachen:

                      // 2-Punkt-Regler Raumheizung
                      
                      // Raumkurzname am Anfang des Datenpunktnamen
                      var raum = "Wohnen";
                      // halbe Hysterese in K
                      var hh = 0.1;
                      
                      var xid = getIdByName(raum + ".Temperatur");
                      var wid = getIdByName(raum + ".Sollwert");
                      
                      function hys() {
                          var yname = raum + ".Heizen";
                          var x = getState(xid).val;
                          var w = getState(wid).val;
                          if (x <= w - hh) { setState(yname, true);}
                          else if (x >= w + hh) { setState(yname, false);}
                      }
                      
                      on(xid, function() {
                          hys();
                      });
                      
                      on(wid, function() {
                          hys();
                      });
                      
                      // Script start
                      hys();
                      
                      

                      Könnte "getState()" auch mit dem Namen arbeiten, würde die ID nur selten benötigt werden. `
                      Nach dem ich getIdByName implementiert habe wird es einfach getState über Name zu implementieren.

                      Was mache ich aber, falls man zwei States mit dem gleichen Namen habe?
                      1148_wallpaper.jpg

                      1 Antwort Letzte Antwort
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #11

                        @Bluefox:

                        Was mache ich aber, falls man zwei States mit dem gleichen Namen habe? `
                        Den ersten gefundenen State nehmen, so wie HM Script.

                        Noch besser: Einen Prüflauf implementieren, der auf mehrfache Vergabe von Namen testet.

                        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 Antwort Letzte Antwort
                        0

                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                        Registrieren Anmelden
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        213

                        Online

                        32.7k

                        Benutzer

                        82.6k

                        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