Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Kleines Debug Script gesteuert über State

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    181

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

Kleines Debug Script gesteuert über State

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
1 Beiträge 1 Kommentatoren 391 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • C Offline
    C Offline
    coffee-junk
    schrieb am zuletzt editiert von
    #1

    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");
    
    

    Jürgen

    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    815

    Online

    32.5k

    Benutzer

    81.7k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe