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 Wert schreiben mit Verzögerung

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Blockly Wert schreiben mit Verzögerung

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blockly
6 Beiträge 3 Kommentatoren 460 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.
  • F Offline
    F Offline
    Feinfinger
    schrieb am zuletzt editiert von Feinfinger
    #1

    Hallo zusammen,

    Ich habe mir eine Regensensor gebaut, und möchte nun die Werte in einen Datenpunkt schreiben.

    Soweit funktioniert der Sensor zuverlässig und meldet mir folgenden Status:

    Wenn es regnet, liegt die Spannung bei 0 Volt, wenn er trocken ist, liefert er 10,6 Volt.

    Mein Datenpunkt lautet "rain" und soll entweder "True" oder "false" sein.

    Das ist mein dazugehöriges Blockly.

    var timeout;
    
    
    on({ id: 'shelly.0.SHUNI-1#C8C9A31B3CCD#1.ADC.Power' /* Power Measurement */, change: 'ne' }, async (obj) => {
      let value = obj.state.val;
      let oldValue = obj.oldState.val;
      if ((obj.state ? obj.state.val : '') < 5) {
        (() => { if (timeout) { clearTimeout(timeout); timeout = null; }})();
        setState('0_userdata.0.Regensensor.rain' /* rain */, true, true);
      } else {
        timeout = setTimeout(async () => {
          timeout = null;
          setState('0_userdata.0.Regensensor.rain' /* rain */, false, true);
        }, 1800000);
      }
    });
    

    301f0a8a-9b07-4c00-9d20-31ee84e165a6-grafik.png

    Die Verzögerung soll dazu dienen, das er nicht direkt wieder auf "false" springt, wenn der Regen mal für ein paar Minuten unterbrochen ist.

    Das Problem ist, das wenn der Sensor abgetrocknet ist und innerhalb der 30 Min neuer Regen beginnt, meldet das Blockly trotzdem "false" nach 30 Minuten.

    Wo liegt mein Fehler?

    iob als LXC im Proxmox
    Node.js: v22.19.0
    NPM: 10.9.3
    js-controller 7.0.7

    N CodierknechtC 2 Antworten Letzte Antwort
    0
    • F Feinfinger

      Hallo zusammen,

      Ich habe mir eine Regensensor gebaut, und möchte nun die Werte in einen Datenpunkt schreiben.

      Soweit funktioniert der Sensor zuverlässig und meldet mir folgenden Status:

      Wenn es regnet, liegt die Spannung bei 0 Volt, wenn er trocken ist, liefert er 10,6 Volt.

      Mein Datenpunkt lautet "rain" und soll entweder "True" oder "false" sein.

      Das ist mein dazugehöriges Blockly.

      var timeout;
      
      
      on({ id: 'shelly.0.SHUNI-1#C8C9A31B3CCD#1.ADC.Power' /* Power Measurement */, change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if ((obj.state ? obj.state.val : '') < 5) {
          (() => { if (timeout) { clearTimeout(timeout); timeout = null; }})();
          setState('0_userdata.0.Regensensor.rain' /* rain */, true, true);
        } else {
          timeout = setTimeout(async () => {
            timeout = null;
            setState('0_userdata.0.Regensensor.rain' /* rain */, false, true);
          }, 1800000);
        }
      });
      

      301f0a8a-9b07-4c00-9d20-31ee84e165a6-grafik.png

      Die Verzögerung soll dazu dienen, das er nicht direkt wieder auf "false" springt, wenn der Regen mal für ein paar Minuten unterbrochen ist.

      Das Problem ist, das wenn der Sensor abgetrocknet ist und innerhalb der 30 Min neuer Regen beginnt, meldet das Blockly trotzdem "false" nach 30 Minuten.

      Wo liegt mein Fehler?

      N Offline
      N Offline
      Nordischerjung
      schrieb am zuletzt editiert von
      #2

      @feinfinger Moin,

      bau doch mal ein Debug mit dem "Wert" ein, dann siehst du wann und mit welchem Wert er schaltet
      zB
      c6d53c2e-3440-420d-9d42-b546d837f6fb-image.png

      Gruß Nordischerjung

      sonnige Grüße von der Ostsee

      1 Antwort Letzte Antwort
      0
      • F Feinfinger

        Hallo zusammen,

        Ich habe mir eine Regensensor gebaut, und möchte nun die Werte in einen Datenpunkt schreiben.

        Soweit funktioniert der Sensor zuverlässig und meldet mir folgenden Status:

        Wenn es regnet, liegt die Spannung bei 0 Volt, wenn er trocken ist, liefert er 10,6 Volt.

        Mein Datenpunkt lautet "rain" und soll entweder "True" oder "false" sein.

        Das ist mein dazugehöriges Blockly.

        var timeout;
        
        
        on({ id: 'shelly.0.SHUNI-1#C8C9A31B3CCD#1.ADC.Power' /* Power Measurement */, change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if ((obj.state ? obj.state.val : '') < 5) {
            (() => { if (timeout) { clearTimeout(timeout); timeout = null; }})();
            setState('0_userdata.0.Regensensor.rain' /* rain */, true, true);
          } else {
            timeout = setTimeout(async () => {
              timeout = null;
              setState('0_userdata.0.Regensensor.rain' /* rain */, false, true);
            }, 1800000);
          }
        });
        

        301f0a8a-9b07-4c00-9d20-31ee84e165a6-grafik.png

        Die Verzögerung soll dazu dienen, das er nicht direkt wieder auf "false" springt, wenn der Regen mal für ein paar Minuten unterbrochen ist.

        Das Problem ist, das wenn der Sensor abgetrocknet ist und innerhalb der 30 Min neuer Regen beginnt, meldet das Blockly trotzdem "false" nach 30 Minuten.

        Wo liegt mein Fehler?

        CodierknechtC Online
        CodierknechtC Online
        Codierknecht
        Developer Most Active
        schrieb am zuletzt editiert von
        #3

        @feinfinger sagte in Blockly Wert schreiben mit Verzögerung:

        Wo liegt mein Fehler?

        Du stoppst den Timeout nur 1x, wenn der Wert unter 5V liegt.
        Pendelt er um Werte >= 5V, startest Du mehrere Timer. Einer davon feuert dann und liefert die Meldung.

        Du darfst den Timeout nur 1x starten. Nämlich dann, wenn der Wert das erste Mal von < 5 auf >= 5 wechselt.

        34620822-8179-4d59-881b-e8b75907179c-image.png

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        F 1 Antwort Letzte Antwort
        0
        • CodierknechtC Codierknecht

          @feinfinger sagte in Blockly Wert schreiben mit Verzögerung:

          Wo liegt mein Fehler?

          Du stoppst den Timeout nur 1x, wenn der Wert unter 5V liegt.
          Pendelt er um Werte >= 5V, startest Du mehrere Timer. Einer davon feuert dann und liefert die Meldung.

          Du darfst den Timeout nur 1x starten. Nämlich dann, wenn der Wert das erste Mal von < 5 auf >= 5 wechselt.

          34620822-8179-4d59-881b-e8b75907179c-image.png

          F Offline
          F Offline
          Feinfinger
          schrieb am zuletzt editiert von
          #4

          @codierknecht

          Also so?

          4c73c77b-ca6b-4979-a773-4eca26996088-grafik.png

          iob als LXC im Proxmox
          Node.js: v22.19.0
          NPM: 10.9.3
          js-controller 7.0.7

          CodierknechtC 1 Antwort Letzte Antwort
          0
          • F Feinfinger

            @codierknecht

            Also so?

            4c73c77b-ca6b-4979-a773-4eca26996088-grafik.png

            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @feinfinger sagte in Blockly Wert schreiben mit Verzögerung:

            Also so?

            Nein. Schau Dir mein Beispiel an.
            Du stoppst den Timeout jetzt bei jeder Änderung. Die Wahrscheinlichkeit, dass der Wert bei >= 5 über eine halbe Stunde konstant bleibt, halte ich für ziemlich gering.
            Du musst mit "vorheriger Wert" arbeiten und darfst ihn nur stoppen, wenn der (aktuelle) Wert unter 5V sinkt.

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            F 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @feinfinger sagte in Blockly Wert schreiben mit Verzögerung:

              Also so?

              Nein. Schau Dir mein Beispiel an.
              Du stoppst den Timeout jetzt bei jeder Änderung. Die Wahrscheinlichkeit, dass der Wert bei >= 5 über eine halbe Stunde konstant bleibt, halte ich für ziemlich gering.
              Du musst mit "vorheriger Wert" arbeiten und darfst ihn nur stoppen, wenn der (aktuelle) Wert unter 5V sinkt.

              F Offline
              F Offline
              Feinfinger
              schrieb am zuletzt editiert von
              #6

              @codierknecht

              Danke!

              Jetzt hab ich auch die Änderung erkannt :+1:

              iob als LXC im Proxmox
              Node.js: v22.19.0
              NPM: 10.9.3
              js-controller 7.0.7

              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

              736

              Online

              32.6k

              Benutzer

              82.0k

              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