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)?
-
@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".
-
@paul53
also so:const idAlias = 'Licht.Wintergarten.Licht Wintergarten';
-
@brokeling sagte:
also so:
Weshalb doppelt ? Und bitte keine Leerzeichen in IDs verwenden ! "Licht Wintergarten" sollte der Name (nameAlias) sein.
-
@paul53
o.k., muss ich ausprobieren - danke! -
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?