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. Water Flow Sensor

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Water Flow Sensor

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

    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

    AphofisA paul53P 2 Antworten Letzte Antwort
    0
    • AphofisA 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

      AphofisA Offline
      AphofisA Offline
      Aphofis
      schrieb am zuletzt editiert von
      #2

      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);
      });
      
      AphofisA 1 Antwort Letzte Antwort
      0
      • AphofisA Aphofis

        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);
        });
        
        AphofisA Offline
        AphofisA Offline
        Aphofis
        schrieb am zuletzt editiert von Aphofis
        #3

        12345678

        1 Antwort Letzte Antwort
        0
        • AphofisA 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

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

          @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?

          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

          1 Antwort Letzte Antwort
          0
          • AphofisA Offline
            AphofisA Offline
            Aphofis
            schrieb am zuletzt editiert von Aphofis
            #5

            @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.

            paul53P 1 Antwort Letzte Antwort
            0
            • AphofisA 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.

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

              @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.

              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

              1 Antwort Letzte Antwort
              0
              • AphofisA Offline
                AphofisA Offline
                Aphofis
                schrieb am zuletzt editiert von Aphofis
                #7

                @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 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

                611

                Online

                32.7k

                Benutzer

                82.4k

                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