ich habe grad wieder ein paar Probleme mit dem Alias. Die DP dort lege ich gern manuell an, klappte auch in der Vergangenheit ganz gut.
Nun wollte ich ein Device anlegen, bei dem ich eine Meldung bekomme "... existiert schon..." nur im Objektbaum angezeigt wird es nicht.
Ich hatte dann zum Testen dieses Script zum anlegen genutzt:
Spoiler
// Original-Datenpunkt
const idOrigin = 'sonoff.0.DVES_C6EB88.POWER'/*Switch*/
// Alias-Datenpunkt
const idAlias = 'Licht.KG Fitnessraum Spot';
var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom;
// Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich
nameAlias = 'KG Fitnessraum Spot.state';
// desc = 'per Script erstellt';
//typeAlias = 'boolean'; // oder 'number'
// read = "val == 'Ein' ? true : false"; // Erkennung "Aus" --> false erfolgt automatisch
// write = "val ? 'Ein' : 'Aus'";
// role = 'switch';
// min = 0; // nur Zahlen
// max = 100; // nur Zahlen
//unit = ''; // nur für Zahlen
states = {false: 'ausgeschaltet', true: 'eingeschaltet'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
custom = []; // verhindert doppelte Ausführung von history, telegram, mqtt-client, ...
function createAlias(idSrc, idDst) {
if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn');
else {
var obj = {};
obj.type = 'state';
obj.common = getObject(idSrc).common;
obj.common.alias = {};
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);
}
}
createAlias(idOrigin, 'alias.0.' + idAlias);
Problem, ich werde die DP nicht mehr los.
Manuell über die Tonne im Objektbaum oder mit
deleteObject('alias.0.Licht');
nach einem Neustat der Javascriptinstans ist der DP wieder da.
Wo ist mein Denkfehler?