NEWS
JavaScript Adapter startet ständig neu
-
Seit einiger Zeit ist mir im Haaus aufgefallen das oft viele Dinge stark zeitverzögert sin, z.B. Bewegungsmelder der sonst direkt das Licht geschaltet hat, dauert jetzt über 5 Sekunden.
Mir ist aufgefallen das der Javascript Adapter ständig neu startet. Weiter scheinen die Eingangserebnisse irgendwie relativ hoch zu sein, wie ist diese Zahl zu Werten?
Obwohl der Adapter im Debug steht finde ich nichts im log. Beim Start sieht alles gut aus. Vermutlich wird ja in irgenein script dann ein großer Bock drin sein, oder? Auch ist die CPU Last vom Qnap auf dem iobroker im docker läuft enorm angestiegen.- welche weiteren Diagnosemöglichkeiten gibt es noch ?
- kann man generel sehen wieviel Resourcen ein einzelnes Script benötigt?
javascript.0 2023-07-27 11:38:37.748 info received all states javascript.0 2023-07-27 11:38:36.476 info received all objects javascript.0 2023-07-27 11:38:28.190 info requesting all objects javascript.0 2023-07-27 11:38:28.180 info requesting all states javascript.0 2023-07-27 11:38:22.389 debug Loaded TypeScript definitions for request: ["node_modules/@types/request/package.json","node_modules/@types/request/index.d.ts"] javascript.0 2023-07-27 11:38:22.231 debug Loaded TypeScript definitions for node: ["node_modules/@types/node/package.json","node_modules/@types/node/index.d.ts","node_modules/@types/node/assert.d.ts","node_modules/@types/node/assert/strict.d.ts","node_modules/@types/node/globals.d.ts","node_modules/@types/node/async_hooks.d.ts","node_modules/@types/node/buffer.d.ts","node_modules/@types/node/child_process.d.ts","node_modules/@types/node/cluster.d.ts","node_modules/@types/node/console.d.ts","node_modules/@types/node/constants.d.ts","node_modules/@types/node/crypto.d.ts","node_modules/@types/node/dgram.d.ts","node_modules/@types/node/diagnostics_channel.d.ts","node_modules/@types/node/dns.d.ts","node_modules/@types/node/dns/promises.d.ts","node_modules/@types/node/domain.d.ts","node_modules/@types/node/dom-events.d.ts","node_modules/@types/node/events.d.ts","node_modules/@types/node/fs.d.ts","node_modules/@types/node/fs/promises.d.ts","node_modules/@types/node/http.d.ts","node_modules/@types/node/http2.d.ts","node_modules/@types/node/https.d.ts","node_modules/@types/node/inspector.d.ts","node_modules/@types/node/module.d.ts","node_modules/@types/node/net.d.ts","node_modules/@types/node/os.d.ts","node_modules/@types/node/path.d.ts","node_modules/@types/node/perf_hooks.d.ts","node_modules/@types/node/process.d.ts","node_modules/@types/node/punycode.d.ts","node_modules/@types/node/querystring.d.ts","node_modules/@types/node/readline.d.ts","node_modules/@types/node/readline/promises.d.ts","node_modules/@types/node/repl.d.ts","node_modules/@types/node/stream.d.ts","node_modules/@types/node/stream/promises.d.ts","node_modules/@types/node/stream/consumers.d.ts","node_modules/@types/node/stream/web.d.ts","node_modules/@types/node/string_decoder.d.ts","node_modules/@types/node/test.d.ts","node_modules/@types/node/timers.d.ts","node_modules/@types/node/timers/promises.d.ts","node_modules/@types/node/tls.d.ts","node_modules/@types/node/trace_events.d.ts","node_modules/@types/node/tty.d.ts","node_modules/@types/node/url.d.ts","node_modules/@types/node/util.d.ts","node_modules/@types/node/v8.d.ts","node_modules/@types/node/vm.d.ts","node_modules/@types/node/wasi.d.ts","node_modules/@types/node/worker_threads.d.ts","node_modules/@types/node/zlib.d.ts","node_modules/@types/node/globals.global.d.ts"] javascript.0 2023-07-27 11:38:21.827 info starting. Version 7.0.3 in /opt/iobroker/node_modules/iobroker.javascript, node: v18.17.0, js-controller: 4.0.24 javascript.0 2023-07-27 11:38:20.347 debug Plugin sentry Initialize Plugin (enabled=true)
-
da hast du dir irgendwas zusammen gebaut ..was zu einem loop führt und da greist die Sichrung des javascript adapter ein und schaltet diesen aus
schalte ALLE deine Scripte aus.. dann sollte der adapter laufen .. dann nach und nach alles wieder einschalten..und kontrollieren wan der adapter so grosse io bekommen
-
@arteck
danke, ja so bin ich eigntlich auch schon rangegangen, konnte aber nichts finden, das Problem ist das es mal 5 Minuten läuft, aber auch 5 Stunden laufen kann. Deswegen hatte ich die Idee eine 2. Instanz zu installieren. Und dann die Adapter immer entsprechned zu verschieben um das zu lokalisieren.
Obwohl noch kein Scipt verschoben wurde, sind auf der 2. Instanz auch schon recht viele io, ist das normal, dort läuft noch kein einziges Script.
-
@mike2712 sagte in JavaScript Adapter startet ständig neu:
ist das normal
ja.. manchmal gehen die bis 2k hoch.. für dich interresant ist alles ab 4k
-
du kannst aber auch in der instanz
einstellen
dann beendet sich zwar der adapter aber im LOG steht dann das böse script was zum absturz geführt hat
-
@mike2712
Zeit bitte mal die Logeinträge, die vor dem starten des Javascript Adapters gespeichert werden. -
@ticaki Verstehe nicht genau was Du meinst, habe die Einträge beim Start, beim komplett Absturz gibt es keine, ob es komplett abstürzt scheint offensichtlich auch noch von anderen Dingen abhängig zu sein.
-
ich meine sowas:
host.iobroker 2023-07-27 20:20:57.514 error instance system.adapter.javascript.0 terminated with code 6 (UNCAUGHT_EXCEPTION) host.iobroker 2023-07-27 20:20:57.514 error Caught by controller[1]: State "bal" not found host.iobroker 2023-07-27 20:20:57.513 error Caught by controller[0]: 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(). The promise rejected with the reason: javascript.0 2023-07-27 20:20:57.470 info terminating javascript.0 2023-07-27 20:20:56.976 warn Terminated (UNCAUGHT_EXCEPTION): Without reason javascript.0 2023-07-27 20:20:56.976 info terminating javascript.0
hab ihn abstürzen lassen
Mir ist bekannt das du den Adapter mit
await systemfunction(baue mist) while for
zum "Absturz" bringen kannst, überprüfe mal deine Skripte... Aber da sollte doch überall ne Fehlermeldung kommen
-
@ticaki
@arteck schade, diesen Beitrag mit dem angepassten Wert auf 300 hatte ich erst jetzt gelesen, denke ich habe das Script mit Hilfe von flowchart Aufzeichnungen lokalisiert, der folgende Trend der stark schwankend ist, ist von der 2. Instanz, in der dann letztendlich nur noch 4 kleine Scripts liefen, diese dann einzeln pausiert kommt das unten aufgeführte Blocky als Verursacher zum tragen, Warum? Was habe ich dort falsch gemacht, verstanden oder falsch kopiert?
-
@mike2712
poste es bitte auch als Javascript, dann sehe ich was i ist -
@ticaki beim Absturz selbst wird nichts im Log geschrieben, das Script was ich jetzt aufgrund der CPU Last (Vorheriger Beitrag) im Verdacht habe zeigt keinen Fehler beim Starten. Das komische ist, obwohl im Host stand "terminated by request oft the instance itself.... wird nicht alleine neugestartet, ist es aber immer wieder, der Apadter war rot, startete nach einger Zeit aber neu.
13:44:21.224 info javascript.0 (6892) Stop script script.js.Allgemein.Functions.CounterBeleuchtungDeko 13:44:21.900 info javascript.1 (5510) Start javascript script.js.Allgemein.Functions.CounterBeleuchtungDeko 13:44:22.101 info javascript.1 (5510) script.js.Allgemein.Functions.CounterBeleuchtungDeko: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 20:12:35.000 info javascript.1 (5510) Stop script script.js.Allgemein.Functions.CounterBeleuchtungDeko 20:15:41.839 info javascript.1 (5510) Start javascript script.js.Allgemein.Functions.CounterBeleuchtungDeko 20:15:41.893 info javascript.1 (5510) script.js.Allgemein.Functions.CounterBeleuchtungDeko: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 20:19:34.906 info javascript.1 (5510) Stop script script.js.Allgemein.Functions.CounterBeleuchtungDeko 20:29:00.867 info javascript.1 (5510) Start javascript script.js.Allgemein.Functions.CounterBeleuchtungDeko 20:29:00.948 info javascript.1 (5510) script.js.Allgemein.Functions.CounterBeleuchtungDeko: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
-
@ticaki
hier als Javascriptvar x, i; // Script.CounterBeleuchtungDeko createState('Script.CounterBeleuchtungDeko', 0, JSON.parse('{"type":"number","unit":"","min":0,"max":100}'), async () => { // Beleuchtung Deko zählen on({ id: [].concat(Array.prototype.slice.apply($('state[id=*](functions=BeleuchtungDeko)'))), change: 'ne' }, async (obj) => { let value = obj.state.val; let oldValue = obj.oldState.val; x = 0; var i_list = Array.prototype.slice.apply($('state[id=*STATE](functions=BeleuchtungDeko)')); for (var i_index in i_list) { i = i_list[i_index]; if (getState(i).val) { x = (typeof x === 'number' ? x : 0) + 1; } } var i_list2 = Array.prototype.slice.apply($('state[id=*state](functions=BeleuchtungDeko)')); for (var i_index2 in i_list2) { i = i_list2[i_index2]; if (getState(i).val) { x = (typeof x === 'number' ? x : 0) + 1; } } var i_list3 = Array.prototype.slice.apply($('state[id=*LEVEL](functions=BeleuchtungDeko)')); for (var i_index3 in i_list3) { i = i_list3[i_index3]; if (getState(i).val) { x = (typeof x === 'number' ? x : 0) + 1; } } var i_list4 = Array.prototype.slice.apply($('state[id=*POWER](functions=BeleuchtungDeko)')); for (var i_index4 in i_list4) { i = i_list4[i_index4]; if (getState(i).val) { x = (typeof x === 'number' ? x : 0) + 1; } } setStateDelayed('Script.CounterBeleuchtungDeko', x, false, parseInt(((0) || '').toString(), 10), false); }); }); //JTNDeG1sJTIweG1sbnMlM0QlMjJodHRwcyUzQSUyRiUyRmRldmVsb3BlcnMuZ29vZ2xlLmNvbSUyRmJsb2NrbHklMkZ4bWwlMjIlM0UlM0N2YXJpYWJsZXMlM0UlM0N2YXJpYWJsZSUyMGlkJTNEJTIyKGhIcl9hZTRuQXlxa0NsJTJGUVgqdyUyMiUzRXglM0MlMkZ2YXJpYWJsZSUzRSUzQ3ZhcmlhYmxlJTIwaWQlM0QlMjI5c2wlNDAlN0JWUSUyRmFtcmR+WlRCJTdEZSUyRk8lMjIlM0VpJTNDJTJGdmFyaWFibGUlM0UlM0MlMkZ2YXJpYWJsZXMlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb21tZW50JTIyJTIwaWQlM0QlMjJKJTI0JTJCNVdEUGw4VWxONVlLQjZQd3ElMjIlMjB4JTNEJTIyLTE4NyUyMiUyMHklM0QlMjItOTg4JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQ09NTUVOVCUyMiUzRVNjcmlwdC5Db3VudGVyQmVsZXVjaHR1bmdEZWtvJTNDJTJGZmllbGQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY3JlYXRlJTIyJTIwaWQlM0QlMjJhaHglMkNZTGUlMkY3VGFYViUyQnVBVyU3QiEtJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTkFNRSUyMiUzRVNjcmlwdC5Db3VudGVyQmVsZXVjaHR1bmdEZWtvJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJiYyUzRHJzdyUyQkVSRU0lM0JpLmF2cDYoViUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTAlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJDT01NT04lMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJxJTdEJTNEb3haNCUzRFpESlYlNUUzUSUzQiUzRjMqZSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlN0IlMjJ0eXBlJTIyJTNBJTIybnVtYmVyJTIyJTJDJTIydW5pdCUyMiUzQSUyMiUyMiUyQyUyMm1pbiUyMiUzQTAlMkMlMjJtYXglMjIlM0ExMDAlN0QlM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyU1RBVEVNRU5UJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29tbWVudCUyMiUyMGlkJTNEJTIyJTIzITJULXJDQSUyRmJUSW1DJTNBMnVsM3MlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT01NRU5UJTIyJTNFQmVsZXVjaHR1bmclMjBEZWtvJTIweiVDMyVBNGhsZW4lM0MlMkZmaWVsZCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJvbl9leHQlMjIlMjBpZCUzRCUyMlBwY1BIdSUyQkNBJTNGcGUlNURwLUElM0IlN0MlMkNuJTIyJTNFJTNDbXV0YXRpb24lMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMTk5OSUyRnhodG1sJTIyJTIwaXRlbXMlM0QlMjIxJTIyJTNFJTNDJTJGbXV0YXRpb24lM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDT05ESVRJT04lMjIlM0VuZSUzQyUyRmZpZWxkJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQUNLX0NPTkRJVElPTiUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEMCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMjApMHNwJTI0STFjY2ZtJTI1NFNkZS1tVCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMm9pZCUyMiUzRWRlZmF1bHQlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnNlbGVjdG9yJTIyJTIwaWQlM0QlMjJ1ekMlN0J0JTNBVFJKRGhJKXNzJTYwcmMlMjQlMkIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFc3RhdGUlNUJpZCUzRColNUQoZnVuY3Rpb25zJTNEQmVsZXVjaHR1bmdEZWtvKSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJTVEFURU1FTlQlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ2YXJpYWJsZXNfc2V0JTIyJTIwaWQlM0QlMjJRMU4lNDBVM350NDRhKTFQKjJrZyU1Qk8lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMihoSHJfYWU0bkF5cWtDbCUyRlFYKnclMjIlM0V4JTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJWQUxVRSUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMm1hdGhfbnVtYmVyJTIyJTIwaWQlM0QlMjJTJTVFQlI2LkxOajN4KEwlMjNWYXF3ajYlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2ZvckVhY2glMjIlMjBpZCUzRCUyMnVjYiUzQXNONFhGS0NlSiUyNHMqKmtzMyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyOXNsJTQwJTdCVlElMkZhbXJkflpUQiU3RGUlMkZPJTIyJTNFaSUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyTElTVCUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnNlbGVjdG9yJTIyJTIwaWQlM0QlMjJsJTNBOUFjZSU1Qi5HM2RSUDl1OFYwRlIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFc3RhdGUlNUJpZCUzRCpTVEFURSU1RChmdW5jdGlvbnMlM0RCZWxldWNodHVuZ0Rla28pJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMk00RSU1RFBLJTQwMyUyRkxfSFY1OVklMkNOWW4lMjIlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJJRjAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJnZXRfdmFsdWVfdmFyJTIyJTIwaWQlM0QlMjItUld3JTNEVyUyM1Rfek1aRChsLkM4dCElMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJBVFRSJTIyJTNFdmFsJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJPSUQlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIydGV4dCUyMiUyMGlkJTNEJTIySi4lMkN1Q0QlNURUcSUzQm1vOVVUQkdiJTNGJTdEJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyOXAlMkI5TlZ6M3JGJTNBU1RsNTMlMjVpJTYwMCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyOXNsJTQwJTdCVlElMkZhbXJkflpUQiU3RGUlMkZPJTIyJTNFaSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9jaGFuZ2UlMjIlMjBpZCUzRCUyMiUzRDQlM0EqbyUzQWVoNS1FVTZJWGRFZGNJJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjIoaEhyX2FlNG5BeXFrQ2wlMkZRWCp3JTIyJTNFeCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyREVMVEElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMiUyQ20lN0JyQWI0alglMjMyN0hzRU9EZjYlMjMlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UxJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0NuZXh0JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfZm9yRWFjaCUyMiUyMGlkJTNEJTIyYzRCcmZuRSklN0IlN0N3JTYwSCUyM0poJTdDQVF5JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjI5c2wlNDAlN0JWUSUyRmFtcmR+WlRCJTdEZSUyRk8lMjIlM0VpJTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJMSVNUJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyc2VsZWN0b3IlMjIlMjBpZCUzRCUyMjElM0YlM0QzQV8pdzMlM0RHQ08tUHFYMy43JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRXN0YXRlJTVCaWQlM0Qqc3RhdGUlNUQoZnVuY3Rpb25zJTNEQmVsZXVjaHR1bmdEZWtvKSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETyUyMiUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2lmJTIyJTIwaWQlM0QlMjJuRE5VOVVtKTclN0RtWTg2U0VTck5KJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlX3ZhciUyMiUyMGlkJTNEJTIyRjUpTk5BQ1RrJTI0JTI0cWVIZjdxaVVNJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyQVRUUiUyMiUzRXZhbCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyT0lEJTIyJTNFJTNDc2hhZG93JTIwdHlwZSUzRCUyMnRleHQlMjIlMjBpZCUzRCUyMiUzRlVkJTVCUiUyQiUyNVEqMTUlNUVVZyFoTUMzQSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMiU3QlltVnpGa0RfJTI1JTVEJTNGUlAlMkIyNkolM0JTJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjI5c2wlNDAlN0JWUSUyRmFtcmR+WlRCJTdEZSUyRk8lMjIlM0VpJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQ3N0YXRlbWVudCUyMG5hbWUlM0QlMjJETzAlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJtYXRoX2NoYW5nZSUyMiUyMGlkJTNEJTIyWVdtJTIzdlU2N3JfJTdDQ1QwN0p1NSo3JTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjIoaEhyX2FlNG5BeXFrQ2wlMkZRWCp3JTIyJTNFeCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyREVMVEElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMnhuU0Y2YiUyNVklNjA3JTYwQ1dCJTNEIUUlM0RVSyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19mb3JFYWNoJTIyJTIwaWQlM0QlMjJlJTNCLkIuNjhPRVZpOUglMjNFcE9waEclMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMjlzbCU0MCU3QlZRJTJGYW1yZH5aVEIlN0RlJTJGTyUyMiUzRWklM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkxJU1QlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJzZWxlY3RvciUyMiUyMGlkJTNEJTIyTiUzQXpqKHMyeldmbyUyQyUyRnQpcnZNYUglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJURVhUJTIyJTNFc3RhdGUlNUJpZCUzRCpMRVZFTCU1RChmdW5jdGlvbnMlM0RCZWxldWNodHVuZ0Rla28pJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDc3RhdGVtZW50JTIwbmFtZSUzRCUyMkRPJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyY29udHJvbHNfaWYlMjIlMjBpZCUzRCUyMmZsMmlnLSUyQmdESSU3RHdqRighJTdDU3BwJTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlX3ZhciUyMiUyMGlkJTNEJTIyV0tzeGJ1JTJDRVF0cGNVMk0wRzBJbiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJiNiUyNCU1RCU1Qk04JTNBJTI1JTVFQnFtT0ElN0Q3dSU3QyU0MCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMiU2MFglMkNQZGNhRmZrV3g3bEJIRGFoXyUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyOXNsJTQwJTdCVlElMkZhbXJkflpUQiU3RGUlMkZPJTIyJTNFaSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9jaGFuZ2UlMjIlMjBpZCUzRCUyMlViSS5aU0VNIVUlM0IlNjAqJTVCQyUyNDJHa2YlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMihoSHJfYWU0bkF5cWtDbCUyRlFYKnclMjIlM0V4JTNDJTJGZmllbGQlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJERUxUQSUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyOSUzRDRsX1pZd2QlNjA3JTVEdDFjJTNGJTI1dndXJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyTlVNJTIyJTNFMSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDJTJGdmFsdWUlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDbmV4dCUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMmNvbnRyb2xzX2ZvckVhY2glMjIlMjBpZCUzRCUyMiU0MG8tejJhTFI0JTJDdm8oMUklMkMpJTIzLTglMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJWQVIlMjIlMjBpZCUzRCUyMjlzbCU0MCU3QlZRJTJGYW1yZH5aVEIlN0RlJTJGTyUyMiUzRWklM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMkxJU1QlMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJzZWxlY3RvciUyMiUyMGlkJTNEJTIyT2xRJTJCblElMkMlNURRRjRFJTNBRH42QWhqOCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0VzdGF0ZSU1QmlkJTNEKlBPV0VSJTVEKGZ1bmN0aW9ucyUzREJlbGV1Y2h0dW5nRGVrbyklM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8lMjIlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sc19pZiUyMiUyMGlkJTNEJTIycTVaJTdEYyUyQlVYeTJFNlFBJTI1JTdDJTIzTEI3JTIyJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIySUYwJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIyZ2V0X3ZhbHVlX3ZhciUyMiUyMGlkJTNEJTIySSU3RCUzRGktTEglNUJGTEFlNCUyM0QqSFB2dSUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMkFUVFIlMjIlM0V2YWwlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJtKSUyRkElNUI1eCU0MCFUend3dUxiZWJ4OCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlRFWFQlMjIlM0UlM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQ2Jsb2NrJTIwdHlwZSUzRCUyMnZhcmlhYmxlc19nZXQlMjIlMjBpZCUzRCUyMmdoViUyRkMqWDcuKFYhMElGZGklNDBHeiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyOXNsJTQwJTdCVlElMkZhbXJkflpUQiU3RGUlMkZPJTIyJTNFaSUzQyUyRmZpZWxkJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0NzdGF0ZW1lbnQlMjBuYW1lJTNEJTIyRE8wJTIyJTNFJTNDYmxvY2slMjB0eXBlJTNEJTIybWF0aF9jaGFuZ2UlMjIlMjBpZCUzRCUyMn4lN0JGSiUzQjQlM0FOJTJGJTJDbkQlNUJyd3dTMnNMJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVkFSJTIyJTIwaWQlM0QlMjIoaEhyX2FlNG5BeXFrQ2wlMkZRWCp3JTIyJTNFeCUzQyUyRmZpZWxkJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyREVMVEElMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybWF0aF9udW1iZXIlMjIlMjBpZCUzRCUyMk4lMkNQUSUyM09BTSElN0RsT0NuQWElMkZFaCU2MCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMk5VTSUyMiUzRTElM0MlMkZmaWVsZCUzRSUzQyUyRnNoYWRvdyUzRSUzQyUyRnZhbHVlJTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnN0YXRlbWVudCUzRSUzQ25leHQlM0UlM0NibG9jayUyMHR5cGUlM0QlMjJjb250cm9sX2V4JTIyJTIwaWQlM0QlMjIlN0J+Qi1kWUshLTBFJTJDMDchdGl+SW4lMjIlMjBpbmxpbmUlM0QlMjJ0cnVlJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVFlQRSUyMiUzRWZhbHNlJTNDJTJGZmllbGQlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJDTEVBUl9SVU5OSU5HJTIyJTNFRkFMU0UlM0MlMkZmaWVsZCUzRSUzQ3ZhbHVlJTIwbmFtZSUzRCUyMk9JRCUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJmaWVsZF9vaWQlMjIlMjBpZCUzRCUyMjglNDBDaWRVJTJDaVpKWSU1QiU3Q3g5JTJCWmU0dCUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMm9pZCUyMiUzRU9iamVjdCUyMElEJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0NibG9jayUyMHR5cGUlM0QlMjJ0ZXh0JTIyJTIwaWQlM0QlMjJiJTNBQjAlNUUwJTVEaE1nbzFnWCUzQW15U1RpJTIyJTNFJTNDZmllbGQlMjBuYW1lJTNEJTIyVEVYVCUyMiUzRVNjcmlwdC5Db3VudGVyQmVsZXVjaHR1bmdEZWtvJTNDJTJGZmllbGQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnZhbHVlJTNFJTNDdmFsdWUlMjBuYW1lJTNEJTIyVkFMVUUlMjIlM0UlM0NzaGFkb3clMjB0eXBlJTNEJTIybG9naWNfYm9vbGVhbiUyMiUyMGlkJTNEJTIyJTIzJTI0NlglN0RHeC0lM0ElMjQoUUlDYnBEJTNBeC4lMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJCT09MJTIyJTNFVFJVRSUzQyUyRmZpZWxkJTNFJTNDJTJGc2hhZG93JTNFJTNDYmxvY2slMjB0eXBlJTNEJTIydmFyaWFibGVzX2dldCUyMiUyMGlkJTNEJTIyckxncyUyM3IlMkJKMWU0U1gqdCUzQnolM0RnRiUyMiUzRSUzQ2ZpZWxkJTIwbmFtZSUzRCUyMlZBUiUyMiUyMGlkJTNEJTIyKGhIcl9hZTRuQXlxa0NsJTJGUVgqdyUyMiUzRXglM0MlMkZmaWVsZCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGdmFsdWUlM0UlM0N2YWx1ZSUyMG5hbWUlM0QlMjJERUxBWV9NUyUyMiUzRSUzQ3NoYWRvdyUyMHR5cGUlM0QlMjJtYXRoX251bWJlciUyMiUyMGlkJTNEJTIyJTVCT3NWMCUyMzBXJTIzfiUyQkFvT0NBcyUzRCU0MHIlMjIlM0UlM0NmaWVsZCUyMG5hbWUlM0QlMjJOVU0lMjIlM0UwJTNDJTJGZmllbGQlM0UlM0MlMkZzaGFkb3clM0UlM0MlMkZ2YWx1ZSUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGbmV4dCUzRSUzQyUyRmJsb2NrJTNFJTNDJTJGc3RhdGVtZW50JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZuZXh0JTNFJTNDJTJGYmxvY2slM0UlM0MlMkZzdGF0ZW1lbnQlM0UlM0MlMkZibG9jayUzRSUzQyUyRm5leHQlM0UlM0MlMkZibG9jayUzRSUzQyUyRnhtbCUzRQ==
-
@mike2712
Dankegehe ich recht in der Annahme das die Funktion BeleuchtungDeko dem ganzen Objektbaum unterhalb des jeweiligen geräts zu gewiesen wurde?
Wenn das zutrifft sollte das hier abhilfe schaffen:
Diese beiden Timeout bausteine entprellen deine Lampen und es gibt nicht mehr schreib vorgänge als max 1 pro Sekunde. Falls die jedoch nie zu ruhe kommen, wird garnichts geschrieben.
-
@ticaki
Folgende Geräte habe ich in die Funktion gezogen denke gerade drüber nach ob das überhaupt richtig ist, hätte ich das in einer Aufzählung anstatt Funktion machen müssen? Es ist aber nicht der ganze Objektbaum. Schreibvorgänge auf die Lampe gibt es doch gar nicht, eigentlich wollte ich nur zählen wieviele an sind, zum schalten habe ich dann ein anderes Script aus dem Netz was bei Trigger alles in der aufgelistetetn Funktion ausschaltet.// ----------------------------------------------- // Variable // ----------------------------------------------- createState('Script.BeleuchtungDekoAus',false); var idTrigger = 'javascript.0.Script.BeleuchtungDekoAus'/*Licht-Aus*/; // ----------------------------------------------- // Trigger // ----------------------------------------------- on( { id: idTrigger, val: true }, // ----------------------------------------------- // Aktion // ----------------------------------------------- function (obj) { var idx = 0; var interval = 300; $('channel[state.id=*.STATE](functions=BeleuchtungDeko)').each(function(id,i) { if (getState(id).val) setStateDelayed(id, false, (idx++) * interval); }); $('channel[state.id=*.state](functions=BeleuchtungDeko)').each(function(id,i) { if (getState(id).val) setStateDelayed(id, false, (idx++) * interval); }); $('channel[state.id=*.LEVEL](functions=BeleuchtungDeko)').each(function(id,i) { if (getState(id).val > 0) setStateDelayed(id, 0, (idx++) * interval); }); $('channel[state.id=*.POWER](functions=BeleuchtungDeko)').each(function(id,i) { if (getState(id).val > 0) setStateDelayed(id, 0, (idx++) * interval); }); setTimeout(function () { setState(idTrigger, false, true); }, 2000); log('Alle Schalter und Dimmer abgeschaltet'); } );
-
@mike2712 sagte in JavaScript Adapter startet ständig neu:
@ticaki
Folgende Geräte habe ich in die Funktion gezogen denke gerade drüber nach ob das überhaupt richtig ist, hätte ich das in einer Aufzählung anstatt Funktion machen müssen?Aufzählung würde aber dann nie aktuell sein.
Das Problem ist das für jeden Wert, der sich in einer dieser Lampen ändert das Skript triggert, also auch für "Online seit" und "Volt"
Kopiere lieber die Zählselektoren und hefte sie an den Triggerblock, dann reagiert das Skript nur noch bei an/aus. Kannst den Triggerblock vergrößen so das mehr dran passt.
-
@ticaki meinst du das so?
Aber dann wäre der ganze Vorteil der Funktion weg, dann müsste ich jeweils an die Trigger anpassen wenn ich etwas in den Aufzählungen ändere, wenn steckdose 36 oder was auch immer zu DekoBeleuchtung gehören soll.
Update
so meinst du es, oder ?
-
- Version ja, genau
Edit: wenn du aber was an der Beleuchtungsdeko änderst musst du das Skript neustartet. Die listen aktualisieren sich nicht wärend des betriebs
-
@ticaki super danke, ja das funktioniert auch, CPU Last bleibt nahezu konstant, puh ob man dann daran denkt das script neuzustarten, okay, wenns nicht funktioniert wird es mir bestimmt einfallen
Noch 2 kurze Fragen, bin gerade dabei alles ein wenig zu optimieren, weil iobroker meine QNAP CPU schon massiv auslastet mittlerweile, es ist ja in den Jahren auch immer mehr und mehr dazugekommen. aber alleine dieses fehlerhafte Script hatte schon massive auswirkungen auf den QNAP, ist das normal, vermutlich ja.
- ist es sinnvoller die scripte in 2 Instanzen aufzuteilen oder ist das Resourcen mässig ehr vom Nachteil, für die Fehlersuche war es jetzt hilfreich
- ich habe extrem viele anlage Werte (Stromverbrauch, PV Werte, Batterieladung / Batterentladung, etc.) die als Trigger benutzt werden zum Teil der selbe Datenpunkt an vielen verschiedenen Trigger, weil das Aufgeteilt ist zum Beispiel in verschiedenen Gruppen, PV-Erzeugung, Eigenverbrauch, Netzrückspeisung, da wird als Beispiel immer die aktuelle PV leistung benötigt, wie auch immer, kann man wie bei Aufzeichnungen eine Art Blockzeit mit angeben wie z.B. für die Trends? Oder welche Möglichkeiten der Optimierung gäbe an dieser Stelle, denke das benötigt schon viel Leistung aktuell in meinem System.
-
@mike2712
Wenn du terminal zugriff auf das QNAP hast und darauf linux läuft installiere dir htop und schaue es dir anBei mir hat der shelly adapter rund das 4-fache der CPUzeit belegt im bezug auf den rest und der redis 4 mal mehr als shelly.
optimierungen an Skripten bringen nicht soviel, ausser bei einem wie diesem.
Ich würde Lesbarkeit der Optimierung vorziehen.
Du könntest dir über eine simple Javascriptfunktion ein Blockly bauen das dir Skripte restartet
startScript(varname)
und bevor die Funktion aufrufst schreibst du den Skriptnamen in die Variable varname, die du zuvor angelegt hast
-
@ticaki danke, aber so tief stecke ich nicht in der Materie, bin eigentlich nur froh das alles doch relativ gut läuft bei den Mengen an Geräten, Adaptern und scripten. QNAP analysiere ich nur ein wenig wie folgen screenshot.
Aktuell läuft es auch wieder deutlich besser, nur sind in der CPU Last extreme Schwankungen, von 40 -> 98 ohne für mich ersichtlichen Grund, ich beobachte das dann erstal weiter. Ja Lesbarkeit ist schon wichtig, ich habe eihentlich auch in allen Scripten Kommentare, von Beruf bin ich SPS Automatisierer, aus diesem Grund achte ich auch schon auf so etwas. Vielen dank für die Hilfe, der Übeltäter wurde ja schnell gefunden und entsprechend abgeändert.