NEWS
[Vorlage] Alias per Skript erzeugen
-
@Markus84 sagte:
Wenn ich Name, state oder role ändere, wird diese Änderung jedoch nicht mitsynchronisiert. Ist das normal?
Ja, das sind statische Attribute. Der Alias kann andere Attribute haben als das Original, wozu bei der Alias-Erzeugung die kommentierten Zeilen im Skript dienen. Einmal erzeugte Attribute können nur manuell geändert werden.
-
Hallo, leider wird bei mir der alias.0 nicht angelegt.
Im Log steht folgendes:javascript.0 2020-01-04 08:20:56.572 info (2420) script.js.common.alias_anlegen: registered 0 subscriptions and 0 schedules
javascript.0 2020-01-04 08:20:56.571 warn (2420) script.js.common.alias_anlegen: setObject(id=alias.0.lampe2, obj={"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true,"alias":{"id":"deconz.0.
javascript.0 2020-01-04 08:20:56.569 info (2420) script.js.common.alias_anlegen: getObject(id=deconz.0.Lights.2.on, enumName=undefined) => {"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true
javascript.0 2020-01-04 08:20:56.554 info (2420) Start javascript script.js.common.alias_anlegenDas komische auf einer anderen iobroker-Installation geht es. Softwarestand ist der gleiche. Zwei Unterschiede gibt es. Beim funktionierenden läuft iobroker auf ner VM und bei der anderen auf einem Rasberry Pi 3. Der 2te Unterschied es sind weniger Instancen auf der problematischen Installation.
Im Skript aber ich nur die Namen angepasst, den Rest auskommentiert gelassen. -
@patti72 sagte:
wird bei mir der alias.0 nicht angelegt.
In der Konfiguration der JS-Instanz ist setObject freigegeben ?
Logs bitte in Code tags (</>) posten.
-
Könntest Du bitte kurz erklären, wie aus einem alias vom typ boolean ein "offen" oder "geschlossen" wird?
Leider fehlen mir die Javascript-Kenntnisse, um Dein Script aus dem ersten Post dahingehend richtig zu interpretieren.
Danke!
Beispiel hier:
{ "_id": "alias.0.Fenster_und_Tuer_Sensoren.Fenster.EG.Esszimmer.Fenster.Stellung", "type": "state", "common": { "name": "Stellung", "role": "", "type": "boolean", "read": true, "write": true, "desc": "Manuell erzeugt", "def": false, "alias": { "id": "zigbee.0.00158d00028b5941.opened" } }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1577905721582, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@XxJooO :
Wie sieht das Objekt vom Datenpunkt "zigbee.0.00158d00028b5941.opened" aus ? Welche Werte kann er annehmen ? -
{ "from": "system.adapter.zigbee.0", "user": "system.user.admin", "ts": 1572607261264, "common": { "name": "Is open", "type": "boolean", "role": "state", "read": true, "write": false, "custom": { "history.0": { "enabled": true, "changesOnly": true, "debounce": "", "maxLength": "", "retention": "31536000", "changesRelogInterval": "", "changesMinDelta": "", "aliasId": "" }, "influxdb.0": { "enabled": true, "changesOnly": true, "debounce": "", "maxLength": 10, "retention": 0, "changesRelogInterval": "", "changesMinDelta": "", "storageType": "", "aliasId": "" } } }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "zigbee.0.00158d000288e163.opened", "type": "state" }
-
@XxJooO
Der Original-Datenpunkt ist doch ebenfalls vom Typ "boolean", allerdings "read only". Da muss nichts gewandelt werden. Oder möchtest Du Zustandstexte darstellen (Zeile 17) ?states = {false: 'geschlossen', true: 'offen'}; // Zahlen (Multistate) oder Logikwert (z.B. Aus/Ein)
-
ja, der Ausgabewert soll bei true offen und bei false gern geschlossen sein.
-
-
@patti72
Den Haken bei "Nicht alle Zustände beim Start abonnieren" raus nehmen !! -
@paul53 leider geht es noch immer nicht. Die selbe Warnung im log.
-
@patti72 sagte:
Die selbe Warnung im log.
Die Warnung ist oben leider nicht vollständig. Bitte nochmal aus dem Reiter "Log" in Code tags posten.
-
Mehr kommt nicht, wenn ich das Script starte.
2020-01-04 08:17:42.694 - debug: javascript.0 (2420) system.adapter.admin.0: logging false 2020-01-04 08:17:43.293 - debug: javascript.0 (2420) system.adapter.admin.0: logging true 2020-01-04 08:17:52.269 - debug: javascript.0 (2420) sendTo "loadTypings" to system.adapter.admin.0 from system.adapter.javascript.0 2020-01-04 08:20:47.665 - debug: javascript.0 (2420) sendTo "loadTypings" to system.adapter.admin.0 from system.adapter.javascript.0 2020-01-04 08:20:53.988 - info: javascript.0 (2420) Stop script script.js.common.alias_anlegen 2020-01-04 08:20:56.554 - info: javascript.0 (2420) Start javascript script.js.common.alias_anlegen 2020-01-04 08:20:56.569 - info: javascript.0 (2420) script.js.common.alias_anlegen: getObject(id=deconz.0.Lights.2.on, enumName=undefined) => {"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true},"native":{},"from":"system.adapter.deconz.0","user":"system.user.admin","ts":1578087361576,"_id":"deconz.0.Lights.2.on"} 2020-01-04 08:20:56.571 - warn: javascript.0 (2420) script.js.common.alias_anlegen: setObject(id=alias.0.lampe2, obj={"type":"state","common":{"name":"Lampe1 on","type":"boolean","role":"switch","read":true,"write":true,"alias":{"id":"deconz.0.Lights.2.on"}},"native":{}}) - was not executed, while debug mode is active 2020-01-04 08:20:56.572 - info: javascript.0 (2420) script.js.common.alias_anlegen: registered 0 subscriptions and 0 schedules 2020-01-04 08:28:45.983 - debug: javascript.0 (2420) system.adapter.admin.0: logging false 2020-01-04 08:28:53.754 - info: info.0 (1408) Popup news was read... 2020-01-04 08:28:55.246 - info: host.iobroker_oben Update repository "default" under "http://download.iobroker.net/sources-dist.json" 2020-01-04 08:29:48.955 - debug: javascript.0 (2420) system.adapter.admin.0: logging true
-
-
@paul53 von der JS Instanz oder im Script?
-
-
@paul53 Tausend Dank. Hat geholfen.
-
@XxJooO sagte in [Vorlage] Alias per Skript erzeugen:
ja, der Ausgabewert soll bei true offen und bei false geschlossen ausgeben.
-
@Markus84 said in [Vorlage] Alias per Skript erzeugen:
Wenn ich Name, state oder role ändere, wird diese Änderung jedoch nicht mitsynchronisiert. Ist das normal? Falls dies normal ist, kann ich bedenkenlos diese Daten im Alias ändern (werden dann logischerweise zwar nicht synchronisiert) oder lässt man besser die Finger davon?
Es ist ja gerade die Idee von der Alias-Funktion, dass du am Alias-Objekt role, Name, Funktion, Raum usw. "schön" setzt. Die Objekte im Adapternamespace können sich ja beliebig ändern, wenn der Adapter das für richtig hält oder wenn mal ein Gerät ersetzt werden soll.
-
@Garfonso Danke für die Klarstellung! Wenn man einmal verstanden hat, wofür Alias-Objekte sind, ist es natürlich logisch. Es macht bestimmt eine riesen Arbeit die Alias-Objekte einmal einzurichten, aber das ist es auf lange Sicht definitiv Wert.