NEWS
[Neuer Adapter] LinkedDevices
-
@e-s
Du musst bei den Verlinkungen
aktivieren, dann sollte das nicht mehr passieren
-
Hallo,
bei mir ist es jetzt schon zum 2. mal passiert, dass plötzlich am Morgen Geräte nicht mehr reagieren und beim Nachsehen die Instanz von LinkedDevices auf Rot steht. Ein Neustart Klappt dann und alles geht wieder. Das Problem tritt erst seit kurzem auf. Im Log habe ich folgendes gefunden:
2021-03-15 00:00:00.842 - [31merror[39m: linkeddevices.0 (14748) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2021-03-15 00:00:00.846 - [31merror[39m: linkeddevices.0 (14748) unhandled promise rejection: Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0) 2021-03-15 00:00:00.847 - [31merror[39m: linkeddevices.0 (14748) TypeError: Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0) at createError (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:555:19) at Function.generic (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:1077:15) at Object.round (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:1092:24) at Linkeddevices.getConvertedValue (D:\iobroker\KuhnHome\node_modules\iobroker.linkeddevices\main.js:1473:31) at async Linkeddevices.onStateChange (D:\iobroker\KuhnHome\node_modules\iobroker.linkeddevices\main.js:274:20) 2021-03-15 00:00:00.847 - [31merror[39m: linkeddevices.0 (14748) Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0) 2021-03-15 00:00:00.853 - [31merror[39m: linkeddevices.0 (14748) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2021-03-15 00:00:00.853 - [31merror[39m: linkeddevices.0 (14748) unhandled promise rejection: Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0) 2021-03-15 00:00:00.853 - [31merror[39m: linkeddevices.0 (14748) TypeError: Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0) at createError (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:555:19) at Function.generic (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:1077:15) at Object.round (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:1092:24) at Linkeddevices.getConvertedValue (D:\iobroker\KuhnHome\node_modules\iobroker.linkeddevices\main.js:1473:31) at async Linkeddevices.onStateChange (D:\iobroker\KuhnHome\node_modules\iobroker.linkeddevices\main.js:274:20) 2021-03-15 00:00:00.853 - [31merror[39m: linkeddevices.0 (14748) Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0) 2021-03-15 00:00:00.859 - [33mwarn[39m: linkeddevices.0 (14748) Terminated (UNCAUGHT_EXCEPTION): Without reason
Nach diesem Fehler gibt es keinen Eintrag mehr im Log vom Adapter. Es läuft bei mir die V1.4.2 auf einem IOB unter Windows mit JS-Controller V3.2.16.
Ich hoffe es hat jemand eine Idee. -
Eben, um 14:36Uhr, genau der selbe Fehler wieder und kein Alias mehr erreichbar. Ich hab jetzt mal einen Downgrade auf die V1.4.1 durchgeführt und schau mal wie es da läuft, falls der Fehler vom Adapter kommt.
-
@palm_maniac
Test mal die version von github. Hab was eingebaut, dass der Adapter zumindest nicht mehr abschmieren sollte.
Weiter hab ich die log ausgabe bissle erweitert, da ich noch nicht verstehe was da passiert.
Sobald der Fehler bei dir wieder auftritt, mir das log zur Verfügung stellen. -
Hallo, ich habs gerade über Github installiert. Wenn es wieder passiert, melde ich mich. Vielen Dank.
-
Ich habe unter Experteneinstellung: keine Umwandlung ,0 Nachkommastellen und Umrechnung /xxx eingetragen. Das verlinkte Objekt hat aber Nachkommastellen.
Wie bekomme ich diese weg? -
@sevenup sagte in [Neuer Adapter] LinkedDevices:
@Scrounger ist es möglich ein Boolean Wert negiert zu verlinken?
Habs eingebaut, v1.4.3 sollte demnächst im latest sein.@ryto sagte in [Neuer Adapter] LinkedDevices:
Ich habe unter Experteneinstellung: keine Umwandlung ,0 Nachkommastellen und Umrechnung /xxx eingetragen. Das verlinkte Objekt hat aber Nachkommastellen.
Zeig mal die Einstellungen oder die raw daten des zu verlinkenden Objektes (parent)
-
@scrounger
Hier die Einstellungen:{ "type": "state", "common": { "name": "", "role": "value", "type": "number", "unit": "", "read": true, "write": true, "custom": { "linkeddevices.0": { "enabled": true, "number_unit": "", "linkedId": "dali_ecg_set_color_COORDINATE_Y", "name": "", "role": "", "mergeSettingsOnRestart": true, "expertSettings": true, "number_convertTo": "", "number_maxDecimal": 0, "number_min": "", "number_max": "", "number_calculation": "/65535", "number_calculation_readOnly": "", "number_to_boolean_condition": "", "number_to_boolean_value_true": "", "number_to_boolean_value_false": "", "number_to_string_condition": "", "number_to_duration_convert_seconds": "", "number_to_duration_format": "", "number_to_datetime_convert_seconds": "", "number_to_datetime_format": "", "number_to_multi_condition": "", "boolean_convertTo": "", "boolean_to_string_value_true": "", "boolean_to_string_value_false": "", "string_convertTo": "", "string_prefix": "", "string_suffix": "", "string_to_boolean_value_true": "", "string_to_boolean_value_false": "", "string_to_number_unit": "", "string_to_number_maxDecimal": "", "string_to_number_calculation": "", "string_to_number_calculation_readOnly": "", "string_to_duration_format": "", "string_to_datetime_parser": "", "string_to_datetime_format": "" } } }, "native": { "cat": "db", "type": "WORD", "db": "DB12", "dbId": 12, "address": 972, "offsetBit": 0, "rw": true, "wp": false, "len": "" }, "from": "system.adapter.s7.0", "user": "system.user.admin", "ts": 1615905527674, "_id": "s7.0.DBs.DB12.dali_ecg_set_color_COORDINATE_Y", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
-
@scrounger Hallo. Bisher keine Fehler mehr mit der Version über github, es scheint zu klappen. Das komische dabei ist aber, dass es vorher eigentlich immer ohne Probleme lief. Mal schauen, wie die neue Version 1.4.3 läuft.
-
@ryto sagte in [Neuer Adapter] LinkedDevices:
@scrounger
Hier die Einstellungen:Sieht soweit alles gut aus. Habs getestet funktioniert. Hat den der datenpunkt
s7.0.DBs.DB12.dali_ecg_set_color_COORDINATE_Y
auch einen Wert?
Lösch mal das verlinkte Objekt und starte den Adapter neu.@palm_maniac sagte in [Neuer Adapter] LinkedDevices:
@scrounger Hallo. Bisher keine Fehler mehr mit der Version über github, es scheint zu klappen. Das komische dabei ist aber, dass es vorher eigentlich immer ohne Probleme lief. Mal schauen, wie die neue Version 1.4.3 läuft.
Wie gesagt ich hab nur das Error Handling optimiert, so dass der Adapter nicht mehr abschmieren sollte. Du musst aber trotzdem mal das Log beobachten ob da eine Fehlermeldung kommt.
-
@scrounger
Alles gelöscht, Neustart und alles neu angelegt. Keine Änderung.
Aber:
Wenn ich in Objekte den linked_xxx Datenpunkt ändere, wird der Wert ohne Nachkomma im verlinkten Objekt eingetragen, i.O.
Den Wert im linked_xxx Datenpunkt habe ich bisher über Blockly mit aktualisiere.... geändert, Ergebnis waren Nachkommastellen im Datenpunkt. Da linked_xxx für mich eigentlich eine interne Variable ist, habe ich mit aktualisiere... gearbeitet.
Nun habe ich aktualisiere mit setze... auf den linked_xxx Datenpunkt ersetzt, und die Nachkommastellen sind weg.
Problem gelöst, nur noch mit setze... auf den linked_ und es klappt.
Danke -
@ryto
Nachkommastellen werden auch nur auf den verlinkten Datenpunkt angewendet!Grundsätzlich solltest du nur noch mit den verlinkten Datenpunkten in Script vis, etc. arbeiten, das ist die Idee Konzept hinter dem Adapter
-
@scrounger
Ich hatte nur auf das verlinkte (linked_...) Objekt geschrieben. Es arbeitet aber nur richtig, wenn die Variable mit setze... und nicht aktualisiere... geändert wird. -
@scrounger said in [Neuer Adapter] LinkedDevices:
@sevenup sagte in [Neuer Adapter] LinkedDevices:
@Scrounger ist es möglich ein Boolean Wert negiert zu verlinken?
Habs eingebaut, v1.4.3 sollte demnächst im latest sein.Vielen Dank!
Funktioniert super -
@scrounger Hi. Es gab wieder Fehler. Hier der Logauszug:
2021-03-19 10:38:57.248 - error: linkeddevices.0 (1508) [getConvertedValue] sourceId 'Datenpunkte.0.Energie.Autarkie' targetId 'linkeddevices.0.Sensoren.Keller.Hobbyraum.Wechselrichter.Autarkie_Jetzt', error: Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0), stack: TypeError: Unexpected type of argument in function round (expected: number or Complex or BigNumber or Fraction or Array or Matrix or DenseMatrix or SparseMatrix or string or boolean, actual: null, index: 0) at createError (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:555:19) at Function.generic (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:1077:15) at Object.round (D:\iobroker\KuhnHome\node_modules\typed-function\typed-function.js:1092:24) at Linkeddevices.getConvertedValue (D:\iobroker\KuhnHome\node_modules\iobroker.linkeddevices\main.js:1474:32) at runMicrotasks () at runNextTicks (internal/process/task_queues.js:62:5) at processImmediate (internal/timers.js:434:9) at async Linkeddevices.onStateChange (D:\iobroker\KuhnHome\node_modules\iobroker.linkeddevices\main.js:274:21)
Der Fehler taucht immer wieder regelmäßig auf, obwohl der Alias-Datenpunkt und LinkedDevices sauber laufen. es handelt sich hierbei um einen manuell angelegten Datenpunkt, der per Blockly berechnet wird.
-
@palm_maniac
Zeig mal die raw daten von beiden datenpunkten.
Wird auch der richtige type vom blockly in den DP geschrieben? -
Hier die Daten von der Quelle:
{ "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1613475446191, "common": { "name": "Autarkie Jetzt", "role": "", "type": "number", "desc": "Manuell erzeugt", "unit": "%", "min": 0, "read": true, "write": true, "custom": { "linkeddevices.0": { "enabled": true, "number_unit": "", "linkedId": "Sensoren.Keller.Hobbyraum.Wechselrichter.Autarkie_Jetzt", "name": "Autarkie Jetzt", "role": "", "mergeSettingsOnRestart": true, "expertSettings": true, "number_convertTo": "", "number_maxDecimal": 2, "number_min": "", "number_max": "", "number_calculation": "", "number_calculation_readOnly": "", "number_to_boolean_condition": "", "number_to_boolean_value_true": "", "number_to_boolean_value_false": "", "number_to_string_condition": "", "number_to_duration_convert_seconds": "", "number_to_duration_format": "", "number_to_datetime_convert_seconds": "", "number_to_datetime_format": "", "number_to_multi_condition": "", "boolean_convertTo": "", "boolean_to_string_value_true": "", "boolean_to_string_value_false": "", "string_convertTo": "", "string_prefix": "", "string_suffix": "", "string_to_boolean_value_true": "", "string_to_boolean_value_false": "", "string_to_number_unit": "", "string_to_number_maxDecimal": "", "string_to_number_calculation": "", "string_to_number_calculation_readOnly": "", "string_to_duration_format": "", "string_to_datetime_parser": "", "string_to_datetime_format": "", "boolean_invert": false } } }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "Datenpunkte.0.Energie.Autarkie", "type": "state" }
Und hier vom Ziel:
{ "type": "state", "common": { "name": "Autarkie Jetzt", "role": "", "type": "number", "desc": "Created by linkeddevices", "unit": "%", "min": 0, "max": 100, "def": 0, "read": true, "write": true, "custom": { "linkeddevices.0": { "enabled": true, "parentId": "Datenpunkte.0.Energie.Autarkie", "parentType": "number", "isLinked": true, "mergeSettingsOnRestart": true, "number_maxDecimal": 2, "linkedId": "", "name": "", "role": "", "expertSettings": false, "number_convertTo": "", "number_unit": "", "number_min": "", "number_max": "", "number_calculation": "", "number_calculation_readOnly": "", "number_to_boolean_condition": "", "number_to_boolean_value_true": "", "number_to_boolean_value_false": "", "number_to_string_condition": "", "number_to_duration_convert_seconds": "", "number_to_duration_format": "", "number_to_datetime_convert_seconds": "", "number_to_datetime_format": "", "number_to_multi_condition": "", "boolean_convertTo": "", "boolean_to_string_value_true": "", "boolean_to_string_value_false": "", "string_convertTo": "", "string_prefix": "", "string_suffix": "", "string_to_boolean_value_true": "", "string_to_boolean_value_false": "", "string_to_number_unit": "", "string_to_number_maxDecimal": "", "string_to_number_calculation": "", "string_to_number_calculation_readOnly": "", "string_to_duration_format": "", "string_to_datetime_parser": "", "string_to_datetime_format": "", "boolean_invert": false }, "influxdb.0": { "enabled": true, "changesOnly": false, "debounce": "1000", "retention": 0, "changesRelogInterval": 4, "changesMinDelta": 0, "storageType": "", "aliasId": "Autarkie Jetzt" } }, "icon": "linkeddevices_small.png" }, "native": {}, "from": "system.adapter.linkeddevices.0", "user": "system.user.admin", "ts": 1616149703821, "_id": "linkeddevices.0.Sensoren.Keller.Hobbyraum.Wechselrichter.Autarkie_Jetzt", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Das Blockly scheint richtig zu arbeiten, da nur gerechnet wird. Es handelt sich dabei um einen Prozentwert zwischen 0 und 100.
-
Ich hab nochmal nachgeschaut. Der Fehler taucht nur heute auf, 3mal. Gestern war noch nix drin.
-
@Scrounger Hallo, was mir aufgefallen ist, wenn ich für den Source Datenpunkt History aktiviere wird das auch auf den linked Datenpunkt gespiegelt und umgekehrt. Bisher habe ich keine Stelle gefunden an der ich dieses Verhalten konfigurieren kann - kann man es überhaupt konfigurieren ?
Was mich daran stört ist, dass History dann natürlich zwei Datenpunkte aufzeichnet. Das kann Sinn machen wenn man den Wert konvertiert, somit dann beide Werte aufzeichnet.
Aktuell kann ich History entweder für beide DP aktivieren oder für keinen.Gruß Bungee
-
@palm_maniac sagte in [Neuer Adapter] LinkedDevices:
Das Blockly scheint richtig zu arbeiten, da nur gerechnet wird. Es handelt sich dabei um einen Prozentwert zwischen 0 und 100.
Ich konnte es jetzt reproduzieren, der Fehler tritt auf, wenn der Wert
null
oderundefined
ist.
Ich schätze das da was in deinem Blockly nicht korrekt läuft und eine der Werte schreibt.
Ich werd die log Ausgabe mal noch erweiteren, dass man sieht was zum Zeitpunkt des Fehlers für ein Wert verwenden wird.@bungee71 sagte in [Neuer Adapter] LinkedDevices:
Aktuell kann ich History entweder für beide DP aktivieren oder für keinen.
Stimmt nur halb Wenn du History beim orginalen DP aktiviert hast, dann wird das automatisch beim verlinkten DP auch aktiviert, weil der orginale DP 1zu1 gespiegelt wird - das ist das Konzept des Adapters.
Wenn aber beim orginalen DP kein History aktiviert ist, kannst du das nur für den verlinkten DP aktivieren.Warum ist das so - nehmen wir mal an du hast einen Aktor von dem du Daten per History aufzeichnen willst. Wenn das jetzt nur beim verlinkten DP aktiviert ist, der Aktor defekt ist und getauscht wird, muss man nur die verlinkung reparieren und die Aufzeichnung der Daten per History läuft weiter, d.h. die alten Daten sind dann nach wie vor vorhanden. Genauso funktioniert dann auch alles wieder in VIS, Skripten, etc.
D.h. man sollte immer den roh datenpunkten zunächst verlinken und dann alle Einstellungen wie z.B. History am verlinkten Datenpunkt durchführen bzw. den verlinkten dann in VIS, Skripten, etc. verwenden.
Wenn man jetzt z.B. hier noch eine Umrechnung haben möchte für die VIS, dann kann man sich z.B. eine zweite Instanz vom linkeddevices anlegen, mit dem verlinken DP von Insanz 0 verlinken und z.B. umrechnen.