Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zwei-Punkt Regler (Hysterese)

    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

    Zwei-Punkt Regler (Hysterese)

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Trident last edited by

      Hallo zusammen,

      ich habe einen Regensensor von mySensors an ioBroker angeschlossen und überführe den Status per JS in eine Variable "Regen_aktuell".

      Bei einem Test habe ich nun festgestellt, dass der Regler im Übergang ziemlich oft zwischen "kein Regen" und "Regen" wechselt (digitaler Wert). Daher wollte ich nun per JS einen Zwei-Punkt Regler oder Hysterese einsetzten.

      Bin nur ziemlich ratlos wie sowas in JS aussieht.

      Viele Grüße

      Trident

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Die Suche im Forum führt z.B. http://forum.iobroker.de/viewtopic.php?f=21&t=1337&p=11109&sid=235df04601b31c9b65a21ad1988807ba&sid=235df04601b31c9b65a21ad1988807ba#p11109.

        1 Reply Last reply Reply Quote 0
        • P
          pix last edited by

          Hallo,

          ich würde da anders skripten. Ein altes Beispiel aus dem Forum prüft, ob die letzte Sayit Ansage gerade eben oder schon länger her ist, um doppelte Ansagen zu vermeiden. Im Falle des Regensensors passt das, als ja keine Mengenwerte (Regenmenge oder so) gemessen werden, sondern nur die Ausgabe true/false etwas beruhigt werden soll.

          Deshalb mein Vorschlag:

          var idRegensensor = 'xxxxxxxxxxx'; // Objekt Regensensor, das true/false liefert, eintragen
          var updateZeit = 3; // Dauer in s, innerhalb der keine Updates angenommen werden
          
          var lastUpdate   = null;
          on(idRegensensor, function(obj) {
              if (!lastUpdate || ((new Date()).getTime() - lastUpdate) > 1000 * parseInt(updateZeit, 10)) {
                  lastUpdate = (new Date()).getTime();
                  log(obj.state.val); // ersetzen durch neuen Befehl zB setState(Variable für Regensensor, obj.state.val);
              }
          });
          

          Ist keine echte Hysterese, hat aber den gleichen Effekt. Schließlich gibt es keinen Wert zwischen false und true. 😉

          Gruß

          Pix

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            @pix:

            sondern nur die Ausgabe true/false etwas beruhigt werden soll. `
            Dass es sich um einen binären Wert handelt, habe ich überlesen. Darauf kann natürlich keine Hysterese, sondern nur Verzögerung angewendet werden, wie pix beschrieben hat.

            Die Updatezeit würde ich allerdings anders auswerten:

            var idRegensensor = 'xxxxxxxxxxx'; // Objekt Regensensor, das true/false liefert, eintragen
            var updateZeit = 3; // Dauer in s, innerhalb der keine Updates angenommen werden
            var lastUpdate = getState(idRegensensor).lc;
            
            on(idRegensensor, function(dp) {
                if (dp.state.lc - lastUpdate > updateZeit) {
            		lastUpdate = dp.state.lc;
            		setState(Variable für Regensensor, dp.state.val);
                }
            });
            
            1 Reply Last reply Reply Quote 0
            • T
              Trident last edited by

              Danke euch für die Tipps! Werde es ausprobieren und berichten 🙂

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              777
              Online

              31.9k
              Users

              80.2k
              Topics

              1.3m
              Posts

              3
              5
              1877
              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