NEWS
[Neuer Adapter] LinkedDevices
-
Hallo zusammen,
ich möchte euch meinen neuen Adapter an dem ich aktuell arbeite vorstellen - LinkedDevices.
Die Idee und insperation kommen aus dem Virtual Devices Skript von @Pman.https://github.com/Scrounger/ioBroker.linkeddevices
Funktionsweise:
Ihr könnt euch verlinkte Objekte (Datenpunkte) für all eure verwendeten Objekte (Datenpunkte) anlegen und dafür individuelle IDs vergeben, um Euch eine Struktur anzulegen, wie Ihr sie gerne haben möchtet.
Vorteil ist, dass es nur noch einen Ort gibt, wo alle Objekte die Ihr im vis oder Skripten verwendet, definert sind. Weiterer Vorteil ist, wenn ihr mal die Hardware tauschen müsst, dann müsst ihr nur die verlinkten Objekte auf die neue Hardware anpassen und die Skripte und vis funktionieren sofort wieder.
Später sollen noch Funktionen wie z.B. umrechnungen etc. dazu kommen, wie es im Virtual Devices Skript auch möglich istAktuell findet ihr im Repository einen Arbeitsstand (Alpha version!), deshalb bitte nicht im produktiv einsetzen, weil ich aktuell daran noch arbeite.
Hier mal ein Beispiel wie eine selbstdefinierte Struktur aussehen kann:
-
Wo wäre der Bezug zu dem tatsächlichen Objekt/Datenpunkt?
bzw. wo findet das "Mapping" zum Original-Datenpunkt statt? -
Wie kann man den Adapter testen?
Gibt es einen GIT-Hub Link? -
ups hab den github link vergessen -> 1. Post aktualisert
@BBTown sagte in [Neuer Adapter] LinkedDevices:
Wo wäre der Bezug zu dem tatsächlichen Objekt/Datenpunkt?
bzw. wo findet das "Mapping" zum Original-Datenpunkt statt?!Das macht der Adpater.
Das ParentObjekt (= das zu verlinkende Objekt) sieht dann so aus:
und das verlinkte Objekt sieht dann so aus:
'state' Änderungen werden vom Adapter überwacht und dann beiden Objekte zugewiesen. D.h. ändere ich den 'state' beim verlinkten Objekt, ändert sich der 'state' beim parentObjekt. Und natürlich umgekehrt.
-
-
@Scrounger sagte:
Funktionsweise:
So etwas Ähnliches wurde schon einmal mit dem ioBroker.wrapper (ursprünglich ioBroker.home) versucht; war allerdings schlecht gemacht.
Außerdem ist geplant, in js-controller 2.x einen Alias zu Datenpunkten zu implementieren, mit dem das Gleiche erreicht werden soll. Es kann wohl aber noch eine Weile dauern ? -
@Scrounger Habe den Adapter installiert und es mit einem Datenpunkt AUTO_MODE getestet: Eine Änderung des Wertes im verlinkten Datenpunkt (Bad.HKT.Auto_Mode) wird nicht an den Original-Datenpunkt übertragen.
{ "type": "state", "common": { "name": "Bad HKT Auto-Mode", "role": "", "type": "boolean", "desc": "Created by linkeddevices", "read": false, "write": true, "def": false, "custom": { "linkeddevices.0": { "enabled": true, "parentId": "hm-rpc.0.NEQ1234567.1.AUTO_MODE", "isLinked": true } }, "icon": "linkeddevices_small.png" }, "from": "system.adapter.linkeddevices.0", "user": "system.user.admin", "ts": 1557238270037, "_id": "linkeddevices.0.Bad.HKT.Auto_Mode", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "native": {} }
-
@paul53 steht "read" auf "false" ?
kann das die Ursache sein? -
-
Node.js: v8.16.0?
NPM: 6.4.1?Bitte den Adpater auf debug stellen und log posten.
-
@Scrounger sagte:
Adpater auf debug stellen und log posten.
Da kommt nur
linkeddevices.0 2019-05-07 16:29:09.707 info state linkeddevices.0.Bad.HKT.Auto_Mode changed: false (ack = false)
@Scrounger sagte in [Neuer Adapter] LinkedDevices:
Node.js: v8.16.0?
Node v8.15.1
-
@Scrounger sagte in [Neuer Adapter] LinkedDevices:
LinkedDevices ist übrigens irreführend, da nur Datenpunkte verlinkt werden. -
Find ich nicht, da ich mir aus mehreren datenpunkten ein device basteln kann
Stell den Adpater auf debug, starte ihn neu und poste das log.
-
@Scrounger sagte in [Neuer Adapter] LinkedDevices:
auf debug, starte ihn neu und poste das log.
linkeddevices.0 2019-05-07 16:48:01.066 debug system.adapter.admin.1: logging true linkeddevices.0 2019-05-07 16:47:58.873 debug system.adapter.admin.1: logging false linkeddevices.0 2019-05-07 16:47:56.487 info [initialObjects] finished linkeddevices.0 2019-05-07 16:47:56.485 debug [initialObjects] 'dicLinkedObjectsStatus' items count: 1 linkeddevices.0 2019-05-07 16:47:56.485 debug [createAllLinkedObjects] active linkedObjects {"hm-rpc.0.NEQ1234567.1.AUTO_MODE":"linkeddevices.0.Bad.HKT.Auto_Mode"} linkeddevices.0 2019-05-07 16:47:56.485 info [createAllLinkedObjects] count of active linkedObjects: 1 linkeddevices.0 2019-05-07 16:47:56.485 debug [createAllLinkedObjects] 'dicLinkedObjectsStatus' items count: 1 linkeddevices.0 2019-05-07 16:47:56.481 debug [createLinkedObject] linkedObject 'hm-rpc.0.NEQ1234567.1.AUTO_MODE' to 'linkeddevices.0.Bad.HKT.Auto_Mode' linkeddevices.0 2019-05-07 16:47:56.416 debug [createLinkedObject] keep custom settings '{"linkeddevices.0":{"enabled":true,"parentId":"hm-rpc.0.NEQ1234567.1.AUTO_MODE","isLinked":false}}' for linkedObject 'linkeddevices.0.Bad.HKT.Auto_Mode' linkeddevices.0 2019-05-07 16:47:56.415 debug [createLinkedObject] using custom name 'Bad HKT Auto-Mode' for: 'linkeddevices.0.Bad.HKT.Auto_Mode' (parentObj: 'hm-rpc.0.NEQ1234567.1.AUTO_MODE') linkeddevices.0 2019-05-07 16:47:56.314 debug [resetAllLinkedObjectsStatus] 'dicLinkedObjectsStatus' items count: 1 linkeddevices.0 2019-05-07 16:47:56.314 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Auto_Mode' linkeddevices.0 2019-05-07 16:47:56.293 info [initialObjects] started... linkeddevices.0 2019-05-07 16:47:56.292 debug [onReady] notDeleteDeadLinkedObjects: 'true' linkeddevices.0 2019-05-07 16:47:56.245 info starting. Version 0.0.1 in C:/Program Files/ioBroker/node_modules/iobroker.linkeddevices, node: v8.15.1 linkeddevices.0 2019-05-07 16:47:56.162 debug statesDB connected linkeddevices.0 2019-05-07 16:47:56.142 debug objectDB connected host.FP-NBA-W10 2019-05-07 16:47:55.490 info instance system.adapter.linkeddevices.0 started with pid 7560 host.FP-NBA-W10 2019-05-07 16:47:52.933 info instance system.adapter.linkeddevices.0 terminated with code null () host.FP-NBA-W10 2019-05-07 16:47:52.933 warn instance system.adapter.linkeddevices.0 terminated due to SIGTERM host.FP-NBA-W10 2019-05-07 16:47:52.916 info stopInstance system.adapter.linkeddevices.0 killing pid 12892 host.FP-NBA-W10 2019-05-07 16:47:52.916 info stopInstance system.adapter.linkeddevices.0
-
@Scrounger sagte:
da ich mir aus mehreren datenpunkten ein device basteln kann
Eine Ordnerstruktur ist kein Device. LinkedStates wäre passender.
-
@paul53 sagte in [Neuer Adapter] LinkedDevices:
@Scrounger sagte in [Neuer Adapter] LinkedDevices:
auf debug, starte ihn neu und poste das log.
Log sieht gut aus. Hab des bei mir nachgestellt und funktioniert wie es soll.
Poste mal noch bitte das parentObjekt (RAW Daten), also NEQ12xxx.AUTO_MODE.Musst vlt. doch auf 8.16. updaten.
-
@paul53 sagte:
Eine Änderung des Wertes im verlinkten Datenpunkt (Bad.HKT.Auto_Mode) wird nicht an den Original-Datenpunkt übertragen.
Habe noch einen zweiten Datenpunkt verlinkt und jetzt werden die Werte übertragen
-
@paul53 ist dieser weitere Datenpunkt auch "read = false"?
vielleicht hängt das doch damit zusammen?@Scrounger oder war dein Test mit dem gleichen/gleichartigen Datenpunkt?
-
@paul53 sagte:
jetzt werden die Werte übertragen
Habe noch einen dritten DP verlinkt: Auf dem erfolgt wieder keine Wertübertragung, sondern nur mit den beiden "älteren". Auch ein Neustart der Instanz ändert daran nichts, außer dass während des Neustarts eine Wertübertragung erfolgt.
@BBTown sagte:
"read = false"?
vielleicht hängt das doch damit zusammen?Nein, es funktioniert in beide Richtungen (mit 2 verlinkten Datenpunkten).
EDIT: Mit einem 4. verlinkten DP funktioniert es auch nicht, nur bei den beiden "ältesten".
-
Nach einem ioBroker-Neustart funktioniert die Wertübertragung mit allen 4 verlinkten Datenpunkten.