NEWS
[Neuer Adapter] LinkedDevices
-
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.
-
@BBTown sagte in [Neuer Adapter] LinkedDevices:
@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?
Ja hab mit dem gleichen getestet. Grundsätzlich ist es so, dass der Adapter die Datenpunkte 1:1 spiegelt, d.h. alles was unter 'common' im parentObject steht bekommt dann auch das linkedObject.
@paul53 sagte in [Neuer Adapter] LinkedDevices:
Nach einem ioBroker-Neustart funktioniert die Wertübertragung mit allen 4 verlinkten Datenpunkten.
-
@paul53
Das ist doch ein Bug, hab es grad reproduzieren können. Fix hab ich hoch geladen, bitte aktualisierten branch von git ziehen -
@Scrounger sagte:
Fix hab ich hoch geladen
Mal schauen, ob ich bei weiteren Tests noch etwas finde.
Die Eigenschaften "read" und "write" wertest Du nicht aus, was meiner Meinung nach aber sinnvoll wäre:
"read": false - Übertragung nur vom verlinkten DP zum Original
"write": false - Übertragung nur vom Original-DP zum verlinkten
Alle anderen Fälle: bidirektional. -
@paul53 sagte in [Neuer Adapter] LinkedDevices:
@Scrounger sagte:
Fix hab ich hoch geladen
Mal schauen, ob ich bei weiteren Tests noch etwas finde.
Die Eigenschaften "read" und "write" wertest Du nicht aus, was meiner Meinung nach aber sinnvoll wäre:
"read": false - Übertragung nur vom verlinkten DP zum Original
"write": false - Übertragung nur vom Original-DP zum verlinkten
Alle anderen Fälle: bidirektional.Dann funktioniert das Konzept doch nicht mehr.
Beispiel:
Du hast dein linkedObject "Auto_Mode" (was 'write' ist) z.B. mit einem Button in deinem vis verknüpft. Wenn du diesen jetzt drückst wird der 'state' des LinkedObject auf 'true' gesetzt. Jetzt muss natürlich auch das parentObject mitbekommen das da was passiert ist, also der 'state' muss hier auch auf 'true' gesetzt werden.
Wie gesagt alles was im 'common' eines Objektes steht wird nur gespiegelt, den rest macht der Adapter.In deinem Fall würde das parentObjekt nix mit bekommen und somit auf der tatsächlichen Hardware auch nix ausgeführt werden
-
@Scrounger sagte:
In deinem Fall würde das parentObjekt nix mit bekommen
Wirklich ? "read": false, "write": true ist dieser Fall:
"read": false - Übertragung nur vom verlinkten DP zum Original
-
@paul53 sagte in [Neuer Adapter] LinkedDevices:
@Scrounger sagte:
In deinem Fall würde das parentObjekt nix mit bekommen
Wirklich ? "read": false, "write": true ist dieser Fall:
"read": false - Übertragung nur vom verlinkten DP zum Original
Sorry aber versteh nicht was du meinst? Mach mal bitte ein Beispiel warum dieses verhalten nicht korrekt ist.
-
@Scrounger sagte:
Beispiel warum dieses verhalten nicht korrekt ist.
Beispiel AUTO_MODE hat "read": false, ist also "write only". Ich habe geschrieben
"read": false - Übertragung nur vom verlinkten DP zum Original
Somit erfolgt die Wertänderung am verlinkten DP durch Vis oder durch ein Skript auch am parentDatapoint.
-
wenn es kein linkedObject dazwischen geben würde, würde vis oder skript den 'state' des parentObject setzen (=write).
Genau dieses verhalten hat man auch mit einem linkedObjekt dazwischen...vis/skript -> write -> linkedObject -> wirte -> parentObject.
-
@Scrounger sagte:
Genau dieses verhalten hat man auch mit einem linkedObjekt dazwischen...
Ja, so soll es auch sein. Wenn aber jemand den Wert des parentObjektes ändert, erfolgt diese Änderung auch im linkedObjekt, wenn "read": false nicht ausgewertet wird.
-
Ja und das ist genau richtig, weil das linkedObjekt ja ein Spiegelbild des parentObjects ist und immer den gleichen Zustand wie das parentObjekt abbilden muss.
vis/skript -> write -> parentObject -> write -> linkedObject & Hardware.
-
@Scrounger sagte:
immer den gleichen Zustand wie das parentObjekt abbilden muss.
Das ist Ansichtssache. Wenn Du es so dokumentierst, wird es sicherlich akzeptiert und Nachfragen vermieden.
-
@Scrounger Der Zustand eines Datenpunktes beinhaltet auch den Zeitstempel. Jetzt erfolgt die Übertragung nur bei einer Wertänderung, nicht jedoch, wenn nur der Zeitstempel aktualisiert wird - wie es bei Tasten (z.B. PRESS_SHORT) der Fall ist.