Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Momentanverbrauch auf 0 setzen nach 1 min

    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

    Momentanverbrauch auf 0 setzen nach 1 min

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

      Ich habe einen Meßwert "Gasverbrauch in m3". Davon möchte ich den Momentanverbrauch m3/min berechnen, das klappt auch:

      const idGasMenge = 'esphome.0.C8C9A35E048A.Sensor.3240261304.state';
      const idGasVerbrauch = '0_userdata.0.gas_durchfluss';
      
      on(idGasMenge, async function(dp) { 
          var verbrauch = 60000 * (dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc);  // m3/min
          setState(idGasVerbrauch, verbrauch, true);
      });
      

      Das Diagram geht aber nicht auf 0, wenn die Therme steht (grüne Kurve):

      33385726-ea02-44bc-993c-225f2f655daf-grafik.png

      wie kann ich einen 0-Wert schreiben, wenn der Verbrauch in m3 sich z.B. eine Minute nicht ändert?

      paul53 Homoran 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @jschmied last edited by paul53

        @jschmied sagte: wie kann ich einen 0-Wert schreiben, wenn der Verbrauch in m3 sich z.B. eine Minute nicht ändert?

        const idGasMenge = 'esphome.0.C8C9A35E048A.Sensor.3240261304.state';
        const idGasVerbrauch = '0_userdata.0.gas_durchfluss';
        
        var timer = null;
        
        on(idGasMenge, async function(dp) { 
            var verbrauch = 60000 * (dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc);  // m3/min
            setState(idGasVerbrauch, verbrauch, true);
            clearTimeout(timer);
            timer = setTimeout(function() {
                setState(idGasVerbrauch, 0, true);
            }, 120000); // 2 Minuten
        });
        
        1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @jschmied last edited by

          @jschmied sagte in Momentanverbrauch auf 0 setzen nach 1 min:

          wenn der Verbrauch in m3 sich z.B. eine Minute nicht ändert?

          wie oft wird denn der Zählerstand aktualisiert oder (unter Verbrauch) geändert.

          dann entweder auf Aktualisierung triggern, oder bei Änderung ein timeout das länger als das übliche Intervall ist, erst stoppen, dann starten und bei Ausführung des Timeouts eine 0 schreiben

          J 1 Reply Last reply Reply Quote 0
          • J
            jschmied @Homoran last edited by

            @homoran wenn die therme läuft, gibts pro 0,01 m3 ein Impuls, also bei 100% Leistung alle 25 Sekunden. Sie kann bis auf 30% runter glaub ich. Ich starte mal mit 2 Minuten Timer.

            J 1 Reply Last reply Reply Quote 0
            • J
              jschmied @jschmied last edited by

              @jschmied 69a98679-2e1d-4d7a-8206-00bb8df4c36b-grafik.png

              Der Wert in der Betriebspause muss auf alle Fälle auf 0...

              Codierknecht paul53 2 Replies Last reply Reply Quote 0
              • Codierknecht
                Codierknecht Developer Most Active @jschmied last edited by

                @jschmied
                Naja, falsch ist das was ich sehe im Zusammenhang mit "Verbrauch" ja nicht. Da wird halt der Gesamtverbrauch aggregiert.

                Was passiert z.B. wenn Du ein Vollbad einlässt und die Therme 5 Minuten lang Warmwasser produziert?
                Oder wenn allgemein in einem Zeitraum x die Therme konstant über 0% Leistung betrieben wird?
                Ich befürchte, der Timer alleine ist noch nicht der Weisheit letzter Schluss.
                Könnte vielleicht im Zusammenhang mit einer Änderung auf 0 funktionieren: Wenn eine gewisse Zeit x kein Verbrauch ermittelt wurde, dann den Verbrauchszähler auf 0 zurücksetzen.
                Also: Auf Änderung triggern. Wenn Wert > 0 und (Zeitstempel - vorheriger Zeitstempel) > x ==> 0 schreiben.

                Aber warum eigentlich nicht einfach bei Last = 0 die 0 in den DP schreiben?

                J 1 Reply Last reply Reply Quote 0
                • J
                  jschmied @Codierknecht last edited by jschmied

                  @codierknecht Naja, eigentlich sind das vom Gas-Zähler ja Impulse. Der Verbrauch in m3 ist schon ein Counter, der pro Impuls 0.01 addiert.

                  Wahrscheinlich sollte man besser diesen Zähler alle Minute per Timer auslesen und die Differenz zum Vorwert bilden.

                  Codierknecht S 2 Replies Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @jschmied last edited by

                    @jschmied
                    Ich zähle ebenfalls am Gaszähler die Impulse.
                    Mich interessiert allerdings nur der Tagesverbrauch.
                    Bei mir ist ein Impuls = 0,1 m³. Die addiere ich in einem DP für den Tagesverbrauch und in einem für den Gesamtzählerstand.
                    Nachts schreibe ich den aufgelaufenen Tagesverbrauch in einen dritten DP, der mit dem SQL-Adapter historisiert wird und setze den Tagesverbrauch wieder auf 0.
                    Funktioniert top.
                    5b8fd2f4-d893-43b3-b109-75a64a06a131-grafik.png

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

                      @jschmied sagte: Der Wert in der Betriebspause muss auf alle Fälle auf 0...

                      Passiert das nicht mit dem 2-Minuten-Timeout? Wobei 2 Minuten wahrscheinlich zu kurz sind.

                      1 Reply Last reply Reply Quote 0
                      • S
                        silbaer @jschmied last edited by

                        @jschmied Ich mache etwas ähnliches mit dem Stromverbrauch. Da wird auch der aktuelle Zählerstand genommen. Immer wenn sich der ändert, nehme ich den aktuellen Wert und ziehe den Vorigen Zählerstand ab. Dann hole ich mir den Zeitstamp der letzten Änderung des vorigen Wertes und ziehe den von dem Timestamp des aktuellen Wertes ab. Dann speichere ich den aktuellen Wert als vorigen Wert. Mit den beiden Differenzwerten habe ich den "Momentan"-Verbrauch.

                        Bei dieser Art der Berechnung hast du immer das Problem, dass du nur in die Vergangenheit schauen kannst, d.h. den Zustand "kein Verbrauch" kannst du nicht zuverlässig feststellen.

                        Ich glaube ich würde an deiner Stelle das Script für den m³ counter so ändern, das nach einer gewissen Zeit der Wert auf jeden Fall aktualisiert wird. Dann kannst du oberes Shema verwenden um den Momentanverbrauch zu errechnen. Schlägt der Timer zu und der Wert hat sich nicht geändert ist die Differenz 0 und der Momentanverbrauch dann auch. Doof ist dann nur, das beim nächsten mal hochzählen wahrscheinlich ein zu hoher Momentanverbrauch angezeigt wird. Da musst du wahrscheinlich ein bisschen mit den Zeiten spielen.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        882
                        Online

                        31.9k
                        Users

                        80.1k
                        Topics

                        1.3m
                        Posts

                        5
                        10
                        584
                        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