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. [gelöst] Tankfüllung überwachen / Notaus

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

[gelöst] Tankfüllung überwachen / Notaus

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blockly
10 Beiträge 3 Kommentatoren 898 Aufrufe 2 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.
  • M Offline
    M Offline
    maniac
    schrieb am zuletzt editiert von maniac
    #1

    Hallo zusammen.

    Ich stecke gerade bei Blockly irgendwie fest und finde leider keine passende Lösung.
    Hoffe ihr könnt mir helfen.

    Es geht grundsätzlich um das Befüllen eines Tanks zur Gartenbewässerung. Diese Bewässerung habe ich schon mit IO-Broker automatisiert. [https://forum.iobroker.net/topic/24321/gartenbewässerung-füllstand-tank](Wer nachlesen möchte)

    Die Automatik zum Befüllen funktioniert soweit auch gut. Es soll bei weniger als 1000l Inhalt ein Ventil aufgehen und bei 2500l Inhalt wieder zu.

    Allerdings ist es so, dass der verbaute Wemos anscheinend manchmal spinnt und keine Werte mehr liefert und dadurch der Tank überläuft wenn er kein Signal bringt, dass der gewünschte Füllstand erreicht ist.

    Daher dachte ich mir, ich baue so etwas wie eine "Not"-Abschaltung ein. Als Beispiel einfach mal:
    Das Signal Füllstand < 1000 kommt und Wemos geht nach 500l Füllung offline. Dann kommt kein Signal mehr um die Füllung abzuschalten.
    Ich habe jetzt versucht mit Timeout eine Abschaltung zu erzwingen, aber das scheint auch nicht richtig zu funktionieren.
    Hier mal mein Versuch
    83c05339-ba0e-450f-87bf-848066b4ae5d-grafik.png

    Ich vergleiche den Füllstand mit einer Variablen, die sich eine Sekunde nach jeder Änderung des aktuellen Tankinhaltes auf eben diesen aktuellen Tankinhalt aktualisiert. Ich vergleiche also den aktuellen mit dem vorigen Wert und aktualisiere diese Variable erst eine Sekunde später, damit diese dann den letzten "aktuellen" Wert hat.

    Wenn der KontrollWert <= Aktuellem Wert ist (Weil der aktuelle sich ja erhöhen sollte) soll der Timeout abgebrochen werden, sonst nicht und der "Notaus" Timer soll ablaufen und wie im Beispiel nach 10min das Ventil schliessen.

    Ganz einfach gesagt: Ich möchte einen Wert vergleichen, wenn dieser sich nicht innerhalb eines bestimmten Zeitraums erhöht/verringert (weil der Wemos keine Daten mehr sendet und sich der Wert damit nicht mehr ändert) soll das Ventil mit false angesteuert werden.

    Kann mir bitte jemand auf die Sprünge helfen?

    Gruß Frank…

    1 Antwort Letzte Antwort
    0
    • opossumO Offline
      opossumO Offline
      opossum
      schrieb am zuletzt editiert von opossum
      #2

      Hallo,
      vielleicht kannst Du über die Durchflussmenge/Zeiteinheit einen Zeitpunkt für Notaus berechnen? Du könntest zum Beispiel die Zeit festhalten, in der die 1500 l zulaufen. Diese Zeit würde ich nehmen, vielleicht noch 10% addieren und dann mit Zulaufbeginn den Timer starten. Läuft der Timer ab, dann das Ventil schließen. So hast Du die Gewähr, das zumindest der Countdown das Ventil schließt. Ist alles ok, dann würde der Countdown das Ventil höchstens noch einmal schließen. Ich habe mal so ein Blockly mit Countdown getestet. Sieht so aus:

      9ba5f36e-82c6-4ea6-ad62-f36f629c754f-image.png

      757e0ca2-4344-4def-b169-c37b0777fd90-image.png

      Das "Hauptscript" wird getriggert über den Status des Objektes (hier mal ein Thermostat, wenn es in den Boostmodus geschaltet wird). Dann startet der Timer cnt (Blocklyvariable). Der obere Teil des Scriptes zählt im Sekundentakt die 300 Sekunden runter und aktualisiert den Datenpunkt count_down (als Zahl definiert). Wenn der Timer abgelaufen ist, wird hier testweise der DP Start_300 auf false gesetzt. Vielleicht reicht Dir das als "Notaus". Den DP count_down kann man dann auch in der VIS anzeigen.
      Habe mal den Export des Scripts angehängt.

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="DqZh89?2P1c|{#Kl.c:}">cnt</variable>
          <variable type="interval" id="Intervall">Intervall</variable>
        </variables>
        <block type="procedures_defnoreturn" id="$4!9luz@`f}qaHW,jd[~" x="38" y="63">
          <field name="NAME">counter</field>
          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
          <statement name="STACK">
            <block type="comment" id="66@f%/Cjnyx-]HwB/*5#">
              <field name="COMMENT">Anzeige Restzeit</field>
              <next>
                <block type="update" id="uS?Yo@_bGDaG|n?oVU9j">
                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                  <field name="OID">0_userdata.0.count_down</field>
                  <field name="WITH_DELAY">FALSE</field>
                  <value name="VALUE">
                    <block type="variables_get" id="#_c^[d~Zd.YHUCBBMJ5D">
                      <field name="VAR" id="DqZh89?2P1c|{#Kl.c:}">cnt</field>
                    </block>
                  </value>
                  <next>
                    <block type="comment" id="WE,wlm3pw?DAH;6|52?V">
                      <field name="COMMENT">Anzeige Restzeit</field>
                      <next>
                        <block type="timeouts_setinterval" id="@+=G3M1P=dpeXA|;?;|y">
                          <field name="NAME">Intervall</field>
                          <field name="INTERVAL">1</field>
                          <field name="UNIT">sec</field>
                          <statement name="STATEMENT">
                            <block type="math_change" id="t|D^zBw(Kz~N=,)[s`iR">
                              <field name="VAR" id="DqZh89?2P1c|{#Kl.c:}">cnt</field>
                              <value name="DELTA">
                                <shadow type="math_number" id="f_51T_+YcWU??8/+dJ5A">
                                  <field name="NUM">-1</field>
                                </shadow>
                              </value>
                              <next>
                                <block type="update" id="RRs7hbJ^94I;!S*LxE5a">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                  <field name="OID">0_userdata.0.count_down</field>
                                  <field name="WITH_DELAY">FALSE</field>
                                  <value name="VALUE">
                                    <block type="variables_get" id="]+)7}km@c{16/cSi`k{L">
                                      <field name="VAR" id="DqZh89?2P1c|{#Kl.c:}">cnt</field>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="controls_if" id="et,bY|$:9]NKvwjKAvfr">
                                      <value name="IF0">
                                        <block type="logic_compare" id="4Ww%fy7D0#?|$7?KEO:8">
                                          <field name="OP">LTE</field>
                                          <value name="A">
                                            <block type="variables_get" id="~kEXPP;4]cw#3$eoABZ+">
                                              <field name="VAR" id="DqZh89?2P1c|{#Kl.c:}">cnt</field>
                                            </block>
                                          </value>
                                          <value name="B">
                                            <block type="math_number" id="{X8Bf1VT(E;2.6P?I.VF">
                                              <field name="NUM">0</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                      <statement name="DO0">
                                        <block type="timeouts_clearinterval" id=";a4mJFuU%?{il@I#P!ro">
                                          <field name="NAME">Intervall</field>
                                          <next>
                                            <block type="control" id="v6w={2e7t46q8]2)jMm|">
                                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                              <field name="OID">0_userdata.0.Start_300</field>
                                              <field name="WITH_DELAY">FALSE</field>
                                              <value name="VALUE">
                                                <block type="logic_boolean" id="3a-*e7[?#?CCK%{tO@gX">
                                                  <field name="BOOL">FALSE</field>
                                                </block>
                                              </value>
                                            </block>
                                          </next>
                                        </block>
                                      </statement>
                                    </block>
                                  </next>
                                </block>
                              </next>
                            </block>
                          </statement>
                        </block>
                      </next>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </statement>
        </block>
        <block type="on_ext" id="xX,qCotbEYAQANRG*9Ab" x="38" y="438">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">true</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="|Gb}d{Eq[c|M!QB2=TT!">
              <field name="oid">hm-rpc.1.OEQ1257899.4.BOOST_MODE</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="variables_set" id="t?=zwdkfoX[N1rj%m2uI">
              <field name="VAR" id="DqZh89?2P1c|{#Kl.c:}">cnt</field>
              <value name="VALUE">
                <block type="math_number" id="=7:R|MIKYw!Py@B76ji%">
                  <field name="NUM">30</field>
                </block>
              </value>
              <next>
                <block type="procedures_callnoreturn" id="4t9tb#jq4p/RRs!r}(VS">
                  <mutation name="counter"></mutation>
                </block>
              </next>
            </block>
          </statement>
        </block>
      </xml>
      

      Habe das mal schnell auf meiner VIS dargestellt: coundown.mp4
      Die Darstellung der Zahl ist das odometer-widget aus den hqwidgets und auf car eingestellt.
      c4da74c0-1730-4ca3-a77d-88cd2b6690d4-image.png
      Im Video habe ich nur 10 Sekunden dargestellt, habe dann die Aufzeichnung abgebrochen. Die Anzeige geht aber bis auf 000 runter.

      https://schlepper-petersdorf.jimdofree.com/

      1 Antwort Letzte Antwort
      1
      • M Offline
        M Offline
        maniac
        schrieb am zuletzt editiert von
        #3

        Hallo.

        Das ist natürlich auch ein Ansatz. Nicht ganz wie ich es mir vorgestellt habe, da ich so ja nicht mitbekomme wenn sich die Werte nicht mehr ändern, aber immerhin ein definitives Ausschalten des Zulaufs.
        Das habe ich zumindest schon mal so übernommen und eingebunden. Danke Dir.

        Jemand noch eine Idee zum Wertevergleich?

        Gruß Frank…

        paul53P 1 Antwort Letzte Antwort
        1
        • M maniac

          Hallo.

          Das ist natürlich auch ein Ansatz. Nicht ganz wie ich es mir vorgestellt habe, da ich so ja nicht mitbekomme wenn sich die Werte nicht mehr ändern, aber immerhin ein definitives Ausschalten des Zulaufs.
          Das habe ich zumindest schon mal so übernommen und eingebunden. Danke Dir.

          Jemand noch eine Idee zum Wertevergleich?

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

          @maniac sagte:

          mit Timeout eine Abschaltung zu erzwingen, aber das scheint auch nicht richtig zu funktionieren.

          Wenn keine Werte mehr geliefert werden, erfolgt auch kein Triggern. Ein Wertevergleich ist nicht erforderlich. Vorschlag (nicht getestet):

          Blockly_temp.JPG

          Wert findet man unter "Trigger".

          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

          M 1 Antwort Letzte Antwort
          1
          • paul53P paul53

            @maniac sagte:

            mit Timeout eine Abschaltung zu erzwingen, aber das scheint auch nicht richtig zu funktionieren.

            Wenn keine Werte mehr geliefert werden, erfolgt auch kein Triggern. Ein Wertevergleich ist nicht erforderlich. Vorschlag (nicht getestet):

            Blockly_temp.JPG

            Wert findet man unter "Trigger".

            M Offline
            M Offline
            maniac
            schrieb am zuletzt editiert von
            #5

            @paul53 sagte in Tankfüllung überwachen / Notaus:

            @maniac sagte:

            mit Timeout eine Abschaltung zu erzwingen, aber das scheint auch nicht richtig zu funktionieren.

            Wenn keine Werte mehr geliefert werden, erfolgt auch kein Triggern. Ein Wertevergleich ist nicht erforderlich. Vorschlag (nicht getestet):

            Danke, aber mir ist noch nicht ganz klar was "Ventil" jetzt ist. Oben im ersten "Falls" ist es wohl direkt das Ventil auf/zu.

            Aber was bedeutet es unten? Das ist doch eine Variable?
            7a57d3b7-ac34-40c3-8439-adec2296256d-grafik.png

            Welche ObjektID soll ich da einbinden/ansteuern?
            Und bei "Falls Ventil" - Falls Ventil was? Also worauf wird dort abgefragt?

            So ganz verstehe ich es leider noch nicht.

            Gruß Frank…

            paul53P 1 Antwort Letzte Antwort
            0
            • M maniac

              @paul53 sagte in Tankfüllung überwachen / Notaus:

              @maniac sagte:

              mit Timeout eine Abschaltung zu erzwingen, aber das scheint auch nicht richtig zu funktionieren.

              Wenn keine Werte mehr geliefert werden, erfolgt auch kein Triggern. Ein Wertevergleich ist nicht erforderlich. Vorschlag (nicht getestet):

              Danke, aber mir ist noch nicht ganz klar was "Ventil" jetzt ist. Oben im ersten "Falls" ist es wohl direkt das Ventil auf/zu.

              Aber was bedeutet es unten? Das ist doch eine Variable?
              7a57d3b7-ac34-40c3-8439-adec2296256d-grafik.png

              Welche ObjektID soll ich da einbinden/ansteuern?
              Und bei "Falls Ventil" - Falls Ventil was? Also worauf wird dort abgefragt?

              So ganz verstehe ich es leider noch nicht.

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

              @maniac sagte:

              Welche ObjektID soll ich da einbinden/ansteuern?

              In allen 3 Fällen ist das der Datenpunkt des Ventil-Aktors "Ventil_Frischwasser".

              Und bei "Falls Ventil" - Falls Ventil was?

              falls ventil entspricht falls ventil == wahr

              @maniac sagte in Tankfüllung überwachen / Notaus:

              Aber was bedeutet es unten? Das ist doch eine Variable?

              Ja, die den gleichen Wert hat wie der Ventil-Aktor, denn der wurde unmittelbar davor mit dem Wert der Variablen gesteuert.

              Die Variable ventil ist der Sollzustand des Aktors. Der Aktor wird nur gesteuert, wenn Sollzustand != Istzustand (obere falls-Abfrage), um nicht unnötige Störungen zu erzeugen.

              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

              M 1 Antwort Letzte Antwort
              1
              • paul53P paul53

                @maniac sagte:

                Welche ObjektID soll ich da einbinden/ansteuern?

                In allen 3 Fällen ist das der Datenpunkt des Ventil-Aktors "Ventil_Frischwasser".

                Und bei "Falls Ventil" - Falls Ventil was?

                falls ventil entspricht falls ventil == wahr

                @maniac sagte in Tankfüllung überwachen / Notaus:

                Aber was bedeutet es unten? Das ist doch eine Variable?

                Ja, die den gleichen Wert hat wie der Ventil-Aktor, denn der wurde unmittelbar davor mit dem Wert der Variablen gesteuert.

                Die Variable ventil ist der Sollzustand des Aktors. Der Aktor wird nur gesteuert, wenn Sollzustand != Istzustand (obere falls-Abfrage), um nicht unnötige Störungen zu erzeugen.

                M Offline
                M Offline
                maniac
                schrieb am zuletzt editiert von
                #7

                @paul53 sagte in Tankfüllung überwachen / Notaus:

                Ja, die den gleichen Wert hat wie der Ventil-Aktor, denn der wurde unmittelbar davor mit dem Wert der Variablen gesteuert.

                Die Variable ventil ist der Sollzustand des Aktors. Der Aktor wird nur gesteuert, wenn Sollzustand != Istzustand (obere falls-Abfrage), um nicht unnötige Störungen zu erzeugen.

                Jetzt habe ich es begriffen.
                So scheint es jetzt im Test zu funktionieren.

                c5d85378-ba09-4761-bbd0-52a33ad274f2-grafik.png

                Vielen Dank..

                Gruß Frank…

                paul53P 1 Antwort Letzte Antwort
                0
                • M maniac

                  @paul53 sagte in Tankfüllung überwachen / Notaus:

                  Ja, die den gleichen Wert hat wie der Ventil-Aktor, denn der wurde unmittelbar davor mit dem Wert der Variablen gesteuert.

                  Die Variable ventil ist der Sollzustand des Aktors. Der Aktor wird nur gesteuert, wenn Sollzustand != Istzustand (obere falls-Abfrage), um nicht unnötige Störungen zu erzeugen.

                  Jetzt habe ich es begriffen.
                  So scheint es jetzt im Test zu funktionieren.

                  c5d85378-ba09-4761-bbd0-52a33ad274f2-grafik.png

                  Vielen Dank..

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

                  @maniac sagte:

                  So scheint es jetzt im Test zu funktionieren.

                  Lass die Abfragen im 2-Punkt-Regler weg und mache es mit dem Telegramm besser so:

                  Blockly_temp.JPG

                  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

                  M 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @maniac sagte:

                    So scheint es jetzt im Test zu funktionieren.

                    Lass die Abfragen im 2-Punkt-Regler weg und mache es mit dem Telegramm besser so:

                    Blockly_temp.JPG

                    M Offline
                    M Offline
                    maniac
                    schrieb am zuletzt editiert von
                    #9

                    @paul53 sagte in Tankfüllung überwachen / Notaus:

                    @maniac sagte:

                    So scheint es jetzt im Test zu funktionieren.

                    Lass die Abfragen im 2-Punkt-Regler weg und mache es mit dem Telegramm besser so:

                    Blockly_temp.JPG

                    Das klappt nicht, bzw. nicht so wie geplant. Ich bekomme dann, jedesmal wenn sich der Wert ändert, eine Nachricht.

                    Das wird dann doch zuviel.
                    Abgesehen davon fliegen die Telegram eh später wieder raus.

                    Aber danke für den Hinweis.

                    Gruß Frank…

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • M maniac

                      @paul53 sagte in Tankfüllung überwachen / Notaus:

                      @maniac sagte:

                      So scheint es jetzt im Test zu funktionieren.

                      Lass die Abfragen im 2-Punkt-Regler weg und mache es mit dem Telegramm besser so:

                      Blockly_temp.JPG

                      Das klappt nicht, bzw. nicht so wie geplant. Ich bekomme dann, jedesmal wenn sich der Wert ändert, eine Nachricht.

                      Das wird dann doch zuviel.
                      Abgesehen davon fliegen die Telegram eh später wieder raus.

                      Aber danke für den Hinweis.

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

                      @maniac sagte:

                      jedesmal wenn sich der Wert ändert, eine Nachricht.

                      Das kann nicht sein, sondern nur, wenn Ventil Sollzustand != Istzustand.

                      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
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      583

                      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