Systemdata | Bitte Ausfüllen |
---|---|
Hardwaresystem: | NUC |
Arbeitsspeicher: | 4GB |
Festplattenart: | HDD |
Betriebssystem: | Ubuntu / Docker |
Node-Version: | 10.x.x |
Nodejs-Version: | 14.18.3 |
NPM-Version: | 6.14.15 |
Installationsart: | Docker |
Image genutzt: | Nein |
Ort/Name der Imagedatei: | Link |
Zur Steuerung meines AV Receivers nutze ich dieses Skript.
var host, port, message;
let socketClient;
host = '10.10.21.14';
port = 84;
// PowerON
on({id: 'fakeroku.0.lyngdorf.keys.Select', change: "any"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("fakeroku.0.lyngdorf.keys.Select").val) {
await Send_mesage_via_TCP(host, port, '!POWERONMAIN\r');
}
});
// PowerOFF
on({id: 'fakeroku.0.lyngdorf.keys.Home', change: "any"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("fakeroku.0.lyngdorf.keys.Home").val) {
await Send_mesage_via_TCP(host, port, '!POWEROFFMAIN\r');
}
});
// Vol+
on({id: 'fakeroku.0.lyngdorf.keys.Up', change: "any"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("fakeroku.0.lyngdorf.keys.Up").val) {
await Send_mesage_via_TCP(host, port, '!VOL+\r!VOL+\r');
}
});
// Vol-
on({id: 'fakeroku.0.lyngdorf.keys.Down', change: "any"}, async function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("fakeroku.0.lyngdorf.keys.Down").val) {
await Send_mesage_via_TCP(host, port, '!VOL-\r!VOL-\r');
}
});
...
async function Send_mesage_via_TCP(host, port, message) {
// Create the socket client if it was not already created
if (!socketClient) {
console.log('create new connection.');
var net = require('net');
socketClient = net.connect({ host: host, port: port });
// On disconnect
socketClient.on("end", () => {
console.log("Disconnected from API");
socketClient.destroy();
socketClient = null;
});
// Wait until connection is established
await once(socketClient, "connect");
}
// Send the message
socketClient.write(message);
// Listen for the response
const data = await once(socketClient, "data");
//const response = JSON.parse(data).result;
};
Das Skript steuert den AV Receiver via TCP Befehlen. Das klappt soweit seit Monaten bestens. Seit einigen Tagen erhalte ich im Log diese Fehler:
2022-03-13 19:33:30.286 - [32minfo[39m: javascript.0 (135) script.js.common.Lyngdorf.Fernbedienung: getState(id=fakeroku.0.lyngdorf.keys.Down, timerId=undefined) => {"val":true,"ack":true,"ts":1647196410285,"q":0,"from":"system.adapter.fakeroku.0","user":"system.user.admin","lc":1647196410285}
2022-03-13 19:33:30.287 - [31merror[39m: javascript.0 (135) script.js.common.Lyngdorf.Fernbedienung: TypeError: Converting circular structure to JSON
2022-03-13 19:33:30.287 - [31merror[39m: javascript.0 (135) --> starting at object with constructor 'Socket'
2022-03-13 19:33:30.287 - [31merror[39m: javascript.0 (135) | property '_writableState' -> object with constructor 'WritableState'
2022-03-13 19:33:30.287 - [31merror[39m: javascript.0 (135) | property 'afterWriteTickInfo' -> object with constructor 'Object'
2022-03-13 19:33:30.287 - [31merror[39m: javascript.0 (135) --- property 'stream' closes the circle
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at JSON.stringify (<anonymous>)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at Object.subscribe (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1109:65)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at _once (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1191:46)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at /opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1199:47
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at new Promise (<anonymous>)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at once (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1199:24)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at Send_mesage_via_TCP (script.js.common.Lyngdorf.Fernbedienung:155:24)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at Object.<anonymous> (script.js.common.Lyngdorf.Fernbedienung:39:11)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1082:38)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:530:29)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
2022-03-13 19:33:30.288 - [31merror[39m: javascript.0 (135) at processImmediate (internal/timers.js:464:21)
Ich kann es nicht mit Gewissheit sagen. Ich denke aber, dass Fehler erstmalig mit dem Update auf js-controller 4 aufgetreten ist. Sicher bin ich aber nicht.
Der Fehler im Log wird mit jedem Lauf des Skripts geschrieben. Hat jemand eine Idee?
Ergänzung: Ich habe noch etwas getestet und festgestellt, dass die Fehlermeldung mit der "verbose" Option im Skript Editor im Zusammenhang steht. Ist diese aktiviert, erscheinen die Fehler im Protokoll.
Danke und Grüße
Michael