NEWS
Fragen / Antworten rund um die neue Alias Funktion
-
@heimweh Wenn ich dich richtig verstanden habe, möchtest du die Datenpunkte eines Objektes, z.B. eines Sensors, in Alias verschieben!?
Das wäre völlig am Sinn des Alias vorbei. Die Alias-Funktion soll künftig die Anpassung von Javaskript, Blockly etc überflüssig machen. Während du die Aliase in deinen Scripts verwendest, zeigen die Aliase auf den eigentlichen Datenpunkt. Musst du jetzt mal einen Sensor austauschen, der in einem Script verwendet wird, so musst du lediglich einmal den Alias anpassen mit dem Verweis auf den neuen Datenpunkt und alle Scripte, in denen dieser Datenpunkt verwendet wird funktionieren wieder.
-
Hallo,
ist es möglich für alias read/write eine zuvor angelegte Funktion zu verwenden?
Wenn ja, wie erfolgt der Aufruf?"alias": { "id": "mein.datenpunkt", "read": "test1(val)", "write": "test2(val)" }
Funktioniert leider nicht.
-
@zwer2k sagte: ist es möglich für alias read/write eine zuvor angelegte Funktion zu verwenden?
Woher soll der js-controller die Funktion kennen?
-
@paul53
Der javascript-Adapter könnte die Funktionen beim Start registrieren. Keine Ahnung was alles implementiert ist. -
Auch wenn es nicht nur direkt mit dem Alias zu tun hat: wie kann ich einen eigenen Datenpunkt anlegen, der nur zur späteren Verwendung da ist und nicht auf rot, sondern grün (Ack) stehen bleiben soll?
-
@zwer2k was hat denn der JavaScript Adapter damit zu tun? Alias ist ein Core Feature. Den js Adapter muss man nicht installiert haben ...
-
@zwer2k said in Fragen / Antworten rund um die neue Alias Funktion:
ist es möglich für alias read/write eine zuvor angelegte Funktion zu verwenden?
Nein, ist nicht möglich.
@iobaer said in Fragen / Antworten rund um die neue Alias Funktion:
Auch wenn es nicht nur direkt mit dem Alias zu tun hat: wie kann ich einen eigenen Datenpunkt anlegen, der nur zur späteren Verwendung da ist und nicht auf rot, sondern grün (Ack) stehen bleiben soll?
Beim setzten des Status ack=true setzen. In Admin kannst du dafür auf den Stift drücken, der beim Mausover ober das Statusfeld kommt, da kommt ein Fenster wo du "bestätigt" oder so anhaken kannst, bei setState in Javascript musst du noch ein "true" hinten dran hängen. In Blockly geht das bestimmt auch irgendwie.
-
@iobaer also ja diese Frage hat mir alias nicht dazu tun. Vllt in nem eigene thread auf machen?
Kurz: rot oder grün (also ack false bzw true) hängt davon ab wie du den Wert reinschreibst.
-
@apollon77 sagte in Fragen / Antworten rund um die neue Alias Funktion:
@zwer2k was hat denn der JavaScript Adapter damit zu tun? Alias ist ein Core Feature. Den js Adapter muss man nicht installiert haben ...
JS-Adapter haben vermutlich auch 99,9% der Nutzer installiert. Und die Nutzer die den Adapter nicht installiert haben, haben auch keine Funktion definiert die sie für Alias verwenden könnten.
War aber nur eine Frage ob es überhaupt geht. -
Ich habe gerade ein Problem.
Beim speichern von einem Alias bekomme ich den Fehler:
Fehler beim Parsen des JSON-Quelltexts
error_outlineSyntaxError: Unexpected end of JSON input{ "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1625824504674, "common": { "name": "l1hak", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "%", "min": 0, "max": 100, "def": 0, "read": true, "write": true, "id": "javascript.0.ShellyVerbrauch.SHEM-3#8CAAB561D496#1.Emeter0.heute" }, "native": {}, "acl": { "object": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1638 }, "_id": "alias.0.l1hak", "type": "state" }
-
@cino Wo ist da ein Alias drin?
-
@cino sagte in: Beim speichern von einem Alias bekomme ich den Fehler:
Das ist kein Alias. Verwende besser den Alias-Manager anstelle den Alias im Tab "Objekte" zu erstellen. Dann passieren weniger Fehler (alias, role, unit, max, write).
Beispiel für einen "Verbrauchs-Alias":{ "type": "state", "common": { "name": "Zählerstand", "role": "value", "type": "number", "read": true, "write": false, "alias": { "id": "s7.0.xyz.Zähler", "read": "val/1000" }, "unit": "kWh" }, "_id": "alias.0.Logo.Zaehler.Stand", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1624382656991, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@apollon77 unter alias.0
-
-
Danke, mit dem Alias Manager hat es geklappt. Ich wusste nicht das es ihn gab.
-
@cino sagte: "id": "javascript.0.ShellyVerbrauch.SHEM-3#8CAAB561D496#1.Emeter0.heute"
Für eigene Datenpunkte verwendet man keinen Alias. Denen verpasst man eine sinnvolle ID ohne "SHEM-3#8CAAB561D496#1".
-
@paul53 das kommt von einem skript der die Vebräuche der Shellys summiert.
-
Es spricht grundsätzlich nichts dagegen Aliase für javascript / eigene Datenpunkte zu machen. Bei Javascript finde ich das sogar ok, weil sich die ID auch ändern kann, wenn man die javascript Instanz mal wechselt oder so (weshalb ich persönlich mittlerweile nur noch ungern mit createState arbeite in Skripten, wenn der State für "außen" irgendwie wichtig sein könnte oder dann auch einen Alias drauf setze und den verwende).
-
@garfonso sagte: Es spricht grundsätzlich nichts dagegen Aliase für javascript / eigene Datenpunkte zu machen
Doch: Unnötiger Ressourcenverbrauch.
@garfonso sagte in Fragen / Antworten rund um die neue Alias Funktion:
weil sich die ID auch ändern kann, wenn man die javascript Instanz mal wechselt
Wegen dieser Problematik wurde das Verzeichnis "0_userdata.0" geschaffen, in dem man auch Datenpunkte mittels createState() erstellen kann.
-
soweit ich mich erinnere, brauchst du die datenpunkte für die vis (binding)- ich kann mir nicht vorstellen, dass ein paar aliase unter javascript ein resourcen-problem erzeugt. als notfall lösung würd ich das machen - als standard lösung für viele dp unter javascript würde ich das auch nicht machen - da stimme ich paul zu
eine andere lösung wäre natürlich, das script anzugleichen - z.b. beim anlegen der datenpunkte . kannst du nicht mal beim ersteller des scriptes nachfragen, ob er das ändern möchte
ansonsten müßtest du ein eigenes script machen, welche die dp spiegeln - aber anstatt ein script finde ich das alias besser