Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Füllstandsmessung per Pegelsonde.

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Füllstandsmessung per Pegelsonde.

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

      Vielleicht kann ja mal jemand drüber schauen.
      Ich habe es wie folgt verdrahtet:

      IMG_0783[1].JPG
      Grau/Schwarz ist 3,3V.
      Müsste ich es nicht wie folgt machen?

      Verdrahtung.jpg

      Statt der 9V halt die 24V.
      Oder liege ich total daneben? Als Laie, der ich nun einmal bin!

      1 Reply Last reply Reply Quote 0
      • S
        Superdad @Atifan last edited by

        @Atifan
        Ich habe es jetzt nach Bild2 angeschlossen und es funktioniert!

        Habe es mit Sonoff Adapter verbunden und alle Werte drin.
        Bei mir ist 0cm 0.035A.
        Wie rechnest du die Ampere in cm oder Prozent um.

        Atifan 1 Reply Last reply Reply Quote 0
        • Atifan
          Atifan @Superdad last edited by Atifan

          @Superdad Alles klar wunderbar.
          Bei mir ist 0cm auch 0.035A.
          Hast du in der console den Befehl "Sensor13 11" eingegeben? Ja oder?

          100% genau auf den Milliliter bekommst du es nicht hin, aber bei mir entspricht 0.001A einer Wassersäule von 3,225cm, das sollte bei dir genauso sein, unabhängig vom Radius bzw. vom Durchmesser deiner Zisterne.

          Du musst halt schauen was für Behälter du hast und das Volumen berechnen. Hast du einen Zylinder oder ein Rechteck?
          Sage mir mal den Durchmesser bzw. Radius deiner Zisterne und die Höhe. Bzw. falls rechteckig die Länge und Breite.

          Atifan 1 Reply Last reply Reply Quote 1
          • Atifan
            Atifan @Atifan last edited by

            Bzw. am einfachsten Testen kannst du wenn du die Sonde ins Wasser lässt. 0,5m, 1m usw. und dann schaust wieviel mA dann angezeigt werden.
            Wenn du den Sondenkopf 1m ins Wasser steckst, sollte ein Wert von 0,066A angezeigt werden.
            Musst du einfach mal testen ob es so ist.

            S 1 Reply Last reply Reply Quote 0
            • S
              Superdad @Atifan last edited by

              @Atifan Ich habe einen Zylinder und Oberkante ist ebenfalls 3m.
              Ich versuche mal eine Gleichung in Blockly zu programmieren um dann die Ampere in cm umzurechnen.

              Ich hatte mich verschrieben.
              Bei mir ist 0,032A = 0cm.
              Also sollten 3m = 0,125A sein.
              Ausgegebener Wert x - 0,032A = Wert y
              Wert y : 0,001 = Wert z
              Wert z x 3,225 cm

              Das sollte dann die Füllhöhe ergeben.
              Nun muss ich das nur noch in Blockly einmeißeln. Zumindestens versuchen!

              Atifan 1 Reply Last reply Reply Quote 0
              • Atifan
                Atifan @Superdad last edited by

                @Superdad
                Ja und für die Umrechnung in Liter

                PI * r * r * h ist das Volumen

                Hier ist mein Berechnungsscript. Bin kein Programmierer, von daher ist es bestimmt nicht perfekt 🙂 Aber funktioniert.

                f359d74f-8799-49cc-9204-e644ca8bd13b-image.png

                S 1 Reply Last reply Reply Quote 1
                • S
                  Superdad last edited by Superdad

                  Ist wohl doch nicht so einfach mit Blockly.
                  Bekomme immer 0cm in der Debug Ausgabe.
                  Mein Blockly:

                  <xml xmlns="https://developers.google.com/blockly/xml">
                    <variables>
                      <variable id="HBB:E$N1C0DLXs9ur-so">summe x</variable>
                      <variable id="2LGagD(oRPbeP[3^@)JR">summe y</variable>
                    </variables>
                    <block type="on_ext" id="RwS}U~yAI-qu:Gk4$)%l" x="-287" y="63">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                      <field name="CONDITION">ne</field>
                      <field name="ACK_CONDITION"></field>
                      <value name="OID0">
                        <shadow type="field_oid" id="|IayS%`5E.Mvqm0=O-?B">
                          <field name="oid">sonoff.0.Pegelsensor.INA219_Current</field>
                        </shadow>
                      </value>
                      <statement name="STATEMENT">
                        <block type="control" id="q@Mi%VefQh.AFUtC-r;u">
                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                          <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field>
                          <field name="WITH_DELAY">FALSE</field>
                          <value name="VALUE">
                            <block type="math_arithmetic" id="c]T.wZ6thXVU8CG5~xdi">
                              <field name="OP">MINUS</field>
                              <value name="A">
                                <shadow type="math_number" id="[YwQk07x*$_Bi1gf2S{j">
                                  <field name="NUM">0</field>
                                </shadow>
                                <block type="get_value" id="ffYElRYvG*QYnRU$yT{H" inline="false">
                                  <field name="ATTR">val</field>
                                  <field name="OID">sonoff.0.Pegelsensor.INA219_Current</field>
                                </block>
                              </value>
                              <value name="B">
                                <shadow type="math_number" id=".dB4=_wCwIy5R?!47_nl">
                                  <field name="NUM">0.033</field>
                                </shadow>
                              </value>
                            </block>
                          </value>
                          <next>
                            <block type="debug" id="Lb**=^$?1u(8-8d=M}Pf">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                                <shadow type="text" id="1d8l7V5EwDIWv+(:f6Ot">
                                  <field name="TEXT">test</field>
                                </shadow>
                                <block type="get_value" id="!t*GQque2E[6fh5`D7hF">
                                  <field name="ATTR">val</field>
                                  <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field>
                                </block>
                              </value>
                              <next>
                                <block type="controls_if" id="GwB=eYmk@fTnO@gd|*(M">
                                  <value name="IF0">
                                    <block type="logic_compare" id="Vv#b4x*pEgE-Beh8|S9E">
                                      <field name="OP">GTE</field>
                                      <value name="A">
                                        <block type="get_value" id="G7ly?Fr~Tx|FF{+LdtYZ">
                                          <field name="ATTR">val</field>
                                          <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <block type="math_number" id="KCBlol`*kLBIK^VwZO#i">
                                          <field name="NUM">0</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <statement name="DO0">
                                    <block type="variables_set" id="U;wTU6,f+B0QQMulQYfC">
                                      <field name="VAR" id="HBB:E$N1C0DLXs9ur-so">summe x</field>
                                      <value name="VALUE">
                                        <block type="math_arithmetic" id="D$oV;aI0?$g+{pg?w)ev">
                                          <field name="OP">DIVIDE</field>
                                          <value name="A">
                                            <shadow type="math_number" id="k$y_jvOv|F[-(_6~Xp|.">
                                              <field name="NUM">1</field>
                                            </shadow>
                                            <block type="get_value" id="By}9*y3j7jM{y1qH_44L">
                                              <field name="ATTR">val</field>
                                              <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Ampere</field>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <shadow type="math_number" id="*{{lI83b5[v7w9j[3$Z4">
                                              <field name="NUM">0.001</field>
                                            </shadow>
                                          </value>
                                        </block>
                                      </value>
                                      <next>
                                        <block type="debug" id="caKu*$q`T,=GgVGilNf5">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                            <shadow type="text" id="hX[e+Tu+26A%bai}ND$r">
                                              <field name="TEXT">test</field>
                                            </shadow>
                                            <block type="variables_get" id="IUIT}R:q,uNOeBn%DmVN">
                                              <field name="VAR" id="HBB:E$N1C0DLXs9ur-so">summe x</field>
                                            </block>
                                          </value>
                                          <next>
                                            <block type="variables_set" id=",_a/T!i#2s{:y,[,cB]W">
                                              <field name="VAR" id="2LGagD(oRPbeP[3^@)JR">summe y</field>
                                              <value name="VALUE">
                                                <block type="math_arithmetic" id="}KWq]Qdz6YPmC0)!n;KD">
                                                  <field name="OP">MULTIPLY</field>
                                                  <value name="A">
                                                    <shadow type="math_number" id="zk=VLtPwvO^LCSR2{%}m">
                                                      <field name="NUM">1</field>
                                                    </shadow>
                                                    <block type="variables_get" id="N;{SwNbiXof0k_?.g2+n">
                                                      <field name="VAR" id="HBB:E$N1C0DLXs9ur-so">summe x</field>
                                                    </block>
                                                  </value>
                                                  <value name="B">
                                                    <shadow type="math_number" id="tE5B=5BbT}P*T6[qG|n{">
                                                      <field name="NUM">3.225</field>
                                                    </shadow>
                                                  </value>
                                                </block>
                                              </value>
                                              <next>
                                                <block type="debug" id="IX|w+cYjuBA#;cUBYYl5">
                                                  <field name="Severity">log</field>
                                                  <value name="TEXT">
                                                    <shadow type="text">
                                                      <field name="TEXT">test</field>
                                                    </shadow>
                                                    <block type="variables_get" id="`Y(+l^CHW,dE`s6NOf9u">
                                                      <field name="VAR" id="2LGagD(oRPbeP[3^@)JR">summe y</field>
                                                    </block>
                                                  </value>
                                                  <next>
                                                    <block type="controls_if" id=":xThwNel4kk,k`fj/D|h">
                                                      <value name="IF0">
                                                        <block type="logic_compare" id="`v#8[pVQ[?XA2n#hhwkh">
                                                          <field name="OP">GTE</field>
                                                          <value name="A">
                                                            <block type="get_value" id="9:)f*:hw[EtxP[d%@;Sq">
                                                              <field name="ATTR">val</field>
                                                              <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Füllstand_cm</field>
                                                            </block>
                                                          </value>
                                                          <value name="B">
                                                            <block type="math_number" id="_))d-=4{.Hwg%[!qgB{w">
                                                              <field name="NUM">0</field>
                                                            </block>
                                                          </value>
                                                        </block>
                                                      </value>
                                                      <statement name="DO0">
                                                        <block type="update" id="v~8v(Tejxk%B59p7D?7:">
                                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                                          <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Füllstand_cm</field>
                                                          <field name="WITH_DELAY">FALSE</field>
                                                          <value name="VALUE">
                                                            <block type="variables_get" id="5qejMuwFbM~nc#wH2EZu">
                                                              <field name="VAR" id="2LGagD(oRPbeP[3^@)JR">summe y</field>
                                                            </block>
                                                          </value>
                                                          <next>
                                                            <block type="debug" id="|]=P@l9r)=CfpmFbKe4^">
                                                              <field name="Severity">log</field>
                                                              <value name="TEXT">
                                                                <shadow type="text" id="f5+Cz)_{CwfU$[`+E4IG">
                                                                  <field name="TEXT">test</field>
                                                                </shadow>
                                                                <block type="get_value" id=":(96#NeBT9Q#(z$O$6kq">
                                                                  <field name="ATTR">val</field>
                                                                  <field name="OID">0_userdata.0.Zisterne.Pegelsonde_Füllstand_cm</field>
                                                                </block>
                                                              </value>
                                                            </block>
                                                          </next>
                                                        </block>
                                                      </statement>
                                                    </block>
                                                  </next>
                                                </block>
                                              </next>
                                            </block>
                                          </next>
                                        </block>
                                      </next>
                                    </block>
                                  </statement>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </statement>
                    </block>
                  </xml>
                  

                  Pegelsensor_cm.jpg

                  Mein Debug Output:

                  12:18:52.060	info	javascript.0 (1563) Stop script script.js.Garten.Pegelsensor_Fuellhoehe_cm
                  12:18:52.198	info	javascript.0 (1563) Start javascript script.js.Garten.Pegelsensor_Fuellhoehe_cm
                  12:18:52.202	info	javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: registered 1 subscription and 0 schedules
                  12:19:03.832	info	javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: 0
                  12:19:03.832	info	javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: 0
                  12:19:03.832	info	javascript.0 (1563) script.js.Garten.Pegelsensor_Fuellhoehe_cm: 0
                  
                  1 Reply Last reply Reply Quote 0
                  • S
                    Superdad @Atifan last edited by

                    @Atifan Habe jetzt dein Script für die Berechnung genommen und dann noch die Prozente ausgerechnet.
                    Eingebaut ist es auch schon und funktioniert super!

                    Vielen Dank noch einmal!

                    1 Reply Last reply Reply Quote 0
                    • E
                      ElseKling @Eisbaeeer last edited by

                      @Eisbaeeer heute kam endlich mein Strom2Spannungs-Converter. Entsprechend dem Bild angeschlossen. Leider liefert ESp-Easy keine Anzeige. Beim Messen ist mir aufgefallen, dass der Converter eine negative Spannung ausgibt. IMG_4226.jpg

                      Eisbaeeer 1 Reply Last reply Reply Quote 0
                      • Eisbaeeer
                        Eisbaeeer Developer @ElseKling last edited by Eisbaeeer

                        @ElseKling Warum ESPEasy? Meine Firmware basiert auf dem LAN Chip. Sorry, aber ich unterstütze kein ESPEasy. Da ist doch gerade Superdad und Atifan aktiv. Bei unserer Lösung ist kein Umrechnen nötig. Außerdem kann eine untere Grenze und vieles mehr direkt in iobroker über MQTT definiert werden. Falls Bedarf ist, kann ich das auch noch auf ESP8266 portieren. Gruß Eisbaeeer

                        E 1 Reply Last reply Reply Quote 0
                        • E
                          ElseKling @Eisbaeeer last edited by

                          @Eisbaeeer
                          Ah sorry, aber die Auswertung des Signals ist wäre ja dann der zweite Schritt. Hier noch mal der Aufbau als Schema. Wieso habe ich am Ausgang des Spannungskonverters (grün zu GND) eine negative Spannung 🤔 ?
                          Die Sonde wird ja über den Konverter gespeißt oder braucht sie noch mal 24V?
                          fritzing-sonde.jpg

                          S 1 Reply Last reply Reply Quote 0
                          • S
                            Superdad @ElseKling last edited by

                            @ElseKling Muss denn nicht GRD auf Minus und Plus auf VCC?

                            E 1 Reply Last reply Reply Quote 0
                            • E
                              ElseKling @Superdad last edited by ElseKling

                              @Superdad war ein Fehler im Diagram 🙁
                              Die Sonde braucht doch Versorgungsspannung (24V), zusammen mit dem gemeinsamen GND klappt es jetzt. Am Wochenende werde ich mal kalibrieren. Und dann ein komplettes "Rezept" schreiben.
                              Sonde_Steckplatine4.jpg

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                Superdad @ElseKling last edited by

                                @ElseKling Also der gleiche Fehler wie bei mir.

                                1 Reply Last reply Reply Quote 0
                                • E
                                  ElseKling @ElseKling last edited by ElseKling

                                  Wie versprochen hier das "Kochrezept".
                                  Füllstandsmesser per Pegelsonde

                                  Einleitung:
                                  Um dem Wasserpegel meiner Zisterne zu messen und an meinen io-broker zu übermitteln habe ich lange im Netz gesucht und auf Dauer scheinen alle Lösungen mit Ultraschall-sensor nicht beständig zu sein. Am Ende habe ich den Thread (https://forum.iobroker.net/topic/16773) gefunden. Ich habe mich für den Weg mit dem NodeMCU und ESPEasy entschieden, da bei letzterem die MQTT-Einbindung und die Konfiguration per Weboberfläche sehr einfach ist. Dank also an alle Beteiligten im Thread, ich habe nur alle Infos zusammengefasst und eine Schritt-für-Schritt-Anleitung draus gebastelt.

                                  Hardware:
                                  • Pegelsonde (Level Transmitter Level Transducer Level Sensor)
                                  Achtet bitte drauf eine zu nehemn deren maximaler Pegelstand auch Eurem entspricht. Ansonsten kann es zu starken Schwankungen führen.
                                  z.B. https://www.aliexpress.com/item/32611346968.html?spm=a2g0s.9042311.0.0.2df14c4dDaJs7G
                                  pegel.JPG

                                  • NodeMCU (andere ESP8266 Module sollten auch gehen)
                                  z.B. https://www.az-delivery.de/products/nodemcu
                                  • Spannungswandler (Voltage Step Up Adjustable)
                                  z.B. https://www.aliexpress.com/item/32833505298.html?spm=a2g0s.9042311.0.0.2df14c4dDaJs7G
                                  Vup.jpg

                                  • Strom zu Spannung Konverter (Current to Voltage Converter Signal Conversion Module)
                                  z.B. https://www.aliexpress.com/item/4001108601098.html?spm=a2g0s.9042311.0.0.2df14c4dDaJs7G
                                  C2V.jpg

                                  • Optional Display (2-zeilig HD44780 1602 oder 4-zeilig HD44780 2004)
                                  z.B. https://www.az-delivery.de/products/bundlelcd-schnittstelle?_pos=5&_sid=72565279b&_ss=r

                                  Verkabelung:
                                  Entsprechend der Skizze
                                  Sonde_Steckplatine4.jpg

                                  Mit optionalem Display:
                                  Sonde-display_Steckplatine.png

                                  Am Strom zu Spannung Konverter mit dem 2 Schrauben den Maximal- und Minimalwert einstellen. Der Minimalwert sollte über 0V liegen um zu erkennen, ob ein Fehler (Kabelbruch) vorliegt.
                                  Sollte das Display nichts anzeigen, am Potentiometer auf der Rückseite den Kontrast kontrollieren.

                                  Software:
                                  Den ESP mit ESPEasy flashen und über die Weboberfläche konfigurieren.
                                  Ich verwende 20111 – Mega vom Sep 29 2020 09:50:20 „ESP_Easy_mega_20200929_normal_ESP8266_4M1M“. Abweichende Versionen können Probleme machen.

                                  MQTT-Client
                                  s1.jpg
                                  s2.jpg
                                  A: IP-Adresse des MQTT-Servers
                                  B: User / Passwort des MQTT-Servers

                                  Devices
                                  s4.jpg

                                  Display
                                  s5.jpg

                                  A: I2C-Adresse, kann über Tools -> I2C Scan ermittelt werden
                                  B: Größe des Displays;

                                  s3.jpg
                                  A: Anschluss pins des Displays

                                  Analog Eingang
                                  s6.jpg
                                  A: Oversampling glättet den Eingang der Messung
                                  B&C: 2Punktkalibrierung der Meßwerts. A=Messwert ohne Pegel B=Messwert Maximalpegel
                                  In meinem Fall habe ich mich entschieden den Wert als 0%-100% zu nehmen, es wäre auch möglich die Höhe oder die Liter zu nehmen. Da ich eine quadratische Zisterne haben, sind alle Werte eh direkt proportional.

                                  Umrechnung
                                  s7.jpg
                                  s8.jpg

                                  Umrechnung der Prozent in Liter (bei mir 9500L maximal)

                                  Allgemeine Tipps:

                                  1. Kalibration
                                    Zur Kalibrierung habe ich ein unten geschlossenes DN50 HT-Rohr genommen, so konnte ich verschiedene Pegelstände außerhalb der Zisterne simulieren. Das Rohr bekam dann einige Bohrungen und wurde am Ende in die Zisterne gehängt und die Sonde dann eingeführt, so dient es als Filter um die Sonde etwas vor Verunreinigungen zu schützen und die Wasseroberfläche im Rohr etwas zu beruhigen.

                                  Updates:
                                  26-05-2021: Ergänzung zum maximalen Pegelbereich der Sonde und zur ESP_Easy Version

                                  Das Ganze als PDF: Füllstandsmesser per Pegelsonde2.pdf

                                  R V E ? 4 Replies Last reply Reply Quote 3
                                  • R
                                    Rand @ElseKling last edited by

                                    Lässt sich eine der Lösungen hier eigentlich so erweitern/umbauen das ich das Board über Ethernet betreiben kann (PoE) und idealerweise noch einen (wasserfesten) Temperatursensor (oder 2) dran packen kann?

                                    Nehme mal an ich bräuchte da mehr Spannungswandler (1x 48V auf 24V, einmal 24/48 auf Boardeingang [5V oder was auch immer], ggf auf 1 Wire, das wäre ja noch recht logisch. Dann müsste man wohl den Sketch so abändern das er auch die Temperaturwerte pollt und mit ausgibt...
                                    Sollte ja eigentlich kein Hexenwerk sein hoffe ich 🙂

                                    Atifan 1 Reply Last reply Reply Quote 0
                                    • Atifan
                                      Atifan @Rand last edited by

                                      @Rand Erweitern lässt sich das so auf jeden Fall. Problem ist halt nur die Software, entweder musst du sie selber schreiben oder jemand anders macht das. Mit Tasmota auf dem ESP kannst du z.B. schonmal direkt Temperatursensoren z.B. über 1Wire direkt mit anschließen, allerdings ist Tasmota für ESP8266, also WLAN. Wenn du einen Arduiono Uno oder so nutzen willst brauchst du andere Software. Aber funktionieren tut das auf jeden Fall, alles eine Sache der Software 🙂

                                      R 1 Reply Last reply Reply Quote 0
                                      • R
                                        Rand @Atifan last edited by

                                        @Atifan said in Füllstandsmessung per Pegelsonde.:

                                        @Rand ... Aber funktionieren tut das auf jeden Fall, alles eine Sache der Software 🙂

                                        Danke - genau das habe ich mir gedacht. Klingt nach einem Projekt für lange Winterabende 😛

                                        Welches Board wäre dafür am besten geeignet? Also Ethernet/PoE fähig (ggf mit {verfügbarem} shield) und genügend IO pins?

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

                                          Hallo, @Rand ,

                                          schau mal auf Seite 4 dieses Themas. @Eisbaeeer hat das mit einem Ethernetshield gemacht. Er hat auch seinen Sketch veröffentlicht.

                                          R 1 Reply Last reply Reply Quote 0
                                          • R
                                            Rand @opossum last edited by

                                            @opossum
                                            Ja danke, das hatte ich gesehen; ich wusste nur nicht ob ich da noch so einfach 1-Wire mit dranhängen kann 🙂

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            905
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            63
                                            604
                                            153651
                                            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