NEWS
Alias-Adapter | Mehrere Stats eines Geräts
-
Hallo alle zusammen,
ich habe angefangen den Alias-Adapter zu nutzen.
Im ersten Schritt für meine Beleuchtung.Nun habe ich bisher nur die On / Off States in den Alias Adapter hinzugefügt.
Für diesen einen Status klappt das hervorragend.Nun haben diverse Lampen aber weitere interessante States (Dimmen, Farbe, etc.)
Gibt es eine Möglichkeit, diese weiteren Stats mit unter dem Alias Ordner hinzuzufügen - also zusätzlich zu dem SET Datenpunkt?
Natürlich könnte ich den weiteren Datenpunkt mit einem anderen Alias Namen hinzufügen, aber anders wäre es deutlich schöner für mich.
Danke und liebe Grüße
Micha -
@n3ucr0n so?
Hab ich mit dem Script hier aus dem Forum gemacht -
@htrecksler ja, ich glaube das sieht so aus wie ich das gerne hätte!
Kannst du mir das Script verlinken?
Danke
-
@n3ucr0n sagte: Script verlinken?
-
@paul53 perfekt, das meinte ich! danke
-
@paul53 Leider scheint es doch nicht so zu klappen wie ich das gehofft habe.
Ich kann zwar einen Alias Datenpunkt anlegen, aber anstelle, dass der Datenpunkt zu den vorhandenem Strukturbaum des Alias-Adapters hinzugefügt wird, wird ein komplett neuer Baum erzeugt.
Das Bringt mich leider nicht weiter...Was habe ich falsch gemacht?
Vorhandene (durch den Alias-Adapter angelegte) Datenstruktur:
Script
// Original-Datenpunkt const idOrigin = 'zigbee.0.00124b0021929b4c.color'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = 'alias.0.Büro.Büro_Schreibtisch.Farbe'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'Poolpumpe Ein'; desc = 'per Script erstellt'; // typeAlias = 'boolean'; // oder 'number' // read = "val < 0 ? -val : 0"; // Erkennung "Aus" --> false erfolgt automatisch // write = "val ? String(1) : String(0)"; // role = 'value'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen // unit = '%'; // 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 = 'EG_Flur'; // 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(obj.common.type == 'number') { if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; } else { if(obj.common.min !== undefined) delete obj.common.min; if(obj.common.max !== undefined) delete obj.common.max; if(obj.common.unit) delete obj.common.unit; } if(states) obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj, function() { if(idRd) setState(idRd, getState(idRd).val, true); else setState(idSrc, getState(idSrc).val, true); }); 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);
(Hinweis: Den Namen "Poolpumpe Ein" habe ich gesehen -> Ist für das Problem jetzt aber nicht erheblich)
Erstellte Datenstruktur durch das Script:
Beide "alias Objektbäume" existieren nun parallel.
Wie kann die mit dem Script die Datenpunkte des Objektbaumes erweitern, welcher durch den Alias Adapter angelegt wurde?
Und eine Verwaltung der über das Skript angelegten Alias ist dann im Nachgang auch nicht möglich, oder?Ich finde ja grade den Alias Adapter klasse und würde gerne das Management über eben diesen nutzen.
Dafür gibt es noch keine Lösung?Danke und liebe Grüße
-
@n3ucr0n
Du musst eine identische ID für die Ordner ohne "alias.0." angeben:const idAlias = 'Büro.Büro_Schreibtisch.Farbe';
Ich würde Umlaute in der ID vermeiden (im Namen kein Problem).
-
@paul53 Das war die Lösung! Danke!