NEWS
value in true oder false
-
-
-
@paul53 wie genau geht das in Blockly?
-
@janwed sagte: wie genau geht das in Blockly?
Das hat mit Blockly nichts zu tun.
-
@paul53 und wie kriege ich dass dann richtig hin?
-
@janwed sagte: wie kriege ich dass dann richtig hin?
Zum Erzeugen des Alias im folgenden Script idOrigin, idAlias und nameAlias anpassen und das Script einmal kurz starten:
// Original-Datenpunkt const idOrigin = 'xyz.status'; // Optional: Status-Datenpunkt, wenn Kommando und Status getrennt. // Bei Nicht-Verwendung Leerstring '' zuweisen const idRead = ''; // Alias-Datenpunkt const idAlias = 'Wohnen.Fenster.Status'; var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom, raum, gewerk; // Folgende kommentieren, wenn keine Änderung der Eigenschaft erforderlich nameAlias = 'Fenster xyz'; desc = 'per Script erstellt'; typeAlias = 'boolean'; // oder 'number' read = "val == 'open'"; // Erkennung "Aus" --> false erfolgt automatisch // write = "val ? 'ON' : 'OFF'"; role = 'indicator'; // min = 0; // nur Zahlen // max = 100; // nur Zahlen // unit = '%'; // nur für Zahlen states = {false: 'geschlossen', true: 'offen'}; // 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);
-
@paul53 Was ist dieser Alias datenpunkt?
-
@janwed sagte: Was ist dieser Alias datenpunkt?
Die Doku zum Alias hatte ich oben bereits verlinkt.
-
@paul53 Wie binde Ich jetzt den Alias in Blockly ein?
-
@paul53 Hat funktioniert, jetzt ist das Problem(siehe Bild) dass ich kein wahr oder falsch dahinter als block einsetzen kann?
-
@janwed sagte: dass ich kein wahr oder falsch dahinter als block einsetzen kann?
Die "Objekt ID" ist auch ein String. Du möchtest sicherlich den "Wert vom Objekt" vergleichen?
Da der Wert schon false oder true liefert, ist ein Vergleich mit "wahr" unnötig.