NEWS
Sporadisch Fehler bei Blockly
-
Seit einiger Zeit bekomme ich folgende Meldugen im Log:
2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: Error: TypeError: Converting circular structure to JSON 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: --> starting at object with constructor 'Timeout' 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: | property '_idlePrev' -> object with constructor 'TimersList' 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: --- property '_idleNext' closes the circle 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JSON.stringify () 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at getState (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:3281:68) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Object. (script.js.common.Heizung.Set_Heizung_MotionWZ_Var:4:9) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:1968:38) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JavaScript.onStateChange (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:1184:29) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JavaScript.emit (node:events:519:28) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11270:53) 2026-10-21 19:43:03.986 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at processImmediate (node:internal/timers:484:21) 2026-10-21 19:43:03.986 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at process.callbackTrampoline (node:internal/async_hooks:130:17)Das dazugehörige Blockly lesbar als JS:
on({ id: [].concat(['zigbee.1.00158d00029bb07b.occupancy']).concat(['zigbee.1.00158d0002f3c7cf.occupancy']), change: 'ne' }, async (obj) => { if (getState('zigbee.1.00158d00029bb07b.occupancy').val == true || getState('zigbee.1.00158d0002f3c7cf.occupancy').val == true) { if (getState('SavedStates.0.Heizung.MotionWZ').val == false) { setState('SavedStates.0.Heizung.MotionWZ' /* Heizung.MotionWZ */, true); } } else { setStateDelayed('0_userdata.0.example_state', { val: false, ack: true, expire: 0 }, parseInt(((getState('0_userdata.0.Heizung.TimeoutMotionWZ').val) || '').toString(), 10), true); setStateDelayed('SavedStates.0.Heizung.MotionWZ' /* Heizung.MotionWZ */, false, 1200000, true); } });Das Script soll Bewegung erfassen und da die Aqara's keine "keep time" mehr bereitstellen, hab ich die mit ins Script gepackt. Die Erassung hat auch Jahre so funktioniert. Nun nicht mehr. Die Erfassung ist nicht mehr zuverlässig.
Was ist hier die Ursache? -
Seit einiger Zeit bekomme ich folgende Meldugen im Log:
2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: Error: TypeError: Converting circular structure to JSON 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: --> starting at object with constructor 'Timeout' 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: | property '_idlePrev' -> object with constructor 'TimersList' 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: --- property '_idleNext' closes the circle 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JSON.stringify () 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at getState (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:3281:68) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Object. (script.js.common.Heizung.Set_Heizung_MotionWZ_Var:4:9) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:1968:38) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JavaScript.onStateChange (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:1184:29) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JavaScript.emit (node:events:519:28) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11270:53) 2026-10-21 19:43:03.986 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at processImmediate (node:internal/timers:484:21) 2026-10-21 19:43:03.986 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at process.callbackTrampoline (node:internal/async_hooks:130:17)Das dazugehörige Blockly lesbar als JS:
on({ id: [].concat(['zigbee.1.00158d00029bb07b.occupancy']).concat(['zigbee.1.00158d0002f3c7cf.occupancy']), change: 'ne' }, async (obj) => { if (getState('zigbee.1.00158d00029bb07b.occupancy').val == true || getState('zigbee.1.00158d0002f3c7cf.occupancy').val == true) { if (getState('SavedStates.0.Heizung.MotionWZ').val == false) { setState('SavedStates.0.Heizung.MotionWZ' /* Heizung.MotionWZ */, true); } } else { setStateDelayed('0_userdata.0.example_state', { val: false, ack: true, expire: 0 }, parseInt(((getState('0_userdata.0.Heizung.TimeoutMotionWZ').val) || '').toString(), 10), true); setStateDelayed('SavedStates.0.Heizung.MotionWZ' /* Heizung.MotionWZ */, false, 1200000, true); } });Das Script soll Bewegung erfassen und da die Aqara's keine "keep time" mehr bereitstellen, hab ich die mit ins Script gepackt. Die Erassung hat auch Jahre so funktioniert. Nun nicht mehr. Die Erfassung ist nicht mehr zuverlässig.
Was ist hier die Ursache? -
-
Ich meine festgestellt zu haben, dass die Option "Mit Verzögerung" oft nicht so funktioniert wie man das gerne hätte.
Daher mein Vorschlag: Löse das mit dem Timeout-Block.
https://forum.iobroker.net/topic/70481/blockly-for-dummies-...-starthilfe-und-tipps/9 -
Seit einiger Zeit bekomme ich folgende Meldugen im Log:
2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: Error: TypeError: Converting circular structure to JSON 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: --> starting at object with constructor 'Timeout' 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: | property '_idlePrev' -> object with constructor 'TimersList' 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: --- property '_idleNext' closes the circle 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JSON.stringify () 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at getState (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:3281:68) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Object. (script.js.common.Heizung.Set_Heizung_MotionWZ_Var:4:9) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/src/lib/sandbox.ts:1968:38) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JavaScript.onStateChange (/opt/iobroker/node_modules/iobroker.javascript/src/main.ts:1184:29) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at JavaScript.emit (node:events:519:28) 2026-10-21 19:43:03.985 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at Immediate. (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11270:53) 2026-10-21 19:43:03.986 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at processImmediate (node:internal/timers:484:21) 2026-10-21 19:43:03.986 - error: javascript.0 (2027743) script.js.common.Heizung.Set_Heizung_MotionWZ_Var: at process.callbackTrampoline (node:internal/async_hooks:130:17)Das dazugehörige Blockly lesbar als JS:
on({ id: [].concat(['zigbee.1.00158d00029bb07b.occupancy']).concat(['zigbee.1.00158d0002f3c7cf.occupancy']), change: 'ne' }, async (obj) => { if (getState('zigbee.1.00158d00029bb07b.occupancy').val == true || getState('zigbee.1.00158d0002f3c7cf.occupancy').val == true) { if (getState('SavedStates.0.Heizung.MotionWZ').val == false) { setState('SavedStates.0.Heizung.MotionWZ' /* Heizung.MotionWZ */, true); } } else { setStateDelayed('0_userdata.0.example_state', { val: false, ack: true, expire: 0 }, parseInt(((getState('0_userdata.0.Heizung.TimeoutMotionWZ').val) || '').toString(), 10), true); setStateDelayed('SavedStates.0.Heizung.MotionWZ' /* Heizung.MotionWZ */, false, 1200000, true); } });Das Script soll Bewegung erfassen und da die Aqara's keine "keep time" mehr bereitstellen, hab ich die mit ins Script gepackt. Die Erassung hat auch Jahre so funktioniert. Nun nicht mehr. Die Erfassung ist nicht mehr zuverlässig.
Was ist hier die Ursache? -
@RichieXX [sagte:
getState('0_userdata.0.Heizung.TimeoutMotionWZ').valWas für einen Wert enthält dieser DP? Er muss eine Zahl oder einen String enthalten!
Hast du oben rechts "Ausführliche Protokollausgaben" aktiviert?
{ "common": { "name": "TimeoutMotionWZ", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0, "min": 0, "max": 1800000, "step": 100000, "unit": "" }, "type": "state", "native": {}, "_id": "0_userdata.0.Heizung.TimeoutMotionWZ", "acl": { "object": 1638, "state": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1792427335713 }Ausführliche Protokollausgaben sind aktiviert. Sonst würde ich eingangs erwähntes Protokoll nicht so bekommen.
Ich bin mir inzwischen auch sicher, dass dieser Datenpunkt die Ursache ist.
Aber wie schon geschrieben, hat das jahrelang funktioniert. Das kam mit irgendeinem Update, vielleicht von "javascript".
-
{ "common": { "name": "TimeoutMotionWZ", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0, "min": 0, "max": 1800000, "step": 100000, "unit": "" }, "type": "state", "native": {}, "_id": "0_userdata.0.Heizung.TimeoutMotionWZ", "acl": { "object": 1638, "state": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1792427335713 }Ausführliche Protokollausgaben sind aktiviert. Sonst würde ich eingangs erwähntes Protokoll nicht so bekommen.
Ich bin mir inzwischen auch sicher, dass dieser Datenpunkt die Ursache ist.
Aber wie schon geschrieben, hat das jahrelang funktioniert. Das kam mit irgendeinem Update, vielleicht von "javascript".
@RichieXX [sagte: Ausführliche Protokollausgaben sind aktiviert.
Deaktiviere sie. Man aktiviert sie nur zur Fehlersuche in einem Skript.
Enthält der gezeigte DP tatsächlich eine Zahl als Wert?
Update, vielleicht von "javascript".
Das kann sein. In "sandbox.ts" steht um Zeile 3281
if (sandbox.verbose) { sandbox.log( `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[id])}`, 'info', ); } -
-
Ich hatte die ausführliche Protokollierung aktiviert, da das Script nicht zuverlässig läuft und ich mir keinen Reim drauf machen konnte.
Ja, est steht eine Zahl drin. -
Ich hab das jetzt mit fixer Verzögerung getestet und bekomme den gleichen Fehler.

Ich werde mich jetzt mit @codierknecht 's Lösung beschäftigen.
-
@RichieXX [sagte: Ja, est steht eine Zahl drin.
Dann kann ich mir die Fehlermeldung nicht erklären.
Welche Meldung erscheint ohne ausführliche Protokollierung?
Wozu dient der Block "schreibe"?@RichieXX [sagte: Ja, est steht eine Zahl drin.
Dann kann ich mir die Fehlermeldung nicht erklären.
Welche Meldung erscheint ohne ausführliche Protokollierung?
Wozu dient der Block "schreibe"?Ohne die Aktivierung kommen auch keine Fehler. Trotzdem funktioniert das Script nicht zuverlässig (trotz beider Objekte "true" wird "Heizung.Motion.WZ" nicht "true" und umgekehrt).
Ich brauche aufgrund der Größe/Lage des WZ zwei Bewegungsmelder um den Status "Motion" klar zu definieren. Den schreibe ich dann in ein Objekt.
Mit diesem steuere ich weitere Aktoren, inzwischen nicht mehr nur die Heitung.
-
Ich hab das jetzt mit fixer Verzögerung getestet und bekomme den gleichen Fehler.

Ich werde mich jetzt mit @codierknecht 's Lösung beschäftigen.
-
-
@RichieXX [sagte: Ja, est steht eine Zahl drin.
Dann kann ich mir die Fehlermeldung nicht erklären.
Welche Meldung erscheint ohne ausführliche Protokollierung?
Wozu dient der Block "schreibe"?Ohne die Aktivierung kommen auch keine Fehler. Trotzdem funktioniert das Script nicht zuverlässig (trotz beider Objekte "true" wird "Heizung.Motion.WZ" nicht "true" und umgekehrt).
Ich brauche aufgrund der Größe/Lage des WZ zwei Bewegungsmelder um den Status "Motion" klar zu definieren. Den schreibe ich dann in ein Objekt.
Mit diesem steuere ich weitere Aktoren, inzwischen nicht mehr nur die Heitung.
-
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden


