Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Kleines Debug Script gesteuert über State

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Kleines Debug Script gesteuert über State

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      coffee-junk last edited by

      Hallo,

      ich hatte in der letzten Zeit immer wieder mal das Problem, dass in meinen JavaScripten ominöse Fehler aufgetaucht sind, diese aber nach Neustart der JavaScript (im DebugMode) sich nicht mehr so schnell gezeigt haben… und die Logs dadurch unübersichtlich wurden.

      Habe deshalb habe ich ein kleines Script geschrieben, mit dem ich zur Scipt-Laufzeit über das "eigene" Debuging ein/ausschalten kann.

      Um die Funktionalität in einem Script zu nutzen, muss dort lediglich eine Variable mit dem Namen der zu debugenden Anwendung angelegt werden.

      Um dann seine MSGs auszugeben verwendet man statt log die Funktion myDebug("Das geht mal wieder nicht")

      Das Script legt im State-Ordner der laufenden javascript Instanz einen Ordner mit dem Namen "Debug" an, der für jede registrierte Anwendung dort ein Flag anlegt, mit dem man den Debug ein/ausschalten kann zur Laufzeit, also ohne Neustart des Scripts oder der java Instanz.

      Dazu muss man das Script in global speichern. Bei ersten Start des zu Debug Programms kommen einmalig ein paar Warnmeldungen, weil die States nicht angelegt sind, danach erscheinem nur noch Status-Meldungen wenn Debug ein oder ausgeschaltet wird.

      Vielleicht kanns ja der eine oder andere brauchen. Praktischer Weise kann man das dann sogar über VIS steuern.

      // V0.02 globalDebug.js
      // Erzeugt für jedes Programm bei der ersten Debugausgabe ein State in javascript.x.DEBUG
      // Durch setzen dieses Flags, können DeBug Messages im laufenden Script aktiviert/deaktiviert werden
      
      var DEBUGROOT = "javascript." + instance + ".Debug."; // Rootverzeichnis
      var DEBUGNAME = "";                                   // Platzhalter für die ID des Flags, muss durch das entsprechende Scipt gesetzt sein
      var myDebugActive = false;                            // ist true, wenn Debugging eingeschaltet ist
      var myDebugInit = false;                              // ist true, wenn die Debug Funktion initalisiert ist
      
      function initMyDebug() {
        createState(DEBUGROOT + DEBUGNAME, {
          type:   'boolean',
          read:   true,
          write:  true,
          def:    false,
          states: "false:DEBUG_OFF; true:DEBUG_ON"
        },false);
      
        myDebugActive = getState(DEBUGROOT + DEBUGNAME).val;
      }
      
      function myDebug (debugtext){
        if(!myDebugInit) {
          // Debug ist noch nicht initalisiert
          if(DEBUGNAME !== "") {
            initMyDebug();
            on ({id: DEBUGROOT + DEBUGNAME,change: "ne" }, function () {
              myDebugActive = getState(DEBUGROOT + DEBUGNAME).val;
              if(myDebugActive) {
                log("Debug MSGs aktiviert: " + DEBUGNAME, 'warn');
              } else{
                log("Debug MSGs deaktiviert: " + DEBUGNAME, 'warn');
              }
            });
            myDebugActive = getState(DEBUGROOT + DEBUGNAME).val;
            myDebugInit = true;
          } else {
            // Es wurde kein DEBUGNAME angegeben
            log("Use var DEBUGNAME for Debug Messages! See globalDebug.js", 'warn');
          }
        }
        if(myDebugActive) log('' + "MYDEBUG:" + debugtext + '');
      }
      // Im zu steuernden Script, muss der Scriptname fürs Debuggen angegeben sein
      // DEBUGNAME = "Testprogramm";
      // myDebug("Dies ist ein Test");
      
      
      1 Reply Last reply Reply Quote 0
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      936
      Online

      31.8k
      Users

      80.0k
      Topics

      1.3m
      Posts

      1
      1
      358
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2023
      logo