NEWS
Fragen / Antworten rund um die neue Alias Funktion
-
@Stefan_1969 Alias ist die direkt im js-controller (seit 2.0 neu) integrierte Form. Linkeddevices wird von einem Adapter gemanaged der auch immer laufen muss. Es gibt aktuell keine Pläne linkeddevices abzuklemmen oder so, also kannst Du das weiterhin nutzen - frisst halt mehr Ressourcen weil der Adapter alles handelt
-
@Garfonso sagte in Fragen / Antworten rund um die neue Alias Funktion:
Die Frage ist ja eigentlich, warum iot unbedingt ein native Part braucht um die id für smartName zu aktzeptieren..?
Sagen wir es so: Ein State-Objekt ohne "native" ist an sich ungültig, auch wenn native leer ist. Den genauen Grund warum iot auf native zugreift weiss ich gerade nicht und müsste ich nachsehen ...
-
@apollon77 vielen Dank! Die Info hat mir ein Licht aufgehen lassen
Nun ist auch mir der Unterschied klar -
die Objekte wurden mit dem Skript von @paul53 angelegt. Also per Admin..
-
@K_o_bold sagte:
Also per Admin.
Also per Javascript.
@apollon77 sagte in Fragen / Antworten rund um die neue Alias Funktion:
Ein State-Objekt ohne "native" ist an sich ungültig, auch wenn native leer ist.
Bei mir wird immer native mit einem leeren Objekt automatisch erzeugt.
-
@paul53
Bist du dir 100% sicher? Wie gesagt, der admin fügt das leere native ein, auch wenn es in der Objekt DB nicht steht. Wenn man dann auf speichern klickt, ohne was zu ändern, ist es da. Wenn nicht, dann fehlt es weiterhin und iot möchte weiterhin nicht mit dem Datenpunkt arbeiten. Probier das mal aus. Bei mir ist es 100% so, auch jetzt noch. -
@Garfonso sagte:
admin fügt das leere native ein, auch wenn es in der Objekt DB nicht steht.
Da habe ich mich offensichtlich von Admin täuschen lassen.
-
Wie zeichnet man denn am besten die Daten der alias auf, für Grafana History Adapter usw.?
Nur den Datenpunkt des Alias aufzeichnen oder wie unten im Bild, das Alias Objekt angeben: -
@K_o_bold es geht faktisch beides. In meinen Augen sollte man bei allem neuen das sinnvolle aufzeichnen - also ggf direkt den alias wert.
Der „alias“ im History Adapter ist nichts anderes wie das umbiegen der Speicherung auf einen anderen Namen wenn man mal IDs ändern muss und alte Daten behalten will.
-
Mit dem alias Adapter bin ich nach den ersten Startschwierigkeiten (fallen über den Bug in der extendObject Methode) sehr zufrieden.
Ich hätte da aber noch einen Wunsch, der dem Handling vom HM-IP und deren virtuellen Kanälen geschuldet ist.
ich würde verzückt lächeln, wenn ich nicht nur eine read und write funktion für einen Alias angeben könnte, sonden für read und write getrennte alias-IDs.
Grund.
bespielsweise einen Schaltaktor HM-IP-BSL
Kanal 3 enthält den zustand des aktors, z.b. au (true) oder aus (false)
kanal 4 ist einer der virtuellen Kanäle zu schalten.Den Zustand würde ich nun gerne aus Kanal 3 auslesen können (read) aber ein Schreben auf Kanal 4 ausführen können (write)
geht das jetzt schon ? wenn ja, würde mich der trick interessieren. Wenn nein, ist das ein Wunsch zu Weihnachten ^^
gruss, Black
In diesem Moment lässt sich dieser Alias Datenpunkt perfekt in Widgets angeben. Mein Wrapper Script arbeitet bei HMIP auch mit 2 getrennen Datenpunkten für read und write, der alias.0 gefällt mir aber besser und da würde ich auch druchgängig drauf wechseln wenn alles geht.
-
@Blackmike sagte:
Kanal 3 enthält den zustand des aktors, z.b. au (true) oder aus (false)
kanal 4 ist einer der virtuellen Kanäle zu schalten.Da wirst Du um ein Skript nicht herum kommen, denn das kann eine allgemein gehaltene Alias-Funktion nicht leisten: Eine Richtung kann Alias automatisch, die andere Richtung dann per Skript.
-
Ich denke zu Weihnachten wird das nix. Das ist recht komplex. Aber leg doch mal ein issue im js-Controller an.
-
@apollon77
mach ich gerne, wenns auf deutsch geht... nur wo find ich den jscontroller auf github für das issue ? -
-
@Blackmike Klar geht Deutsch auch
-
@apollon77 thnx,.. Done
-
Hi zusammen,
ginge sowas mit der Alias-Funktion auch:
{ "_id": "alias.0.Network.Devices.Server.home.MemoryLoad", "type": "state", "common": { "name": "Server home Memory Usage", "role": "", "type": "number", "read": true, "write": false, "desc": "Server home Memory Usage", "min": 0, "max": 100, "def": 0, "unit": "%", "alias": { "id": "info.0.sysinfo.memory.info.active", "read": "val / getState('info.0.sysinfo.memory.info.total').val * 100" } }, "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1577562127481, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Bekomme im Log einen Fehler hierzu:
(8123) Invalid read function for undefined: val / getState('info.0.sysinfo.memory.info.total').val * 100 => ReferenceError: getState is not defined
Kann man überhaupt andere Felder zur Berechnung referenzieren ?
Vielen Dank und viele Grüße
Ralf
-
@AggroRalf sagte:
"read": "val / getState('info.0.sysinfo.memory.info.total').val * 100"
In common.alias.read kann nur natives Javascript verwendet werden, keine ioBroker-Erweiterungen.
-
@AggroRalf Mach doch mal ein Feature Request dazu im js.controller GitHub
-
Hi @apollon77 ,
hoffe es reicht so:
https://github.com/ioBroker/ioBroker.js-controller/issues/580
Gruss Ralf