NEWS
value in true oder false
-
Hallo.
Ich bin neu im Thema Iobroker und blockly.
Ich wollte wissen ob es möglich ist aus einer value in Objekte, ein true oder false heraus zu bekommen.
Zum Beispiel value=open, daraus möchte ich dann value=true oder value=closed, daraus dann value=false. -
@janwed sagte in value in true oder false:
Zum Beispiel value=open
ist das wirklich so?
Wie sieht denn as RAW von dem Datenpunkt aus
Oder: was sit das für ein Datenpunkt? -
-
-
@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.