NEWS
UNSOLVED node-red-contrib-loxone Uncaught Exception
-
Hallo,
ich bin der Entwickler von node-red-contrib-loxone und bei mir häufen sich die Meldungen, dass es Probleme in Verbindung mit node-red in io.Broker gibt: https://github.com/codmpm/node-red-contrib-loxone/issues/31
In node-red/iobroker.js:282 wird auf
msg.payload
zugegriffen um offensichtlich eine Statusmeldung an einem node anzuzeigen. Der Aufruf der MethodetoString
schlägt fehl damsg.payload
nicht vorhanden ist.
Normalerweise sollte jeder node aus node-red-contrib-loxone eine Payload zurück geben... Oder geht es hier um den Config-Node von dem eine Nachricht angezeigt werden soll?Kann mir evtl. unter die Arme greifen um das Problem in den Griff zu bekommen. Bin leider kein io.Broker-Spezi...
Müsste mir sowieso erst mal ne io.Broker-Installation zum Test aufbauen.Gruß,
Patrik -
Hallo Patrik,
ich hab leider kein loxone und kann den Fehler leider auch nur begrenzt nachvollziehen.
Auch kenne ich die Flows der Benutzer nicht.Die Ausgabe im Issue verweist auf die Zeile 282 in der Node-Definition von ioBroker (ioBroker.js).
Diese gehört zum Out-Node (https://github.com/ioBroker/ioBroker.node-red/blob/master/nodes/ioBroker.js). Diese Stelle wird somit nur dann durchlaufen, wenn es einen Flow gibt, die einen ioBroker Out-Node enthält und dieser ein msg-Objekt bekommt. Die reine Installation des node-red-contrib-loxone sollte eigentlich hier nichts bewirken.Zur betreffenden Code-Stelle:
node.status({fill: 'green', shape: 'dot', text: msg.payload.toString() });
Wenn ein Wert in den Key-Value-Store von ioBroker geschrieben wurde versucht der Node, den geschriebenen Inhalt als Text direkt am Node anzuzeigen. Da iobroker auch Zahlen oder Objekte als Input erlaubt, wird hier nach String konvertiert. Das Vorhandensein des Attributs payload im msg-Objekt wird jedoch nicht geprüft. Wahrscheinlich wurde ein komplett leeres Objekt oder etwas anderes als ein Objekt (z.B. Zahl, String) als msg übergeben. Deswegen schlägt der Zugriff auf msg.payload fehl und es kommt zu der Exception.
Soweit mein Versuch einer Interpretation.
-
Hey @nobody,
vielen vielen Dank - das klingt doch naheliegend. Ich hab heute Mittag wirklich wie der sprichwörtliche Ochse vom Berg gestanden, weil mir nichts eingefallen ist wo der Fehler in Verbindung mit dem Loxone-Node stehen könnte.
Ich werde dem User im Issue mal vorschlagen, dass er seine Flows leert und dann nochmal node-red-contrib-loxone installiert.
Den Fehler kann ich mit einer normalen Installation eben leider nicht reproduzieren.Versuche euch hier auf dem Laufenden zu halten.
Gruß,
Patrik -
Hallo nochmal,
es scheint so, also müsse von io.Broker-Seite Hand angelegt werden und zumindest in der fraglichen Zeile geprüft werden, ob denn
msg.payload
überhaupt vorhanden ist bevortoString()
ausgeführt wird.Ich ändere gerne etwas in node-red-contrib-loxone, aber die Prüfung scheint mir die sinnigere Wahl.
Gruß,
Patrik