NEWS
[Vorlage] Alias per Skript erzeugen
-
-
-
Ich bin leider totaler Anfänger und würde mich freuen, wenn mir jemand bezüglich dem Erzeugen von Alias etwas Hilfestellung geben könnte. Ich möchte die Alias-Funktion nutzen, um von Anfang an für den Fall, dass ein Austausch eines Gerätes notwendig wird, vorzusorgen (und nicht alle Verweise in Vis oder Blockly ändern zu müssen). Eine "idiotensichere" Anleitung zum Erstellen eines Alias habe ich leider nicht gefunden - das Skript scheint bereits die einfachste Möglichkeit zu sein. Oder gibt es inzwischen eine einfachere Möglichkeit?
Muss ich das oben stehende Skript einfach bei Skripte einfügen und das Skript aktivieren damit der Alias erstellt wird?
Wenn ich beispielsweise eine LED Lampe habe, muss ich dann für on/off, brightness, color, etc. das Skirpt für jeden einzelnen Datenpunkt separat laufen lassen? Gibt es eine Funktion, die für alle Datenpunkte eines Geräts auf einmal Alias anlegt?
Mir ist nicht ganz klar, wann ich oben im Skript die Auskommentierung rausnehmen muss und wann nicht. Könnte mir das bitte jemand erklären?
-
@Markus84 sagte:
Muss ich das oben stehende Skript einfach bei Skripte einfügen und das Skript aktivieren damit der Alias erstellt wird?
Ja, vor Aktivierung die IDs (Original und Alias) anpassen. Wenn alle common-Attribute wie im Original bleiben können, genügt das.
@Markus84 sagte in [Vorlage] Alias per Skript erzeugen:
das Skirpt für jeden einzelnen Datenpunkt separat laufen lassen?
Ja, das Skript erzeugt genau einen Alias-Datenpunkt.
@Markus84 sagte in [Vorlage] Alias per Skript erzeugen:
wann ich oben im Skript die Auskommentierung rausnehmen muss
Wenn sich mind. ein common-Attribut(siehe unter "Attribute für bestimmte Objekttypen") im Alias vom Original unterscheiden soll. In der Regel ist es mind. der Name.
-
@paul53 Besten Dank. Jetzt habe ich es (hoffentlich) verstanden und werde es gleich mal versuchen umzusetzen.
-
@Markus84 said in [Vorlage] Alias per Skript erzeugen:
@paul53 Besten Dank. Jetzt habe ich es (hoffentlich) verstanden und werde es gleich mal versuchen umzusetzen.
Vielleicht habe ich es doch nicht so ganz verstanden... Den Alias anzulegen hat wunderbar funktioniert. Den value synchronisiert er auch sehr schön zwischen Alias und dem zu schaltenden Datenpunkt. 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?
-
@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
-