@legro
Aufteilen von Skripte
da gibt e mittlerweile mehrere threads. Eine so richtig gute standardlösung gibt es nicht, da das ablegen von extra Dateien im DAteisystem immer etwas schwierig ist.
Die beste Lösung ist glaube ich die Funktionen auf verschiedene Skripte aufzuteilen und die Funktionen über das Messagingsystem (messageToAsync,onMessage) aufzurufen. Ein Besipiel siehst du hier
https://forum.iobroker.net/topic/84000/skript-aufteilen-möglich/13?_=1775167478022
Debugger
gibt/gab es schon (so ein käferknopf, den ich aber jetzt nicht mehr sehe), aber der ist glaube ich nicht wirklich gut zu bedienen.
Wenn du, allerdings mit kleinen Einschränkungen, debuggen willst, dann verwende dazu vscode. für vscode gibt es auch eine extention die dir die scripte hin und her synchronisiert.
Allerdings stehen dir in vscode die iobroker funktionen nicht zur Verfügung. Also setState ist dort unbekannt.
Ich behelfe mich da immer mit stub-funktionen, die ich am Ende meines Skripts hinzufüge, also sowas wie
//vscode stub functions for iob
function on(/* event, callback */) { }
function setState(/* id, value, ack */) { }
function log(/* msg, level */) { }
function schedule(/* event, callback */) { }
Diese Funktionen machen einfach nichts. Wenn du zum testen dann das doch mal brauchst, kannst du das durch extra code einfach simulieren
Am Beispiel von getState würde das dann so aussehen:
Als erstes holt man sich den Rückgabewert von getState in einem skript im iobroker
log(JSON.stringify(getState("0_userdata.0.val1")));
Das erzeugt dann im log den folgenden Eintrag
{"val":"123","ack":false,"ts":1768518884892,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1768518884892}
Den kopiert man
und fügt ihn in eine stubfunktion wie folgt ein
function getState(id) {
if (id === "0_userdata.0.val1") {
return JSON.parse(
'{"val":"123","ack":false,"ts":1768518884892,"q":0,"from":"system.adapter.admin.0","user":"system.user.admin","lc":1768518884892}',
);
}
und schon hat man seine Stummelfunktion für getState, mit der man dann seine Skripte im iobroker auch debuggen und testen kann.