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. Test auf eindeutige Datenpunktnamen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    507

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

Test auf eindeutige Datenpunktnamen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
5 Beiträge 3 Kommentatoren 1.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 paul53
    #1

    Mit folgendem Skript teste ich, ob alle Datenpunktnamen in ioBroker eindeutig sind:

    var eindeutig = true;
    
    $('state').each(function (id, i) {
        var obj = getObject(id);
        var name;
        if(obj && obj.common) name = obj.common.name;
        if(name && name !== '') {
            var ids = getIdByName(name);
            if(typeof ids === 'object') {
                log(name + ':  ' + JSON.stringify(ids));
                eindeutig = false;
            }
        }
    });
    
    if(eindeutig) log('Alle DP-Namen sind eindeutig');
    
    

    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
    • blauholstenB Offline
      blauholstenB Offline
      blauholsten
      Developer
      schrieb am zuletzt editiert von
      #2

      Hi paul53

      Könntest du mal kurz genauer erklären was der Hintergrund ist das zu benutzen?

      Zweite Frage, kann SZ diese Abfrage mal erklären, ich stehe da ein bisschen auf dem Schlauch und verstehe das nicht ganz. :oops:

      if(name && name !== '')
      

      Entwickler vom: - Viessman Adapter
      - Alarm Adapter

      1 Antwort Letzte Antwort
      0
      • ruhr70R Offline
        ruhr70R Offline
        ruhr70
        schrieb am zuletzt editiert von
        #3

        @blauholsten:

        Zweite Frage, kann SZ diese Abfrage mal erklären, ich stehe da ein bisschen auf dem Schlauch und verstehe das nicht ganz. :oops:

        if(name && name !== '')
        ```` `  
        

        if(name) -> true, wenn vorhanden (auch "")

        if(name !== '') -> true, wenn der Name nicht leer ist.

        Zusammen:

        name existiert UND (&&) ist nicht leer

        [EDIT] zum ersten Teil der Frage:

        Wie ich es verstanden habe, nutzt Paul für alle seine Skripte den Namen und nicht die vollständige id.

        Dadurch muss er die Skripte nicht anpassen, wenn z.B. eine defekte Homematic Komponente ausgetauscht wird.

        Damit dies funktioniert, müssen aber alle Namen eindeutig vergeben werden.

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

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

          @blauholsten:

          Könntest du mal kurz genauer erklären was der Hintergrund ist das zu benutzen? `
          @ruhr70:

          …nutzt Paul für alle seine Skripte den Namen und nicht die vollständige id.

          Dadurch muss er die Skripte nicht anpassen, wenn z.B. eine defekte Homematic Komponente ausgetauscht wird.

          Damit dies funktioniert, müssen aber alle Namen eindeutig vergeben werden. `
          So ist es. Außerdem kann ich Skripte, die ich erfolgreich getestet habe, einfach kopieren (z.B. von einem Raum in einen anderen) ohne irgendeine Veränderung am Skript vornehmen zu müssen. Das funktioniert so:

          // Raumkurzname am Anfang des Datenpunktnamen und als JS-Gruppenname
          var raum = name.split(".")[2];
          
          var xid = getIdByName(raum + ".Temperatur");
          var wid = getIdByName(raum + ".Sollwert");
          var hid = getIdByName(raum + ".Heizen");
          ...
          
          

          @blauholsten:

          if(name && name !== '')
          ```` `  
          

          @ruhr70:

          name existiert UND (&&) ist nicht leer `
          Richtig: Datenpunkten, die ich nicht auswerten will, vergebe ich keinen Namen; also müssen diese aus dem Test ausgeklammert 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
          • blauholstenB Offline
            blauholstenB Offline
            blauholsten
            Developer
            schrieb am zuletzt editiert von
            #5

            @ruhr70:

            if(name) -> true, wenn vorhanden (auch "")

            if(name !== '') -> true, wenn der Name nicht leer ist.

            Zusammen:

            name existiert UND (&&) ist nicht leer `
            Man bin ich blind….Ich hatte da gerade voll das Brett vorm Kopf. Trotzdem danke

            Entwickler vom: - Viessman Adapter
            - Alarm Adapter

            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

            835

            Online

            32.5k

            Benutzer

            81.8k

            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