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. Blockly
  5. [gelöst] Verzögerung funktioniert nicht richtig

NEWS

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

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

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

[gelöst] Verzögerung funktioniert nicht richtig

Geplant Angeheftet Gesperrt Verschoben Blockly
13 Beiträge 2 Kommentatoren 489 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.
  • M Offline
    M Offline
    Manuel001
    schrieb am zuletzt editiert von Manuel001
    #1

    Irgendwie habe ich da ein Problem.
    Überschuss_Power sind Modbusregister, welche alle 30 Sekunden aktualisiert werden.
    Der 1. Block: Hier kann ich noch nicht sagen, ob er die gleiche Fehlfunktion wie Block 2 hat.
    Der 2. Block:
    Eigentlich sollte GPIO24 auf low geschaltet werden, wenn länger als 3 Minuten Überschuss_Power kleiner als 10 ist.
    2020-10-17 13_27_50-javascript - ioBroker.jpg
    Jetzt habe ich aber folgenden Verhalten festgestellt:
    Sobald Überschuss_Power einmal unter 10 ist, schaltet GPIO24 nach 3 Minuten auf low, auch wenn alle anderen Werte dazwischen größer als 10 sind.
    Was habe ich da falsch gemacht?

    Macht es eigentlich einen Unterschied, ob ich die 2 Blöcke zusammenhänge? (kein weißer Bereich mehr dazwischen)

    paul53P 1 Antwort Letzte Antwort
    0
    • M Manuel001

      Irgendwie habe ich da ein Problem.
      Überschuss_Power sind Modbusregister, welche alle 30 Sekunden aktualisiert werden.
      Der 1. Block: Hier kann ich noch nicht sagen, ob er die gleiche Fehlfunktion wie Block 2 hat.
      Der 2. Block:
      Eigentlich sollte GPIO24 auf low geschaltet werden, wenn länger als 3 Minuten Überschuss_Power kleiner als 10 ist.
      2020-10-17 13_27_50-javascript - ioBroker.jpg
      Jetzt habe ich aber folgenden Verhalten festgestellt:
      Sobald Überschuss_Power einmal unter 10 ist, schaltet GPIO24 nach 3 Minuten auf low, auch wenn alle anderen Werte dazwischen größer als 10 sind.
      Was habe ich da falsch gemacht?

      Macht es eigentlich einen Unterschied, ob ich die 2 Blöcke zusammenhänge? (kein weißer Bereich mehr dazwischen)

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

      @Manuel001 sagte in Verzögerung funktioniert nicht richtig:

      Was habe ich da falsch gemacht?

      Es wird nicht verhindert, dass bei Aktualisierung mit Werten unter 10 weitere Timer gestartet werden. Versuche es mal so:

      Blockly_temp.JPG

      Wert und vorheriger Wert findet man unter "Trigger".

      @Manuel001 sagte in Verzögerung funktioniert nicht richtig:

      Macht es eigentlich einen Unterschied, ob ich die 2 Blöcke zusammenhänge? (kein weißer Bereich mehr dazwischen)

      Nein.

      Keine gleichen Trigger doppelt verwenden (Ressourcen-Verschwendung). Alle Abfragen sollten innerhalb eines Triggers erfolgen.

      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

      M 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @Manuel001 sagte in Verzögerung funktioniert nicht richtig:

        Was habe ich da falsch gemacht?

        Es wird nicht verhindert, dass bei Aktualisierung mit Werten unter 10 weitere Timer gestartet werden. Versuche es mal so:

        Blockly_temp.JPG

        Wert und vorheriger Wert findet man unter "Trigger".

        @Manuel001 sagte in Verzögerung funktioniert nicht richtig:

        Macht es eigentlich einen Unterschied, ob ich die 2 Blöcke zusammenhänge? (kein weißer Bereich mehr dazwischen)

        Nein.

        Keine gleichen Trigger doppelt verwenden (Ressourcen-Verschwendung). Alle Abfragen sollten innerhalb eines Triggers erfolgen.

        M Offline
        M Offline
        Manuel001
        schrieb am zuletzt editiert von
        #3

        @paul53 Danke für die schnelle Rückmeldung.
        Aber ist das wirklich so? Es ist ja nicht das Problem, dass der Timer neu oder zusätzlich gestartet wird, sondern nicht gestoppt wird.
        Oder habe ich es falsch verstanden?

        paul53P 1 Antwort Letzte Antwort
        0
        • M Manuel001

          @paul53 Danke für die schnelle Rückmeldung.
          Aber ist das wirklich so? Es ist ja nicht das Problem, dass der Timer neu oder zusätzlich gestartet wird, sondern nicht gestoppt wird.
          Oder habe ich es falsch verstanden?

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

          @Manuel001 sagte:

          Es ist ja nicht das Problem, dass der Timer neu oder zusätzlich gestartet wird, sondern nicht gestoppt wird.

          Gestoppt wird nur bei Werten >= 10. Bei Werten unter 10 (z.B. 9, 8, 7) wird bei jedem Trigger ein neuer Timer gestartet. Es kann aber nur 1 Timer gestoppt werden, die anderen laufen weiter.

          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

          M 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @Manuel001 sagte:

            Es ist ja nicht das Problem, dass der Timer neu oder zusätzlich gestartet wird, sondern nicht gestoppt wird.

            Gestoppt wird nur bei Werten >= 10. Bei Werten unter 10 (z.B. 9, 8, 7) wird bei jedem Trigger ein neuer Timer gestartet. Es kann aber nur 1 Timer gestoppt werden, die anderen laufen weiter.

            M Offline
            M Offline
            Manuel001
            schrieb am zuletzt editiert von
            #5

            @paul53 Es wird also praktisch mein Timer "timeout4" nicht neu gestartet sondern weitere Timer unter dem gleichen Namen? Gibt es da keine elegantere Möglichkeit, dass man nur einen Timer hat den man dann entweder startet, stoppt oder neustartet?

            paul53P 1 Antwort Letzte Antwort
            0
            • M Manuel001

              @paul53 Es wird also praktisch mein Timer "timeout4" nicht neu gestartet sondern weitere Timer unter dem gleichen Namen? Gibt es da keine elegantere Möglichkeit, dass man nur einen Timer hat den man dann entweder startet, stoppt oder neustartet?

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

              @Manuel001 sagte:

              weitere Timer unter dem gleichen Namen?

              Ja.

              @Manuel001 sagte in Verzögerung funktioniert nicht richtig:

              Gibt es da keine elegantere Möglichkeit,

              Man kann mit jedem Trigger den Timer stoppen, was aber dazu führen kann, dass die Zeit nie abläuft, wenn innerhalb der Verzögerungszeit immer wieder getriggert wird.

              Variante mit der Timer-Variablen als Sperr-Variable:

              Blockly_temp.JPG

              Hinweis: Erst eine Dummy-Variable erstellen und diese zuweisen. Anschließend in die Javascript-Ansicht und wieder zurück wechseln. Nun die Timer-Variable selektieren.

              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

              M 1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @Manuel001 sagte:

                weitere Timer unter dem gleichen Namen?

                Ja.

                @Manuel001 sagte in Verzögerung funktioniert nicht richtig:

                Gibt es da keine elegantere Möglichkeit,

                Man kann mit jedem Trigger den Timer stoppen, was aber dazu führen kann, dass die Zeit nie abläuft, wenn innerhalb der Verzögerungszeit immer wieder getriggert wird.

                Variante mit der Timer-Variablen als Sperr-Variable:

                Blockly_temp.JPG

                Hinweis: Erst eine Dummy-Variable erstellen und diese zuweisen. Anschließend in die Javascript-Ansicht und wieder zurück wechseln. Nun die Timer-Variable selektieren.

                M Offline
                M Offline
                Manuel001
                schrieb am zuletzt editiert von
                #7

                @paul53 Danke für die Unterstützung. Soweit verstehe ich es jetzt. Aber noch für Dummys: Variable habe ich erstellt, aber wie zuweisen?

                paul53P 1 Antwort Letzte Antwort
                0
                • M Manuel001

                  @paul53 Danke für die Unterstützung. Soweit verstehe ich es jetzt. Aber noch für Dummys: Variable habe ich erstellt, aber wie zuweisen?

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

                  @Manuel001 sagte:

                  Variable habe ich erstellt, aber wie zuweisen?

                  Blockly_temp.JPG

                  Nach Wechsel in JS-Ansicht und zurück:

                  Blockly_temp.JPG

                  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

                  M 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @Manuel001 sagte:

                    Variable habe ich erstellt, aber wie zuweisen?

                    Blockly_temp.JPG

                    Nach Wechsel in JS-Ansicht und zurück:

                    Blockly_temp.JPG

                    M Offline
                    M Offline
                    Manuel001
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 Danke.
                    Das müsste doch jetzt so funktionieren?:
                    2020-10-17 21_33_53-javascript - ioBroker.jpg
                    Aber irgendwie geht das noch immer nicht.

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • M Manuel001

                      @paul53 Danke.
                      Das müsste doch jetzt so funktionieren?:
                      2020-10-17 21_33_53-javascript - ioBroker.jpg
                      Aber irgendwie geht das noch immer nicht.

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

                      @Manuel001 sagte:

                      Das müsste doch jetzt so funktionieren?:

                      Ja, sollte: Nach 3 Minuten >= 400 schalten auf true und nach 3 Minuten < 10 schalten auf false.
                      Poste mal den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.

                      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

                      M 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @Manuel001 sagte:

                        Das müsste doch jetzt so funktionieren?:

                        Ja, sollte: Nach 3 Minuten >= 400 schalten auf true und nach 3 Minuten < 10 schalten auf false.
                        Poste mal den erzeugten Javascript-Code ohne die letzte Zeile in Code tags.

                        M Offline
                        M Offline
                        Manuel001
                        schrieb am zuletzt editiert von
                        #11

                        @paul53

                        code_text
                        var timeout3, timeout_Ladegeraet_ein, timeout4, timeout_Ladegeraet_aus;
                        
                        
                        on({id: 'modbus.1.holdingRegisters.1002_Überschuss', change: "any"}, function (obj) {
                          var value = obj.state.val;
                          var oldValue = obj.oldState.val;
                          if (getState("modbus.1.holdingRegisters.1002_Überschuss").val < 400) {
                            (function () {if (timeout_Ladegeraet_ein) {clearTimeout(timeout_Ladegeraet_ein); timeout_Ladegeraet_ein = null;}})();
                          } else if (!timeout_Ladegeraet_ein) {
                            timeout_Ladegeraet_ein = setTimeout(function () {
                              setState("rpi2.1.gpio.24.state"/*GPIO 24*/, true);
                            }, 60000);
                          }
                          if (getState("modbus.1.holdingRegisters.1002_Überschuss").val >= 10) {
                            (function () {if (timeout_Ladegeraet_aus) {clearTimeout(timeout_Ladegeraet_aus); timeout_Ladegeraet_aus = null;}})();
                          } else if (!timeout_Ladegeraet_aus) {
                            timeout_Ladegeraet_aus = setTimeout(function () {
                              setState("rpi2.1.gpio.24.state"/*GPIO 24*/, false);
                            }, 60000);
                          }
                        });
                        
                        
                        paul53P 1 Antwort Letzte Antwort
                        0
                        • M Manuel001

                          @paul53

                          code_text
                          var timeout3, timeout_Ladegeraet_ein, timeout4, timeout_Ladegeraet_aus;
                          
                          
                          on({id: 'modbus.1.holdingRegisters.1002_Überschuss', change: "any"}, function (obj) {
                            var value = obj.state.val;
                            var oldValue = obj.oldState.val;
                            if (getState("modbus.1.holdingRegisters.1002_Überschuss").val < 400) {
                              (function () {if (timeout_Ladegeraet_ein) {clearTimeout(timeout_Ladegeraet_ein); timeout_Ladegeraet_ein = null;}})();
                            } else if (!timeout_Ladegeraet_ein) {
                              timeout_Ladegeraet_ein = setTimeout(function () {
                                setState("rpi2.1.gpio.24.state"/*GPIO 24*/, true);
                              }, 60000);
                            }
                            if (getState("modbus.1.holdingRegisters.1002_Überschuss").val >= 10) {
                              (function () {if (timeout_Ladegeraet_aus) {clearTimeout(timeout_Ladegeraet_aus); timeout_Ladegeraet_aus = null;}})();
                            } else if (!timeout_Ladegeraet_aus) {
                              timeout_Ladegeraet_aus = setTimeout(function () {
                                setState("rpi2.1.gpio.24.state"/*GPIO 24*/, false);
                              }, 60000);
                            }
                          });
                          
                          
                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #12

                          @Manuel001
                          Ist das der vollständige Code ? Es sind die Variablen timeout3 und timeout4 deklariert, die nirgends verwendet werden ?

                          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

                          M 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @Manuel001
                            Ist das der vollständige Code ? Es sind die Variablen timeout3 und timeout4 deklariert, die nirgends verwendet werden ?

                            M Offline
                            M Offline
                            Manuel001
                            schrieb am zuletzt editiert von
                            #13

                            @paul53
                            Ja ist der vollständige code. timeout3 und 4 waren nur in einem deaktiviertem Block in Verwendung. Ich habe jetzt diesen Block gelöscht. Dann sind diese Variablen verschwunden und jetzt funktioniert es. Danke!
                            Darf das sein, dass ein deaktivierter Block diese Auswirkung hat?

                            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.5k

                            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