Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Eigenes Logging in Datenpunkt wird manchmal überschreiben

    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

    Eigenes Logging in Datenpunkt wird manchmal überschreiben

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Manfred-Outlaw last edited by

      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 Reply Last reply Reply Quote 0
      • D
        dodi666 @Manfred-Outlaw last edited by

        @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 Reply Last reply Reply Quote 0
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        597
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        javascript
        2
        2
        209
        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