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. Variable "flackert" zw. true und false

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    1
    1
    8

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.2k

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

Variable "flackert" zw. true und false

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
8 Beiträge 2 Kommentatoren 721 Aufrufe 1 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.
  • G Offline
    G Offline
    gender
    schrieb am zuletzt editiert von
    #1

    Hallo liebes Forum,

    ich habe eine Instar-Kamera, die per MQTT eine Nachricht an IoBroker sendet, sobald eine Bewegung erkannt wird.

    Im einem Skipt lasse ich bei Änderung des MQTT-Objekts eine Variable auf "true" (Bewegung erkannt) bzw. "false" setzen (sobald nach 10 Sekunden keine Bewegung mehr erkannt wurde).

    Die Boolean-Variable steuern dabei eine VIS, die dann das Kamerabild anzeigt.

    Das Skript ist folgendes:

    var timer = null;
    setState("0_userdata.0.vis.showHaustuerCam2", false);  
    on({id: "mqtt.1.instar.***.status.alarm.triggered", change: 'any'}, function (obj) { 
            console.log("HaustürCam-Event-Trigger");
           
            if(!getState("0_userdata.0.vis.showHaustuerCam2").val){
                console.log("showHaustuerCam auf true");
                setState("0_userdata.0.vis.showHaustuerCam2", true); 
            }
            
            if(timer){
                console.log("Reset Timer");
                clearTimeout(timer);
            }
    
            timer = setTimeout(function() {
                                timer = null; // Timer abgelaufen, jetzt löschen
                                setState("0_userdata.0.vis.showHaustuerCam2", false);   
                                console.log("showHaustuerCam durch Timer auf false");
            }, 10000);
    
         
    });
    

    Bis vor kurzem hat alles bestimmt mehr als ein halbes Jahr wie gewünscht funktioniert.
    Seit kurzem (ich habe eigentliche keine Updates gemacht und das System nicht verändert) ist es jedoch so, dass die Boolean-Variable "showHaustuerCam2" endlos lange flackert, sobald sich jemand länger vor der Kamera bewegt.

    Die Kamera sendet bei jeder Bewegung eine Nachricht, aber das Skript ist ja so programmiert, dass der Timer, der die Variable auf true setzt, immer wieder resettet wird.

    Aus irgendeinem Grund funktioniert dies aber nicht (mehr).
    Es wird dann stundenlang die Variable "showHaustuerCam2" zwischen true und false hin und her gesetzt, die Variable flackert also. Das hin und her setzen passiert dabei jede Sekunde. Es ist auf jeden Fall nicht das MQTT-Objekt, dass sich dann noch verändert (wie man am LOG gut sehen kann).
    Ich habe überhaupt keine Erklärung, warum dies nun plötzlich so ist. Zunächst dachte ich, das vielleicht mein gesamtes System (ioBroker läuft auf einem NAS) überlastet ist und daher das "True-Setzen" des Timers stundenlang "nachgeholt" wird und das Löschen des Timers nicht funktioniert. Aber ein Neustart des Systems etc. hat zu keiner Verbesserung geführt.

    Interessant ist auch, dass im LOG nichts von dem "Flackern" der Variable zu sehen ist:

    2020-11-18 12:03:33.442  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
    2020-11-18 12:03:33.443  - info: javascript.0 (165) script.js.common.Haustuerkamera: showHaustuerCam auf true
    2020-11-18 12:03:34.474  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
    2020-11-18 12:03:34.474  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
    2020-11-18 12:03:35.488  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
    2020-11-18 12:03:35.488  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
    2020-11-18 12:03:36.505  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
    2020-11-18 12:03:36.506  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
    2020-11-18 12:03:37.526  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
    2020-11-18 12:03:37.527  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
    2020-11-18 12:03:38.560  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
    2020-11-18 12:03:38.560  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
    2020-11-18 12:03:48.561  - info: javascript.0 (165) script.js.common.Haustuerkamera: showHaustuerCam durch Timer auf false
    

    Wie man im Log sehen kann, funktioniert eigentlich alles wie gewünscht:
    Sobald die Kamera nichts mehr triggert, wird die Variable auf False gesetzt.

    Ich habe außerdem das Ändern der Variable einmal mit flot getracket.
    Auch da kann man schön sehen, dass der Wert flackert.

    fd319ed6-ad52-477a-bc5e-1098a68855e3-grafik.png

    Ich habe leider überhaupt keine Idee, warum das alles so ist, vor allem weil es bis vor zwei bis drei Wochen noch alles problemlos funktioniert hat.

    Vielleicht hat jemand ja eine Idee????

    paul53P 1 Antwort Letzte Antwort
    0
    • G gender

      Hallo liebes Forum,

      ich habe eine Instar-Kamera, die per MQTT eine Nachricht an IoBroker sendet, sobald eine Bewegung erkannt wird.

      Im einem Skipt lasse ich bei Änderung des MQTT-Objekts eine Variable auf "true" (Bewegung erkannt) bzw. "false" setzen (sobald nach 10 Sekunden keine Bewegung mehr erkannt wurde).

      Die Boolean-Variable steuern dabei eine VIS, die dann das Kamerabild anzeigt.

      Das Skript ist folgendes:

      var timer = null;
      setState("0_userdata.0.vis.showHaustuerCam2", false);  
      on({id: "mqtt.1.instar.***.status.alarm.triggered", change: 'any'}, function (obj) { 
              console.log("HaustürCam-Event-Trigger");
             
              if(!getState("0_userdata.0.vis.showHaustuerCam2").val){
                  console.log("showHaustuerCam auf true");
                  setState("0_userdata.0.vis.showHaustuerCam2", true); 
              }
              
              if(timer){
                  console.log("Reset Timer");
                  clearTimeout(timer);
              }
      
              timer = setTimeout(function() {
                                  timer = null; // Timer abgelaufen, jetzt löschen
                                  setState("0_userdata.0.vis.showHaustuerCam2", false);   
                                  console.log("showHaustuerCam durch Timer auf false");
              }, 10000);
      
           
      });
      

      Bis vor kurzem hat alles bestimmt mehr als ein halbes Jahr wie gewünscht funktioniert.
      Seit kurzem (ich habe eigentliche keine Updates gemacht und das System nicht verändert) ist es jedoch so, dass die Boolean-Variable "showHaustuerCam2" endlos lange flackert, sobald sich jemand länger vor der Kamera bewegt.

      Die Kamera sendet bei jeder Bewegung eine Nachricht, aber das Skript ist ja so programmiert, dass der Timer, der die Variable auf true setzt, immer wieder resettet wird.

      Aus irgendeinem Grund funktioniert dies aber nicht (mehr).
      Es wird dann stundenlang die Variable "showHaustuerCam2" zwischen true und false hin und her gesetzt, die Variable flackert also. Das hin und her setzen passiert dabei jede Sekunde. Es ist auf jeden Fall nicht das MQTT-Objekt, dass sich dann noch verändert (wie man am LOG gut sehen kann).
      Ich habe überhaupt keine Erklärung, warum dies nun plötzlich so ist. Zunächst dachte ich, das vielleicht mein gesamtes System (ioBroker läuft auf einem NAS) überlastet ist und daher das "True-Setzen" des Timers stundenlang "nachgeholt" wird und das Löschen des Timers nicht funktioniert. Aber ein Neustart des Systems etc. hat zu keiner Verbesserung geführt.

      Interessant ist auch, dass im LOG nichts von dem "Flackern" der Variable zu sehen ist:

      2020-11-18 12:03:33.442  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
      2020-11-18 12:03:33.443  - info: javascript.0 (165) script.js.common.Haustuerkamera: showHaustuerCam auf true
      2020-11-18 12:03:34.474  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
      2020-11-18 12:03:34.474  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
      2020-11-18 12:03:35.488  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
      2020-11-18 12:03:35.488  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
      2020-11-18 12:03:36.505  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
      2020-11-18 12:03:36.506  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
      2020-11-18 12:03:37.526  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
      2020-11-18 12:03:37.527  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
      2020-11-18 12:03:38.560  - info: javascript.0 (165) script.js.common.Haustuerkamera: HaustürCam-Event-Trigger
      2020-11-18 12:03:38.560  - info: javascript.0 (165) script.js.common.Haustuerkamera: Reset Timer
      2020-11-18 12:03:48.561  - info: javascript.0 (165) script.js.common.Haustuerkamera: showHaustuerCam durch Timer auf false
      

      Wie man im Log sehen kann, funktioniert eigentlich alles wie gewünscht:
      Sobald die Kamera nichts mehr triggert, wird die Variable auf False gesetzt.

      Ich habe außerdem das Ändern der Variable einmal mit flot getracket.
      Auch da kann man schön sehen, dass der Wert flackert.

      fd319ed6-ad52-477a-bc5e-1098a68855e3-grafik.png

      Ich habe leider überhaupt keine Idee, warum das alles so ist, vor allem weil es bis vor zwei bis drei Wochen noch alles problemlos funktioniert hat.

      Vielleicht hat jemand ja eine Idee????

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @gender sagte:

      on({id: "mqtt.1.instar.***.status.alarm.triggered", change: 'any'}, function (obj) {

      Eine ID darf keine Sterne * enthalten.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      G 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @gender sagte:

        on({id: "mqtt.1.instar.***.status.alarm.triggered", change: 'any'}, function (obj) {

        Eine ID darf keine Sterne * enthalten.

        G Offline
        G Offline
        gender
        schrieb am zuletzt editiert von
        #3

        @paul53
        Die Sterne stehen da eigentlich nicht. Das steht sonst die kryptische Referenz zur Kamera.

        paul53P 1 Antwort Letzte Antwort
        0
        • G gender

          @paul53
          Die Sterne stehen da eigentlich nicht. Das steht sonst die kryptische Referenz zur Kamera.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @gender sagte:

          Das steht sonst die kryptische Referenz zur Kamera.

          Dann ändere mal den Trigger auf: change: 'gt'

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          G 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @gender sagte:

            Das steht sonst die kryptische Referenz zur Kamera.

            Dann ändere mal den Trigger auf: change: 'gt'

            G Offline
            G Offline
            gender
            schrieb am zuletzt editiert von gender
            #5

            @paul53

            Die Instar sendet als Trigger verschiedene Zahlen, die einzelnen Bildbereichen zugeordnet sind (z.B die Zahlen 1 bis 4). Es kann also sein, dass sich die Zahl nicht ändert (da im gleichen Bildbereich getriggert wurde) oder sie z.B. größer oder kleiner wird.

            Daher wird "gt" nichts bringen. Aber mit "ne" kann ich es mal ausprobieren... (wobei ich mir ein darauf unterschiedliches Verhalten auch nicht erklären könnte).

            Wie gesagt: Grundsätzlich scheint es auch kein Problem des Triggers zu sein, denn die Kamera triggert schon lange nicht mehr während die Variabe "showHaustuerCam2" immernoch zwischen true und false hin und her springt.
            Einfach sehr seltsam...

            paul53P 1 Antwort Letzte Antwort
            0
            • G gender

              @paul53

              Die Instar sendet als Trigger verschiedene Zahlen, die einzelnen Bildbereichen zugeordnet sind (z.B die Zahlen 1 bis 4). Es kann also sein, dass sich die Zahl nicht ändert (da im gleichen Bildbereich getriggert wurde) oder sie z.B. größer oder kleiner wird.

              Daher wird "gt" nichts bringen. Aber mit "ne" kann ich es mal ausprobieren... (wobei ich mir ein darauf unterschiedliches Verhalten auch nicht erklären könnte).

              Wie gesagt: Grundsätzlich scheint es auch kein Problem des Triggers zu sein, denn die Kamera triggert schon lange nicht mehr während die Variabe "showHaustuerCam2" immernoch zwischen true und false hin und her springt.
              Einfach sehr seltsam...

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @gender sagte:

              Grundsätzlich scheint es auch kein Problem des Triggers zu sein, denn die Kamera triggert schon lange nicht mehr während die Variabe "showHaustuerCam2" immernoch zwischen true und false hin und her springt.

              Ohne Trigger würden nicht jede Sekunde die Log-Ausgaben erzeugt.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              G 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @gender sagte:

                Grundsätzlich scheint es auch kein Problem des Triggers zu sein, denn die Kamera triggert schon lange nicht mehr während die Variabe "showHaustuerCam2" immernoch zwischen true und false hin und her springt.

                Ohne Trigger würden nicht jede Sekunde die Log-Ausgaben erzeugt.

                G Offline
                G Offline
                gender
                schrieb am zuletzt editiert von
                #7

                @paul53
                Das stimmt, aber man sieht ja im Log, dass das Triggern um 12:03:38 aufhört und dann 10 Sekunden später (gemäß Script) der Timer ausgelaufen ist und die Variable um 12:03:48 auf "false" gesetzt wird.

                Das verrückt ist ja nun, dass die Variable ihren Wert trotzdem (ohne dass sie vom Script getriggert wird) noch Ewigkeiten ihren Wert zw. True und False ändert. Das kann man gut in dem Flot-Ausschnitt sehen, den ich gepostet habe. Der Ausschnitt geht nur bis 12:16:00 aber der Wert ändert sich dann noch ewig (in dem Beispiel bis bestimmt 13:30 Uhr).

                Verrückt, oder?!

                G 1 Antwort Letzte Antwort
                0
                • G gender

                  @paul53
                  Das stimmt, aber man sieht ja im Log, dass das Triggern um 12:03:38 aufhört und dann 10 Sekunden später (gemäß Script) der Timer ausgelaufen ist und die Variable um 12:03:48 auf "false" gesetzt wird.

                  Das verrückt ist ja nun, dass die Variable ihren Wert trotzdem (ohne dass sie vom Script getriggert wird) noch Ewigkeiten ihren Wert zw. True und False ändert. Das kann man gut in dem Flot-Ausschnitt sehen, den ich gepostet habe. Der Ausschnitt geht nur bis 12:16:00 aber der Wert ändert sich dann noch ewig (in dem Beispiel bis bestimmt 13:30 Uhr).

                  Verrückt, oder?!

                  G Offline
                  G Offline
                  gender
                  schrieb am zuletzt editiert von
                  #8

                  @gender

                  Möchte dieses Thema hier nochmal hochziehen, da ich immer noch keine Lösung gefunden habe.

                  Ich habe inzwischen zumindest den Workarround entdeckt, dass alles wieder funktioniert, wenn ich das "materialdesign - DialogView"-Widget, dass ja angezeigt wird, sobald die Variable auf true geht, lösche und wieder neu anlege (bzw. eine Kopie erzeuge und das "flackernde" Dialog-Widget lösche. Dann hört das oben beschriebene Verhalten (das Flackern der Variablen) auf.
                  Irgendwann (nach einem Tag, oder auch mal nach einer Woche) taucht es dann wieder auf.

                  Vielleicht kannst du @Scrounger dir das irgendwie erklären, welches Zusammenhang es mit dem Dialog-Widget geben könnte, daher habe ich dich hier einmal verlinkt.
                  Danke.

                  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

                  582

                  Online

                  32.7k

                  Benutzer

                  82.4k

                  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