NEWS
[gelöst] Modbus Objekt auf einmal nicht mehr durch Blockly schreibbar?
-
Hi, ich schonwieder :)
Nachdem ich am WE eine Reihe von Updates gemacht habe und sowohl den Modbus auf 2.0.3 als auch den JavaScript auf 3.7.0 hochgezogen habe, stelle ich ein merkwürdiges Phänomen fest: ein Objekt im Modbus Tree ist auf einmal für Blockly nicht mehr .. naja, zumindest nicht schreibbar, es scheint aber, dass er überhaupt nicht an ihn dran kommt. Spannenderweise hat es vorher problemlos funktioniert, ohne dass Scipt oder Objekt geändert wurden. Hier die Screenshots:
Das betreffende Objekt:

In den Objekteinstellungen habe ich das Schreibrecht aktiviert (mich wundert ohnehin, dass es nicht da war, ich meine es früher schonmal gesetzt zu haben):

Dies ist der Teil des Blockly Scripts, das dem Modbus Objekt einen neuen Wert zuweist:

Im Quelltext sieht es so aus:

Hier fällt mir auf, dass Blockly das Objekt nicht "auf seinen Namen" umsetzt, wie es normalerweise ist, sondern das "modbus.2.xyz…" stehen läßt. Ich habe mal gelernt, dass sowas auf einen Fehler hindeutet, zB wenn man Objekte im Nachhinein umbenannt oder gelöscht hat. Dabei ist das Objekt so geblieben wie es war (und wie es vorher funktioniert hat), es sei denn, das Modbus Update hat da irgendwas verändert (zB wegen der Sonderzeichengeschichte?).
In dem Moment, wo die Schreibaktivität auf den Modbus Adapter erfolgen soll, passiert im Log Folgendes:
2018-06-24 15:27:30.015 - error: javascript.0 Error in callback: TypeError: Cannot read property 'warn' of null 2018-06-24 15:27:30.016 - error: javascript.0 at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1024:48) [b]2018-06-24 15:27:30.018 - error: javascript.0 at Object. (script.js.common.Ladestation.Ladestrombestimmung_variable:61:11)[/b] 2018-06-24 15:27:30.019 - error: javascript.0 at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:922:34) 2018-06-24 15:27:30.019 - error: javascript.0 at Job.invoke (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:173:10) 2018-06-24 15:27:30.020 - error: javascript.0 at /opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:543:11 2018-06-24 15:27:30.021 - error: javascript.0 at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker.javascript/node_modules/node-schedule/lib/schedule.js:501:7) 2018-06-24 15:27:30.022 - error: javascript.0 at ontimeout (timers.js:386:11) 2018-06-24 15:27:30.023 - error: javascript.0 at tryOnTimeout (timers.js:250:5) 2018-06-24 15:27:30.023 - error: javascript.0 at Timer.listOnTimeout (timers.js:214:5)Die hervorgehobene Zeile im Log bezieht sich ja nun eindeutig auf die entsprechende Blockly Zeile (61).
Gibt es noch irgendwas, das ich ändern kann? Eine zusätzliche Zeile einzufügen bringt keine Änderung, die Referenzierung auf das Objekt funktioniert nicht.
Wenn ich im Objektbaum dem Modbus Objekt manuell einen neuen Wert zuweise, funktioniert es sofort und wird auch vom Device übernommen und in dessen Webif angezeigt, sodass ich hier irgendwie weniger den Modbus sondern mehr den Blockly/JS Adapter im Verdacht habe?
Danke für einen Tipp :)
Viele Grüße
Christian
-
Update: es scheint doch irgendwas im Modbus Adapter zu sein. Die Konfiguration der Werte ist irgendwie komisch.
Die Objektbezeichnungen scheinen sich bisher aus dem Muster ADRESSE_NAME zusammenzusetzen. Bei zB den Coils funktioniert das auch wunderbar:

Bei den HoldingRegisters hingegen NICHT:

Ich habe spaßeshalber den 300er neu angelegt und ihm manuell die Nomenklatur ADRESSE_NAME verpasst:

Ergebnis: die Namensvergabe macht ein ADRESSE_ADRESSE_NAME daraus:

Spannenderweise werden gleich ALLE(!) Objekte der entsprechenden Instanz umbenannt:

Und das, obwohl sich die Bezeichnung in der Adapterconfig nicht geändert hat:

Ist hier vielleicht bei der Adapterentwicklung was schiefgegangen?
-
Erledigt.. https://github.com/ioBroker/ioBroker.modbus/issues/16
Nur: wie benenne ich die Objekte jetzt wieder "zurück"? Es wären ziemlich viele Scripte sonst anzupassen :(
-
Erledigt.. https://github.com/ioBroker/ioBroker.modbus/issues/16
Nur: wie benenne ich die Objekte jetzt wieder "zurück"? Es wären ziemlich viele Scripte sonst anzupassen :( `
Leider nicht, die Objekte mussten angepasst werden wegen unzulässigen Zeichen du wirst deine Scripte ändern Müssen
Sent from my iPhone using Tapatalk
-
Neuinstallation und Anpassung der Scripte hat das Problem gelöst.