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. Pool Dosierscript PH und Chlor

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    492

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

Pool Dosierscript PH und Chlor

Geplant Angeheftet Gesperrt Verschoben Blockly
42 Beiträge 4 Kommentatoren 4.5k Aufrufe 3 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.
  • paul53P paul53

    @d3ltoroxp sagte: Das Funktion wird ständig neu gestartet

    Wozu soll die Abfrage von Switch gut sein?
    Der Telegram-Block rechts unten ist umsonst, denn er wird nie ausgeführt.

    Das Ausschalten (Beispiel Redox) mache besser so, da sonst mehrere Nachrichten kommen können:

    Blockly_temp.JPG

    D3ltoroxpD Offline
    D3ltoroxpD Offline
    D3ltoroxp
    schrieb am zuletzt editiert von D3ltoroxp
    #20

    @paul53 said in Pool Dosierscript PH und Chlor:

    @d3ltoroxp sagte: Das Funktion wird ständig neu gestartet

    Wozu soll die Abfrage von Switch gut sein?

    Das ist die Poolpumpe, die muss laufen, sonst ist es schlecht zu dosieren, da dann nichts zirkuliert und das Chlor im Rohr steht und immer mehr wird, weil an der Messzelle gar nichts ankommt.
    Bei deinem Beispiel, startet die Funktion ständig neu, das heißt der 5min Zyklus kommt gar nicht zum Einsatz, weil er ja immer wieder gestoppt wird. Hier wird ständig pH nachdosiert.

    1 Antwort Letzte Antwort
    0
    • D3ltoroxpD Offline
      D3ltoroxpD Offline
      D3ltoroxp
      schrieb am zuletzt editiert von D3ltoroxp
      #21

      So ist mein aktuelles Script...

      Ich weiß es sieht nicht so aus wie deins, so kann ich aber die Schritte nachvollziehen...

      416e04f4-7d0f-47e1-be6e-a3064398a7ea-image.png

      Gibt es die Möglichkeit, das der Trigger die Funktion nicht neu startet wenn " ausführen zirkulieren..." läuft ? Kann das erkannt werden und mit als Bedingung eingebaut werden ?

      So läuft es theoretisch, aber teilweise bricht er dann irgendwann ab und es passiert nichts mehr.

      So müsste ja die Funktion in sich als Schleife laufen, bis dann der Wert passt. Aber es fliegt immer wieder aus dem "ausführen zirkulieren..." raus. Manchmal läufts durch.

      8:59:38.478	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_Wert_ueberwachen: dosieren Script pH
      18:59:38.478	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_Wert_ueberwachen: pH Pumpe EIN !!
      18:59:38.478	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_Wert_ueberwachen: ph Wert ok getriggert
      

      Es stoppt dann z.b. einfach so. Das passiert durch neu getriggert ? Dann stoppt er die Timeouts aber sollte doch die Funktion neu starten ?

      paul53P 1 Antwort Letzte Antwort
      0
      • D3ltoroxpD D3ltoroxp

        So ist mein aktuelles Script...

        Ich weiß es sieht nicht so aus wie deins, so kann ich aber die Schritte nachvollziehen...

        416e04f4-7d0f-47e1-be6e-a3064398a7ea-image.png

        Gibt es die Möglichkeit, das der Trigger die Funktion nicht neu startet wenn " ausführen zirkulieren..." läuft ? Kann das erkannt werden und mit als Bedingung eingebaut werden ?

        So läuft es theoretisch, aber teilweise bricht er dann irgendwann ab und es passiert nichts mehr.

        So müsste ja die Funktion in sich als Schleife laufen, bis dann der Wert passt. Aber es fliegt immer wieder aus dem "ausführen zirkulieren..." raus. Manchmal läufts durch.

        8:59:38.478	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_Wert_ueberwachen: dosieren Script pH
        18:59:38.478	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_Wert_ueberwachen: pH Pumpe EIN !!
        18:59:38.478	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_Wert_ueberwachen: ph Wert ok getriggert
        

        Es stoppt dann z.b. einfach so. Das passiert durch neu getriggert ? Dann stoppt er die Timeouts aber sollte doch die Funktion neu starten ?

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

        @d3ltoroxp
        Die Timer müssen gestoppt werden, wenn "ok" wahr wird, und die Funktion muss aufgerufen werden, wenn "ok" falsch wird.

        Blockly_temp.JPG

        Die Abfrage des pH-Wertes in der Funktion ist unnötig: Das wird durch Starten der Funktion und Stoppen der Timer erreicht.

        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

        D3ltoroxpD 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @d3ltoroxp
          Die Timer müssen gestoppt werden, wenn "ok" wahr wird, und die Funktion muss aufgerufen werden, wenn "ok" falsch wird.

          Blockly_temp.JPG

          Die Abfrage des pH-Wertes in der Funktion ist unnötig: Das wird durch Starten der Funktion und Stoppen der Timer erreicht.

          D3ltoroxpD Offline
          D3ltoroxpD Offline
          D3ltoroxp
          schrieb am zuletzt editiert von D3ltoroxp
          #23

          @paul53 said in Pool Dosierscript PH und Chlor:

          @d3ltoroxp
          Die Timer müssen gestoppt werden, wenn "ok" wahr wird, und die Funktion muss aufgerufen werden, wenn "ok" falsch wird.

          Blockly_temp.JPG

          Die Abfrage des pH-Wertes in der Funktion ist unnötig: Das wird durch Starten der Funktion und Stoppen der Timer erreicht.

          So siehts nun aus.

          748e6553-468f-4acb-87f2-197fee54c7e4-image.png

          Gleiche Problem er startet einmal, dann passiert irgendwie nichts mehr. Kann man hier nicht sagen, wenn da schon eine Funktion bzw. ein " Ausführen Timer" läuft, starte die Funktion nicht noch mal ?

          11:42:23.602	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_dosieren: pH dosierung Stop
          11:45:25.120	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_dosieren: pH Pumpe EIN !
          11:45:25.121	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_dosieren: pH dosierung Start
          

          EDIT:
          Ich hab nur das laufen, nach Pumpe EIN passiert gar nichts mehr.

          4a7e9834-a0b1-4368-9a31-8efe923f3058-image.png

          Egal wie oft ich die Funktion starte.

          paul53P 1 Antwort Letzte Antwort
          0
          • D3ltoroxpD D3ltoroxp

            @paul53 said in Pool Dosierscript PH und Chlor:

            @d3ltoroxp
            Die Timer müssen gestoppt werden, wenn "ok" wahr wird, und die Funktion muss aufgerufen werden, wenn "ok" falsch wird.

            Blockly_temp.JPG

            Die Abfrage des pH-Wertes in der Funktion ist unnötig: Das wird durch Starten der Funktion und Stoppen der Timer erreicht.

            So siehts nun aus.

            748e6553-468f-4acb-87f2-197fee54c7e4-image.png

            Gleiche Problem er startet einmal, dann passiert irgendwie nichts mehr. Kann man hier nicht sagen, wenn da schon eine Funktion bzw. ein " Ausführen Timer" läuft, starte die Funktion nicht noch mal ?

            11:42:23.602	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_dosieren: pH dosierung Stop
            11:45:25.120	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_dosieren: pH Pumpe EIN !
            11:45:25.121	error	javascript.0 (658) script.js.Pooltechnik.pH_Chlor_dosieren: pH dosierung Start
            

            EDIT:
            Ich hab nur das laufen, nach Pumpe EIN passiert gar nichts mehr.

            4a7e9834-a0b1-4368-9a31-8efe923f3058-image.png

            Egal wie oft ich die Funktion starte.

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

            @d3ltoroxp sagte: er startet einmal, dann passiert irgendwie nichts mehr.

            Das kann ich anhand des Blockly-Bildes nicht nachvollziehen. Nach einer Minute muss ausgeschaltet werden, es sei denn "ok" wird innerhalb der Minute wahr - dann muss aber "stop" im Log erscheinen.

            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

            D3ltoroxpD 2 Antworten Letzte Antwort
            0
            • paul53P paul53

              @d3ltoroxp sagte: er startet einmal, dann passiert irgendwie nichts mehr.

              Das kann ich anhand des Blockly-Bildes nicht nachvollziehen. Nach einer Minute muss ausgeschaltet werden, es sei denn "ok" wird innerhalb der Minute wahr - dann muss aber "stop" im Log erscheinen.

              D3ltoroxpD Offline
              D3ltoroxpD Offline
              D3ltoroxp
              schrieb am zuletzt editiert von
              #25

              @paul53 So geht es, so läuft das Script in Schleife.

              12eaf4bc-2946-4e69-8080-8725b3f30eec-image.png

              Wenn ich die "Ausführen Timer" nacheinander mache.

              1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @d3ltoroxp sagte: er startet einmal, dann passiert irgendwie nichts mehr.

                Das kann ich anhand des Blockly-Bildes nicht nachvollziehen. Nach einer Minute muss ausgeschaltet werden, es sei denn "ok" wird innerhalb der Minute wahr - dann muss aber "stop" im Log erscheinen.

                D3ltoroxpD Offline
                D3ltoroxpD Offline
                D3ltoroxp
                schrieb am zuletzt editiert von
                #26

                @paul53 pH Wert ist ok, warum dosiert sie trotzdem ?

                f7a743e0-c0f7-4d55-ba11-58d666633725-image.png

                Bin leider viel zu sehr im Minus, sie dürfte doch gar nicht Pumpen, wenn pH Wert ok.

                paul53P 1 Antwort Letzte Antwort
                0
                • D3ltoroxpD D3ltoroxp

                  @paul53 pH Wert ist ok, warum dosiert sie trotzdem ?

                  f7a743e0-c0f7-4d55-ba11-58d666633725-image.png

                  Bin leider viel zu sehr im Minus, sie dürfte doch gar nicht Pumpen, wenn pH Wert ok.

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

                  @d3ltoroxp sagte: sie dürfte doch gar nicht Pumpen, wenn pH Wert ok.

                  Wurde die Änderung von "ph_Wert_ok" von falsch auf wahr nicht mitbekommen? Offenbar wurde "zirkuliere_pH" nicht gestoppt. Das darf nicht passieren, denn am Skript liegt es nicht: Irgend etwas läuft bei Dir nicht rund.

                  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

                  D3ltoroxpD 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @d3ltoroxp sagte: sie dürfte doch gar nicht Pumpen, wenn pH Wert ok.

                    Wurde die Änderung von "ph_Wert_ok" von falsch auf wahr nicht mitbekommen? Offenbar wurde "zirkuliere_pH" nicht gestoppt. Das darf nicht passieren, denn am Skript liegt es nicht: Irgend etwas läuft bei Dir nicht rund.

                    D3ltoroxpD Offline
                    D3ltoroxpD Offline
                    D3ltoroxp
                    schrieb am zuletzt editiert von
                    #28

                    @paul53 Das Gefühl hab ich auch. Ich kann ja auch nicht Ausführen Timer in Ausführen Timer packen, die liefen ja dann gar nicht durch.

                    1 Antwort Letzte Antwort
                    0
                    • D3ltoroxpD Offline
                      D3ltoroxpD Offline
                      D3ltoroxp
                      schrieb am zuletzt editiert von
                      #29

                      Jetzt hab ich es noch mal ein wenig mehr überwacht...

                      681b1a3f-f9a7-4398-b66f-8890bbb3c60b-image.png

                      So sollte zumindest dennoch dann die Funktion stoppen, sobald der Wert erreicht ist.

                      1 Antwort Letzte Antwort
                      0
                      • D3ltoroxpD Offline
                        D3ltoroxpD Offline
                        D3ltoroxp
                        schrieb am zuletzt editiert von
                        #30

                        Also Rund läuft das Script leider nicht. Mal kann es sein er Chlort wirklich durch, über längeren Zeitraum, bis es passt. Oft mals aber auch bloß 1-2x dosieren danach ist einfach Feierabend. Startet aber auch nicht mehr Tage lang.
                        Was könnte man da noch anders machen.

                        Hier noch mal das ganze Script.

                        Pool Chloren.txt

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • D3ltoroxpD D3ltoroxp

                          Also Rund läuft das Script leider nicht. Mal kann es sein er Chlort wirklich durch, über längeren Zeitraum, bis es passt. Oft mals aber auch bloß 1-2x dosieren danach ist einfach Feierabend. Startet aber auch nicht mehr Tage lang.
                          Was könnte man da noch anders machen.

                          Hier noch mal das ganze Script.

                          Pool Chloren.txt

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

                          @d3ltoroxp sagte: Hier noch mal das ganze Script.

                          Das ist nur ein kleiner Teil.

                          Hier passt der Funktionsaufruf nicht:

                          Blockly_temp.JPG

                          (Aus dem Bild vom 22.Juni)

                          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

                          D3ltoroxpD 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @d3ltoroxp sagte: Hier noch mal das ganze Script.

                            Das ist nur ein kleiner Teil.

                            Hier passt der Funktionsaufruf nicht:

                            Blockly_temp.JPG

                            (Aus dem Bild vom 22.Juni)

                            D3ltoroxpD Offline
                            D3ltoroxpD Offline
                            D3ltoroxp
                            schrieb am zuletzt editiert von D3ltoroxp
                            #32

                            @paul53 Das hab ich jetzt in der Vergangenheit so abgeändert.

                            422d4ed2-544f-4213-b323-08a85e4f79f0-image.png

                            Kann ja nur eigentlich daher kommen, das er den Timer irgendwie stoppt und dann eben nicht mehr Triggert, weil der Wert sich ja nicht mehr über den Sollwert bewegt. Man müsste irgendwie reagieren können, sobald der Wert immer schlechter wird, das dann wieder Dosiert wird. Nicht nur einmal angesteuert, wenn er den Wert unterläuft, sondern auch wenn er weiter im Wert sinkt. Geht sowas ? Oder kann ich nicht mit so einer Schleife arbeiten ?

                            239f8036-6659-4cd4-a5f8-60c1efc4c1ea-image.png

                            Wiederholen solange, bis Wert true ?

                            So lange würde das doch in der Schleife laufen, den 5 min Timer mit einbauen.

                            30a0d632-bd16-4010-91f4-0d65c291cbc4-image.png

                            1 Antwort Letzte Antwort
                            0
                            • Q Offline
                              Q Offline
                              Qlink
                              schrieb am zuletzt editiert von
                              #33

                              @D3ltoroxp

                              Hast du das Script dann eigentlich stabil zum Laufen gebracht und hast es im Einsatz ?
                              Ich bin nämlich ebenfalls auf der Suche nach einer Blockly Version für die Dosierung von PH und Chlor.

                              Ein funktionierender Export würde mir da sehr helfen.

                              Danke.

                              Beste Grüße

                              1 Antwort Letzte Antwort
                              1
                              • Q Offline
                                Q Offline
                                Qlink
                                schrieb am zuletzt editiert von
                                #34

                                @D3ltoroxp über eine Rückmeldung würde ich mich freuen :)

                                D3ltoroxpD 1 Antwort Letzte Antwort
                                0
                                • Q Qlink

                                  @D3ltoroxp über eine Rückmeldung würde ich mich freuen :)

                                  D3ltoroxpD Offline
                                  D3ltoroxpD Offline
                                  D3ltoroxp
                                  schrieb am zuletzt editiert von
                                  #35

                                  @qlink Sorry ich hatte hier nicht mehr wirklich rein geschaut. Ich meine es lief jetzt weitestgehend stabil. Letztes Jahr hab ich nicht wirklich danach geschaut und die Werte haben immer gepasst. Pool war auch immer klar und nie milchig oder grün. Ich kann hier das Script gerne exportieren.

                                  Pooltechnik.pH_Chlor_dosieren.xml

                                  Vllt kannst du damit was anfangen. Vllt verbesserst du auch was, dann wäre es schön wenn du das hier auch mitteilen würdest.

                                  1 Antwort Letzte Antwort
                                  0
                                  • Q Offline
                                    Q Offline
                                    Qlink
                                    schrieb am zuletzt editiert von
                                    #36

                                    @D3ltoroxp

                                    Kannst du mir die beiden markierten Stellen aus deinem Script in Worten erklären ?

                                    b06db097-f37d-4c88-8fa8-c096c41998f3-image.png

                                    Was macht "falls WERT" ?

                                    Heißt das automatisch "falls WERT = true" oder wie darf ich das verstehen ?

                                    Danke.

                                    Beste Grüße

                                    D3ltoroxpD 1 Antwort Letzte Antwort
                                    0
                                    • Q Qlink

                                      @D3ltoroxp

                                      Kannst du mir die beiden markierten Stellen aus deinem Script in Worten erklären ?

                                      b06db097-f37d-4c88-8fa8-c096c41998f3-image.png

                                      Was macht "falls WERT" ?

                                      Heißt das automatisch "falls WERT = true" oder wie darf ich das verstehen ?

                                      Danke.

                                      Beste Grüße

                                      D3ltoroxpD Offline
                                      D3ltoroxpD Offline
                                      D3ltoroxp
                                      schrieb am zuletzt editiert von
                                      #37

                                      @qlink Genau, wenn man direkt den Wert hinter Falls hängt heißt das true. Also wenn Wert vom Objekt true dann..

                                      Da spart man sich halt nen kleinen extra Block mit Wert = true.

                                      1 Antwort Letzte Antwort
                                      1
                                      • Q Offline
                                        Q Offline
                                        Qlink
                                        schrieb am zuletzt editiert von
                                        #38

                                        @D3ltoroxp

                                        Ich hab jetzt dein Script entsprechend auf meine Umgebung angepasst und großteils 1:1 übernommen.

                                        Ich möchte allerdings als zusätzliche Sicherheit die Auto Timer Off Funktion von meinem Shelly 2PM Gen3 für die beiden Dosierpumpen nutzen.
                                        Sollte WLAN o.ä. genau während der Dosierung ausfallen, so müsste der Shelly damit trotzdem nach 60 Sekunden ausschalten wäre mein Verständnis.

                                        1. Habe ich das dann auch entsprechend richtig im Script eingebaut ?
                                        2. Wie gehst du mit der Situation um, falls während der Dosierung die Verbindung abbricht ?

                                        1a42ed1d-6744-4957-8366-6ebc18edbcc3-image.png

                                        R 1 Antwort Letzte Antwort
                                        0
                                        • Q Qlink

                                          @D3ltoroxp

                                          Ich hab jetzt dein Script entsprechend auf meine Umgebung angepasst und großteils 1:1 übernommen.

                                          Ich möchte allerdings als zusätzliche Sicherheit die Auto Timer Off Funktion von meinem Shelly 2PM Gen3 für die beiden Dosierpumpen nutzen.
                                          Sollte WLAN o.ä. genau während der Dosierung ausfallen, so müsste der Shelly damit trotzdem nach 60 Sekunden ausschalten wäre mein Verständnis.

                                          1. Habe ich das dann auch entsprechend richtig im Script eingebaut ?
                                          2. Wie gehst du mit der Situation um, falls während der Dosierung die Verbindung abbricht ?

                                          1a42ed1d-6744-4957-8366-6ebc18edbcc3-image.png

                                          R Offline
                                          R Offline
                                          Ralf 2
                                          schrieb am zuletzt editiert von
                                          #39

                                          @qlink
                                          Ob das im Blockly korrekt ist kann ich nicht sagen.
                                          Aber: Warum willst du die AutoOff Funktion auch im Script abbilden?
                                          Wenn der Shelly das nach einer Minute wieder abschaltet, dann würde das Skript es einfach wieder einschalten wenn es noch nicht OK ist (z.B. Chlor leer,...) Bei meinen Kühl-/Gefrierschränken schalte ich den Shelly über AutoOn einfach wieder ein, die Steuerung hat das nicht zu interessieren.

                                          Ich baue hier alles so auf, das IOBroker alles steuern kann, aber es grundsätzlich beim Ausfall vom IOBroker/Netzwerk alles weiterhin sicher funktioniert und über normale Schalter bedienbar ist.

                                          Gruß Ralf

                                          Q 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.5k

                                          Benutzer

                                          81.8k

                                          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