Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Water Flow Sensor

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Water Flow Sensor

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

      Ich habe ein Aquarium wo nun Leitungswasser dosiert werden soll.
      Das Ganze läuft über einen ESP8266 mit Tasmota geflashed.
      Daran ist ein Water Flow Meter angeschlossen der in der Schlauch leitung vor dem Magnetventil sitzt. das das Wasser dosieren soll & die durchfluss Menge auf ml kalibriert werden soll und dann als Milliliter gezählt werden soll.
      Die Minus Leitung vom Magnetventil läuft über einen Schwimmer. Der im Aquarium sitzt.
      Nun hat der Water Flow Meter einen gemessenen Wert von 197 bei 1000 ml gepumt.
      diesen hatte ich dann kalibriert mit 5,1 mal gerechnet. dieser Wert wird intern umgerechnet.
      Soll aber im Datenpunkt Wasser_Counter abgelegt werden und nach einem Gepumpten vorgang wieder resettet werden und der Counter2 in Tasmota soll per exec auf null gesetzt werden.
      Das Magnetventil ist Aqua_Control Power1 Der Schwimmer in Aqua_Float ist Power.
      Nun wird leider der Wert nicht in die nötigen Datenpunkte geschrieben und auch nicht angezeigt. Ich hatte von @paul53 schon mal so eine Spitzen Steuerung nur war diese ein Javascript. Nun hätte ich das ganze gerne als Blockly. Nun auch nicht mehr Osmose für ein Meerwasser Becken sondern Leitungswasser für ein Süßwasser becken.
      Wo ist mein denkfehler!? bzw. Kann man das überhaupt so machen wie ich das blockly erstellt hatte..... Scheinbar nicht denn es läuft nicht.
      bei betätigung des Schwimmers wird zwar das Magnetventil geschaltet das wars dann aber auch.

      var Sensorwert;
      
      
      Sensorwert = getState('sonoff.0.Aqua_Float.SENSOR.COUNTER.C2').val;
      on({ id: [].concat(['sonoff.0.Aqua_Float.POWER']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        setState('0_userdata.0.Aqua_Control.0.Wasser.Wasser_Counter' /* Wasser_Counter */, (Sensorwert * 5.1), true);
        console.info((String(Sensorwert * 5.1) + ' ml'));
      });
      on({ id: [].concat(['sonoff.0.Aqua_Float.POWER']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        if (getState('sonoff.0.Aqua_Float.POWER').val == true) {
          setState('sonoff.0.Aqua_Control.POWER1' /* Aqua_Control POWER1 */, true);
        }
        if (getState('sonoff.0.Aqua_Float.POWER').val == false) {
          setState('sonoff.0.Aqua_Control.POWER1' /* Aqua_Control POWER1 */, false);
          setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag' /* Wasserzähler_Tag */, (getState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag').val + Sensorwert), true);
          setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Jahr' /* Wasserzähler_Jahr */, (getState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Jahr').val + getState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag').val), true);
          exec('192.168.0.71/cm?cmnd=counter2 0');
          schedule('{"time":{"exactTime":true,"start":"00:00"},"period":{"years":1,"yearDate":1,"yearMonth":1}}', async () => {
            setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Jahr' /* Wasserzähler_Jahr */, 0, true);
          });
          schedule('{"time":{"exactTime":true,"start":"00:00"},"period":{"days":1}}', async () => {
            setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag' /* Wasserzähler_Tag */, 0, true);
          });
        }
      });
      

      Screenshot 2024-07-26 203601.png

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

        so wird das wasser gezählt aber ob das so korrekt ist weß ich nicht.

        var Sensorwert;
        
        
        Sensorwert = getState('sonoff.0.Aqua_Float.SENSOR.COUNTER.C2').val;
        on({ id: [].concat(['sonoff.0.Aqua_Float.POWER']), change: 'ne' }, async (obj) => {
          let value = obj.state.val;
          let oldValue = obj.oldState.val;
          if (getState('sonoff.0.Aqua_Float.POWER').val == true) {
            setState('sonoff.0.Aqua_Control.POWER1' /* Aqua_Control POWER1 */, true);
            setState('0_userdata.0.Aqua_Control.0.Wasser.Wasser_Counter' /* Wasser_Counter */, (Sensorwert * 5.1), true);
            console.info((String(Sensorwert * 5.1) + ' ml'));
          }
          if (getState('sonoff.0.Aqua_Float.POWER').val == false) {
            setState('sonoff.0.Aqua_Control.POWER1' /* Aqua_Control POWER1 */, false);
            setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag' /* Wasserzähler_Tag */, (getState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag').val + Sensorwert), true);
            setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Jahr' /* Wasserzähler_Jahr */, (getState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Jahr').val + getState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag').val), true);
            exec('192.168.0.71/cm?cmnd=counter2 0');
          }
        });
        schedule('{"time":{"exactTime":true,"start":"00:00"},"period":{"years":1,"yearDate":1,"yearMonth":1}}', async () => {
          setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Jahr' /* Wasserzähler_Jahr */, 0, true);
        });
        schedule('{"time":{"exactTime":true,"start":"00:00"},"period":{"days":1}}', async () => {
          setState('0_userdata.0.Aqua_Control.0.Wasser.Wasserzähler_Tag' /* Wasserzähler_Tag */, 0, true);
        });
        
        Aphofis 1 Reply Last reply Reply Quote 0
        • Aphofis
          Aphofis @Aphofis last edited by Aphofis

          12345678

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

            @aphofis sagte: Kann man das überhaupt so machen wie ich das blockly erstellt hatte...

            Nein, Trigger (Zeitpläne) innerhalb eines Triggers funktionieren nicht.
            Funktioniert dieser Vorschlag nicht?

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

              @paul53
              Ja das funktioniert. Problem war, das http get konnte nicht laufen.
              das Tasmota gerät ist doch Benutzer und Passwort geschützt. Habe jetzt den Reset so aufgebaut und der funktioniert.

              http://192.168.0.96/cm?user=benutzer&password=Passwort&cmnd=counter1%200
              

              Nur wird der Schwimmer sporadisch nicht getriggert. Trotz das er im ESP als true angezeigt wird.
              Demnach wird ab und an kein Wasser gepumpt. Kann man das nicht irgendwie abfragen, das der Schwimmer auf true false überprüft wird keine Ahnnung alle 20 sek. oder was halt Sinn macht.
              Wenn dann false ist halt mache nichts. Wenn dann aber innerhalb der Prüfung true festgestellt wird dann trigger auslösen.

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

                @aphofis sagte: Nur wird der Schwimmer sporadisch nicht getriggert. Trotz das er im ESP als true angezeigt wird.

                Wenn der Wert im ESP nicht an ioBroker übertragen wird, nützt auch kein Polling des Datenpunktes. Ändert sich der Datenpunktwert, wird auch getriggert.

                Du müsstest im ESP prüfen, ob der gesendete Wert von ioBroker bestätigt wird und falls nicht, das Senden wiederholen. Vom ESP / Tasmota und vom Sonoff-Adapter habe ich keine Ahnung.

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

                  @paul53 ja lag am telemetrie Daten intervall
                  hatte das Gerät neu aufgesetzt und vergessen telemetrie einzustellen weil der counter nicht mehr normal puslt
                  hatte da irgend einen mist mit rule per konsole gesendet seid dem pulst er nicht mehr werte wie 2207 was dann 1 liter entspricht sondern zählt pro pump vorgang 1+1 oder bestands wert +1 wie ich das zurücksetzen kann weiss ich nicht hab schon std lang das netz durchsucht.
                  Telemetrie hab ich auf 15 sek gesetzt also werden die werte alle 15 sek an den MQTT (Sonoff) gesendet aktualisiert.

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

                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  573
                  Online

                  32.0k
                  Users

                  80.3k
                  Topics

                  1.3m
                  Posts

                  2
                  7
                  351
                  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