NEWS
[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. -
@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.
-
Nach 2 Tagen nochmal getestet und es reagiert kein Datenpunkt mehr auf ein Veränderung der anderen Seite (parent / linked). Im Log finde ich nur noch das:
linkeddevices.0 2019-05-09 17:00:32.774 debug [createLinkedObject] keep custom settings '{"linkeddevices.0":{"enabled":true,"parentId":"hm-rpc.0.NEQ1234567.1.STATE","isLinked":false}}' for linkedObject 'linkeddevices.0.Bad.Licht.Aktor' linkeddevices.0 2019-05-09 17:00:32.772 debug [createLinkedObject] using custom name 'Bad Lampe' for: 'linkeddevices.0.Bad.Licht.Aktor' (parentObj: 'hm-rpc.0.NEQ1234567.1.STATE') linkeddevices.0 2019-05-09 17:00:32.630 debug [resetAllLinkedObjectsStatus] 'dicLinkedObjectsStatus' items count: 6 linkeddevices.0 2019-05-09 17:00:32.630 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Auto_Mode' linkeddevices.0 2019-05-09 17:00:32.630 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Control_Mode' linkeddevices.0 2019-05-09 17:00:32.630 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Manu_Sollwert' linkeddevices.0 2019-05-09 17:00:32.614 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Licht.Aktor' linkeddevices.0 2019-05-09 17:00:32.614 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Fenster' linkeddevices.0 2019-05-09 17:00:32.614 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Licht.Taste_kurz' linkeddevices.0 2019-05-09 17:00:32.599 info [initialObjects] started... linkeddevices.0 2019-05-09 17:00:32.599 debug [onReady] notDeleteDeadLinkedObjects: 'true' linkeddevices.0 2019-05-09 17:00:32.552 info starting. Version 0.0.1 in C:/Program Files/ioBroker/node_modules/iobroker.linkeddevices, node: v8.15.1 linkeddevices.0 2019-05-09 17:00:32.498 debug statesDB connected linkeddevices.0 2019-05-09 17:00:32.444 debug objectDB connected
-
@paul53 sagte in [Neuer Adapter] LinkedDevices:
@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.
Stimmt bei buttons macht der Zeitstempel natürlich sinn. Bitte schick mir mal die raw Daten des buttons.
@paul53 sagte in [Neuer Adapter] LinkedDevices:
Nach 2 Tagen nochmal getestet und es reagiert kein Datenpunkt mehr auf ein Veränderung der anderen Seite (parent / linked). Im Log finde ich nur noch das:
Laut log bleibt der adapter beim initializieren hängen. Hast du den neu gestartet oder komplett zwei Tage am Stück durchlaufen lassen? Restart hilft auch nicht?
-
@Scrounger sagte:
die raw Daten des buttons
{ "type": "state", "common": { "def": false, "type": "boolean", "read": false, "write": true, "role": "button", "name": "Taste 2 kurz" }, "native": { "CONTROL": "BUTTON.SHORT", "DEFAULT": false, "FLAGS": 1, "ID": "PRESS_SHORT", "MAX": true, "MIN": false, "OPERATIONS": 6, "TAB_ORDER": 0, "TYPE": "ACTION", "UNIT": "" }, "from": "system.adapter.hm-rpc.0", "ts": 1556192106793, "_id": "hm-rpc.0.PEQ0371234.1.PRESS_SHORT", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Trotz common.def: false ist der Wert immer true.
@Scrounger sagte in [Neuer Adapter] LinkedDevices:
Hast du den neu gestartet
Ja.
-
@paul53
Stell mal den adapter auf silly und mach nen neustart. Wenn er dann auch nicht komplett durchläuft, d.h. am Ende muss '[initialObjects] finished' im log stehen, dann deaktivere 'Nicht mehr verlinkte Objekte nicht löschen' und nochmal neustarten und logs posten, danke! -
Ergebnis:
linkeddevices.0 2019-05-09 19:20:56.711 debug [createLinkedObject] keep custom settings '{"linkeddevices.0":{"enabled":true,"parentId":"hm-rpc.0.NEQ1234567.1.STATE","isLinked":false}}' for linkedObject 'linkeddevices.0.Bad.Licht.Aktor' linkeddevices.0 2019-05-09 19:20:56.710 debug [createLinkedObject] using custom name 'Bad Lampe' for: 'linkeddevices.0.Bad.Licht.Aktor' (parentObj: 'hm-rpc.0.NEQ1234567.1.STATE') linkeddevices.0 2019-05-09 19:20:56.622 silly [resetAllLinkedObjectsStatus] linkedObjects status {"linkeddevices.0.Bad.Licht.Taste_kurz":false,"linkeddevices.0.Bad.Fenster":false,"linkeddevices.0.Bad.Licht.Aktor":false,"linkeddevices.0.Bad.HKT.M linkeddevices.0 2019-05-09 19:20:56.622 debug [resetAllLinkedObjectsStatus] 'dicLinkedObjectsStatus' items count: 6 linkeddevices.0 2019-05-09 19:20:56.622 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Auto_Mode' linkeddevices.0 2019-05-09 19:20:56.606 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Control_Mode' linkeddevices.0 2019-05-09 19:20:56.606 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Manu_Sollwert' linkeddevices.0 2019-05-09 19:20:56.606 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Licht.Aktor' linkeddevices.0 2019-05-09 19:20:56.606 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Fenster' linkeddevices.0 2019-05-09 19:20:56.591 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Licht.Taste_kurz' linkeddevices.0 2019-05-09 19:20:56.575 info [initialObjects] started... linkeddevices.0 2019-05-09 19:20:56.575 debug [onReady] notDeleteDeadLinkedObjects: 'false' linkeddevices.0 2019-05-09 19:20:56.544 info starting. Version 0.0.1 in C:/Program Files/ioBroker/node_modules/iobroker.linkeddevices, node: v8.15.1 linkeddevices.0 2019-05-09 19:20:56.544 debug statesDB connected linkeddevices.0 2019-05-09 19:20:56.528 debug objectDB connected
-
@paul53
Ok hängt genau an der gleichen Stelle und schlauer werd ich daraus auch nicht.
Versuch mal nen 'iobroker update linkeddevices' durchzuführen und adapter neu starten. Wenn das nicht hilft, dann mal iobroker komplett neu starten. -
@Scrounger sagte:
'iobroker update linkeddevices' durchzuführen und adapter neu starten.
Gemacht und anschließend PC neu gestartet: Keine Änderung.
-
@paul53
ok dann lösch mal die Verlinkung mit 'hm-rpc.0.NEQ1234567.1.STATE', wenn er weiter da hängen bleibt, die nächste Verlinkung usw.
Stell mir mal die raw daten des 'hm-rpc.0.NEQ1234567.1.STATE' zur Verfügung. -
@Scrounger Raw data
{ "_id": "hm-rpc.0.NEQ1234567.1.STATE", "type": "state", "common": { "name": "NEQ1234567.1.STATE", "role": "switch", "type": "boolean", "read": true, "write": true, "desc": "Manuell erzeugt", "def": false }, "native": {}, "acl": { "object": 1638, "state": 1638 }, "from": "system.adapter.admin.1", "user": "system.user.admin", "ts": 1557243244184 }
Log nach Deaktivierung Link für STATE
linkeddevices.0 2019-05-09 20:07:49.471 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-09 20:07:49.470 debug [createLinkedObject] using custom name 'Bad HKT Auto' for: 'linkeddevices.0.Bad.HKT.Auto_Mode' (parentObj: 'hm-rpc.0.NEQ1234567.1.AUTO_MODE') linkeddevices.0 2019-05-09 20:07:49.371 silly [resetAllLinkedObjectsStatus] linkedObjects status {"linkeddevices.0.Bad.Licht.Taste_kurz":false,"linkeddevices.0.Bad.Fenster":false,"linkeddevices.0.Bad.Licht.Aktor":false,"linkeddevices.0.Bad.HKT.M linkeddevices.0 2019-05-09 20:07:49.371 debug [resetAllLinkedObjectsStatus] 'dicLinkedObjectsStatus' items count: 6 linkeddevices.0 2019-05-09 20:07:49.371 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Auto_Mode' linkeddevices.0 2019-05-09 20:07:49.371 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Control_Mode' linkeddevices.0 2019-05-09 20:07:49.371 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.HKT.Manu_Sollwert' linkeddevices.0 2019-05-09 20:07:49.371 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Licht.Aktor' linkeddevices.0 2019-05-09 20:07:49.355 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Fenster' linkeddevices.0 2019-05-09 20:07:49.355 debug [resetLinkedObjectStatus] 'isLinked' status reseted for 'linkeddevices.0.Bad.Licht.Taste_kurz' linkeddevices.0 2019-05-09 20:07:49.339 info [initialObjects] started...
-
Mhhh, ok dann muss ich da mal noch bissle mehr error handling einbauen. Bei mir funktioniert des einwandfrei.
Hast du inzwischen mal auf die Node v8.16.0 geupdatet, kann mir zwar nicht vorstellen das es daran liegt, aber sicher ist sicher.