NEWS
Test auf eindeutige Datenpunktnamen
-
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'); -
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 !== '') -
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.
-
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"); ...if(name && name !== '') ```` `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. -
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
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