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. JavaScript
  5. Eigenes Logging in Datenpunkt wird manchmal überschreiben

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    619

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    626

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

Eigenes Logging in Datenpunkt wird manchmal überschreiben

Geplant Angeheftet Gesperrt Verschoben JavaScript
javascript
2 Beiträge 2 Kommentatoren 246 Aufrufe 2 Watching
  • Ä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.
  • M Offline
    M Offline
    Manfred-Outlaw
    schrieb am zuletzt editiert von
    #1

    Hallo, ich hab da ein Problem, das ich nicht verstehe. Ich habe mir ein eigenes Logging in einem Datenpunkt aufgebaut (die Idee und das Skript kommt von hier https://www.kreyenborg.koeln/iobroker-eigene-protokoll-funktion-logging-erstellen). Mir ist nun aufgefallen, wenn mehrere Einträge ins Log geschrieben werden und dies zu schnell hintereinander geschied, einfach der vorhergehende Eintrag überschrieben wird. Ich habe dies überprüft, in dem ich eine Abfrage aller HM Geräte per JS gemacht habe und jedes Gerät in das Log geschrieben habe. Mit VIS hab ich mir den Datenpunkt in einer Web Seite angezeigt und dabei gesehen, dass der aktuelle Eintrag immer überschrieben wird. Dann geht z.B. eine Tür auf und es entsteht eine neue Zeile im Log.
    Hier das Skript mit dem Ich die HM Geräte auslese und in das Protokoll schreibe:

    createState('Datenpunkte.CCU.anzahlLOWBAT', 0);  
    createState('Datenpunkte.CCU.textLOWBAT', " ");  
     
    var cacheSelectorLOWBAT  = $('channel[state.id=*.LOWBAT]');
    
    function countLowbat(obj) {
       var anzahlLOWBAT    = 0;
       var textLOWBAT      = [];
    
       cacheSelectorLOWBAT.each(function (id, i) {                         // Schleife für jedes gefundenen Element *.LOWBAT
            var status = getState(id).val;                                  // Zustand *.LOWBAT abfragen (jedes Element)
            if (status === false) {                                  
            var name = getObject(id).common.name;                                   // neu eingefügt
            var devicename = name.substring(0, name.indexOf(":0.LOWBAT"));    // neu eingefügt, LOWBAT aus Bezeichnung entfernen   
            var Geraet = (getObject(id).common.name + ": " + status)
            Protokoll(1, "CCU LowBat", Geraet);                             // Protokoll schreiben
            textLOWBAT.push(devicename);                                   // Zu Array hinzufügen; aktualisiert, vormals obj.common.name
            ++anzahlLOWBAT;
          }                
       }); 
    
       // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
       setState("Datenpunkte.CCU.textLOWBAT",     textLOWBAT.join(',')); // Schreibt die aktuelle Namen der Geräte mit LOWBAT Meldung
       setState("Datenpunkte.CCU.anzahlLOWBAT",   textLOWBAT.length);        // Schreibt die aktuelle Anzahl der Geräte im System
    }
    
    

    Hier ein Auszug aus dem Log:
    a6bf0f1f-7957-4e4a-9d5e-132b301b50ee-grafik.png
    Die in Gelb markierte Zeile wurden über 20 mal überschrieben und der letzte Eintrag ist nun zu sehen.
    Das geschied immer dann, wenn das Logging zu schnell hintereinater kommt. Kurze Pause zwischen den Einträgen und es ist ok. Hat dies was mit dem Datenpunkt zu tun? Ist die Reaktionzeit hier das Problem? Wie kann ich das Überschreiben des letzten Eintrags verhintern.

    LG Manfred

    D 1 Antwort Letzte Antwort
    0
    • M Manfred-Outlaw

      Hallo, ich hab da ein Problem, das ich nicht verstehe. Ich habe mir ein eigenes Logging in einem Datenpunkt aufgebaut (die Idee und das Skript kommt von hier https://www.kreyenborg.koeln/iobroker-eigene-protokoll-funktion-logging-erstellen). Mir ist nun aufgefallen, wenn mehrere Einträge ins Log geschrieben werden und dies zu schnell hintereinander geschied, einfach der vorhergehende Eintrag überschrieben wird. Ich habe dies überprüft, in dem ich eine Abfrage aller HM Geräte per JS gemacht habe und jedes Gerät in das Log geschrieben habe. Mit VIS hab ich mir den Datenpunkt in einer Web Seite angezeigt und dabei gesehen, dass der aktuelle Eintrag immer überschrieben wird. Dann geht z.B. eine Tür auf und es entsteht eine neue Zeile im Log.
      Hier das Skript mit dem Ich die HM Geräte auslese und in das Protokoll schreibe:

      createState('Datenpunkte.CCU.anzahlLOWBAT', 0);  
      createState('Datenpunkte.CCU.textLOWBAT', " ");  
       
      var cacheSelectorLOWBAT  = $('channel[state.id=*.LOWBAT]');
      
      function countLowbat(obj) {
         var anzahlLOWBAT    = 0;
         var textLOWBAT      = [];
      
         cacheSelectorLOWBAT.each(function (id, i) {                         // Schleife für jedes gefundenen Element *.LOWBAT
              var status = getState(id).val;                                  // Zustand *.LOWBAT abfragen (jedes Element)
              if (status === false) {                                  
              var name = getObject(id).common.name;                                   // neu eingefügt
              var devicename = name.substring(0, name.indexOf(":0.LOWBAT"));    // neu eingefügt, LOWBAT aus Bezeichnung entfernen   
              var Geraet = (getObject(id).common.name + ": " + status)
              Protokoll(1, "CCU LowBat", Geraet);                             // Protokoll schreiben
              textLOWBAT.push(devicename);                                   // Zu Array hinzufügen; aktualisiert, vormals obj.common.name
              ++anzahlLOWBAT;
            }                
         }); 
      
         // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
         setState("Datenpunkte.CCU.textLOWBAT",     textLOWBAT.join(',')); // Schreibt die aktuelle Namen der Geräte mit LOWBAT Meldung
         setState("Datenpunkte.CCU.anzahlLOWBAT",   textLOWBAT.length);        // Schreibt die aktuelle Anzahl der Geräte im System
      }
      
      

      Hier ein Auszug aus dem Log:
      a6bf0f1f-7957-4e4a-9d5e-132b301b50ee-grafik.png
      Die in Gelb markierte Zeile wurden über 20 mal überschrieben und der letzte Eintrag ist nun zu sehen.
      Das geschied immer dann, wenn das Logging zu schnell hintereinater kommt. Kurze Pause zwischen den Einträgen und es ist ok. Hat dies was mit dem Datenpunkt zu tun? Ist die Reaktionzeit hier das Problem? Wie kann ich das Überschreiben des letzten Eintrags verhintern.

      LG Manfred

      D Offline
      D Offline
      dodi666
      schrieb am zuletzt editiert von
      #2

      @manfred-outlaw
      Hallo Manfred,
      ich habe genau das gleiche Problem.
      Wenn Trigger in unterschiedlichen Skripten den gleichen Auslöser haben, so wird immer nur eine Meldung im Log erzeugt.
      Da alle meine Skripte in Blockly sind, suche ich auch eine Lösung die ich in Blockly implementieren kann.
      Hast du für dich eine Lösung gefunden?

      Grüße
      Sascha

      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

      876

      Online

      32.6k

      Benutzer

      81.9k

      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