NEWS
Alias über script anlegen - wo sind die Ordner?
-
Hier z. B. mein Script code:
// Original-Datenpunkt const idOrigin = 'deconz.0.Lights.7.on'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; //'knx.0.Wohnen.Licht.Esstisch_Status'/*Wohnen Licht Esstisch Status*/; // Alias-A Licht const idAlias = 'Licht Wintergarten; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'A Licht Wintergarten'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' //read = "Math.round(0+3 * val)/100"; // a und b durch Zahlen ersetzen ! //write = "val ? true : true"; //role = 'value'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen //unit = '°C'; // nur für Zahlen //states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein) // custom = []; // verhindert doppelte Ausführung von history, ... raum = 'wintergarten'; // Groß-/Kleinschreibung in der ID beachten ! gewerk = 'licht'; // Groß-/Kleinschreibung in der ID beachten ! // Ab hier nichts ändern !! function createAlias(idDst, idSrc, idRd) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = 'state'; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; if(typeAlias) obj.common.type = typeAlias; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; if(nameAlias) obj.common.name = nameAlias; if(role) obj.common.role = role; if(desc) obj.common.desc = desc; if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj); if(raum && existsObject('enum.rooms.' + raum)) { let obj = getObject('enum.rooms.' + raum) obj.common.members.push(idDst); setObject('enum.rooms.' + raum, obj); } if(gewerk && existsObject('enum.functions.' + gewerk)) { let obj = getObject('enum.functions.' + gewerk) obj.common.members.push(idDst); setObject('enum.functions.' + gewerk, obj); } } } createAlias('alias.0.' + idAlias, idOrigin, idRead);Leider scheinen in Objekte keine Ordner "Zimmer und Licht" erstellt zu werden - was ich eigentlich dachte - wie bekomme ich sie denn in Ordner (Objekte Flutlicht und Licht Terrasse)?

-
Hier z. B. mein Script code:
// Original-Datenpunkt const idOrigin = 'deconz.0.Lights.7.on'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; //'knx.0.Wohnen.Licht.Esstisch_Status'/*Wohnen Licht Esstisch Status*/; // Alias-A Licht const idAlias = 'Licht Wintergarten; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'A Licht Wintergarten'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' //read = "Math.round(0+3 * val)/100"; // a und b durch Zahlen ersetzen ! //write = "val ? true : true"; //role = 'value'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen //unit = '°C'; // nur für Zahlen //states = {0: 'Aus', 1: 'Auto', 2: 'Ein'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein) // custom = []; // verhindert doppelte Ausführung von history, ... raum = 'wintergarten'; // Groß-/Kleinschreibung in der ID beachten ! gewerk = 'licht'; // Groß-/Kleinschreibung in der ID beachten ! // Ab hier nichts ändern !! function createAlias(idDst, idSrc, idRd) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = 'state'; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; if(typeAlias) obj.common.type = typeAlias; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; if(nameAlias) obj.common.name = nameAlias; if(role) obj.common.role = role; if(desc) obj.common.desc = desc; if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj); if(raum && existsObject('enum.rooms.' + raum)) { let obj = getObject('enum.rooms.' + raum) obj.common.members.push(idDst); setObject('enum.rooms.' + raum, obj); } if(gewerk && existsObject('enum.functions.' + gewerk)) { let obj = getObject('enum.functions.' + gewerk) obj.common.members.push(idDst); setObject('enum.functions.' + gewerk, obj); } } } createAlias('alias.0.' + idAlias, idOrigin, idRead);Leider scheinen in Objekte keine Ordner "Zimmer und Licht" erstellt zu werden - was ich eigentlich dachte - wie bekomme ich sie denn in Ordner (Objekte Flutlicht und Licht Terrasse)?

@brokeling sagte:
wie bekomme ich sie denn in Ordner (Objekte Flutlicht und Licht Terrasse)?
Durch Punkt in der Alias-ID, z.B. "Licht.Wintergarten" erzeugt den Datenpunkt "Wintergarten" im Ordner "Licht".
-
@brokeling sagte:
wie bekomme ich sie denn in Ordner (Objekte Flutlicht und Licht Terrasse)?
Durch Punkt in der Alias-ID, z.B. "Licht.Wintergarten" erzeugt den Datenpunkt "Wintergarten" im Ordner "Licht".
-
@brokeling sagte:
also so:
Weshalb doppelt ? Und bitte keine Leerzeichen in IDs verwenden ! "Licht Wintergarten" sollte der Name (nameAlias) sein.
-
@brokeling sagte:
also so:
Weshalb doppelt ? Und bitte keine Leerzeichen in IDs verwenden ! "Licht Wintergarten" sollte der Name (nameAlias) sein.
-
Also das geht schon sehr gut!
Aber eigentlich möchte ich es so erzeugen, dass ich für ein Alias Objekt z. B. 3 Zustände auf gleicher Ebene habe (die weiteren Zustände habe ich unter "Geräte" vergeben), ich denke so wäre es sinnvollr:- Set
- Dimmwert oder Farbe...
- reachable?
Jetzt habe ich aber eine (unerwünschte) Hierarchie:

Was kann man eigentlich unter "working", "maintain", "error" vergeben?
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