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. true Abfrage alle 2 Sek.

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

true Abfrage alle 2 Sek.

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

    Hey ho
    Ist es möglich einen datenpunkt alle x Sekunden den Status abzufragen wenn false soll aus und wenn true mache x
    und den datenpunkt nach wert xy aus einem anderen datenpunkt komplett für den Rest des Tages stoppen?
    Eine Hilfe wäre spitze.
    Hatte schon mal im Netz mehrere Male gesucht aber nichts ähnliches gefunden.

    Dr. BakteriusD 1 Antwort Letzte Antwort
    0
    • B Offline
      B Offline
      Brati
      schrieb am zuletzt editiert von
      #2

      Hallo,

      sich selbst aufrufende Funktion ist das Schlüsselwort. So ganz verstehe ich aber nicht was du möchtest.

      Du kannst ja auch auf die Änderung des State reagieren und wenn er sich auf true ändert x auslösen, wenn er auf false steht passiert halt nichts.

      Das kannst du dir im Blockly zusammenklicken.

      Grüße

      Brati

      CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

      AphofisA 1 Antwort Letzte Antwort
      0
      • B Brati

        Hallo,

        sich selbst aufrufende Funktion ist das Schlüsselwort. So ganz verstehe ich aber nicht was du möchtest.

        Du kannst ja auch auf die Änderung des State reagieren und wenn er sich auf true ändert x auslösen, wenn er auf false steht passiert halt nichts.

        Das kannst du dir im Blockly zusammenklicken.

        Grüße

        Brati

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

        @Brati
        Also folgendes
        Ich habe einen schwimmschalter
        Der meinem Vlies Motor im aquarium steuert und ich möchte zb begrenzen das dass Vlies wirklich nur läuft wenn true ist mit 1-3 Sek. Verzögerung und aber nicht mehr als 1000 ms pro Minute da ich dann darüber auch ein wenig den Vlies Verbrauch reduzieren kann da der Beipass im Vlies Kasten sehr empfindlich ist. Besser wäre es den Vlies Motor zu begrenzen. Da über den Zustand vom Vlies Motor aber die Verbrauchs Steuerung läuft wollte ich den Schwimmer begrenzen. Da sonst beim Verbrauch falsche Werte gemessen werden.
        Verbrauch wird in mm pro Millisekunde errechnet.
        Das selbe wollte ich bei meiner Osmose Niveau Ausgleichs Steuerung auch anwenden. Das nicht mehr als zb 1 Liter pro Std. gepumpt wird! Da ich noch nicht genau weiß ob die Relais Karte spinnt oder die Steuerung da ich manchmal werte habe die nicht stimmen können beim Verbrauch. Dann muss ich die Werte von Hand korrigieren und vielleicht ist es auch möglich aufzuzeichnen wie lange true eines datenpunktes aktiv war in 24 Std. der gesamte Verbrauch wird auch per sql geloggt in einer Datenbank auf meiner diskstation. dann kann man daraus noch mal eine kontroll Steuerung bauen dann habe ich zur Verbrauchs Steuerung noch mal einen Vergleichs wert.
        Meine Steuerungen für den Verbrauch Rechnen über einen multiplikator und machen aus ms dann cm Verbrauch und Osmose wird aus ms dann ml Bzw Liter errechnet.

        B 1 Antwort Letzte Antwort
        0
        • AphofisA Aphofis

          @Brati
          Also folgendes
          Ich habe einen schwimmschalter
          Der meinem Vlies Motor im aquarium steuert und ich möchte zb begrenzen das dass Vlies wirklich nur läuft wenn true ist mit 1-3 Sek. Verzögerung und aber nicht mehr als 1000 ms pro Minute da ich dann darüber auch ein wenig den Vlies Verbrauch reduzieren kann da der Beipass im Vlies Kasten sehr empfindlich ist. Besser wäre es den Vlies Motor zu begrenzen. Da über den Zustand vom Vlies Motor aber die Verbrauchs Steuerung läuft wollte ich den Schwimmer begrenzen. Da sonst beim Verbrauch falsche Werte gemessen werden.
          Verbrauch wird in mm pro Millisekunde errechnet.
          Das selbe wollte ich bei meiner Osmose Niveau Ausgleichs Steuerung auch anwenden. Das nicht mehr als zb 1 Liter pro Std. gepumpt wird! Da ich noch nicht genau weiß ob die Relais Karte spinnt oder die Steuerung da ich manchmal werte habe die nicht stimmen können beim Verbrauch. Dann muss ich die Werte von Hand korrigieren und vielleicht ist es auch möglich aufzuzeichnen wie lange true eines datenpunktes aktiv war in 24 Std. der gesamte Verbrauch wird auch per sql geloggt in einer Datenbank auf meiner diskstation. dann kann man daraus noch mal eine kontroll Steuerung bauen dann habe ich zur Verbrauchs Steuerung noch mal einen Vergleichs wert.
          Meine Steuerungen für den Verbrauch Rechnen über einen multiplikator und machen aus ms dann cm Verbrauch und Osmose wird aus ms dann ml Bzw Liter errechnet.

          B Offline
          B Offline
          Brati
          schrieb am zuletzt editiert von
          #4

          @Aphofis Hab gerade wenig Zeit und verstehe die Steuerung immer noch nicht. Was ist ein Vlies Motor und wie lässt der sich im ioBroker ansteuern?

          Ein Ansatz wäre:

          Wenn der Schwimmschalter auf true schaltet, wird 2s später das Abschalten geprüft. Das wird aber nur ausgeführt, wenn er noch auf true ist. Also wird ein kurzes schwappen ausgeblendet.

          var timeout;
          
          function Abschalten() {
            if (getState("ID Schwimmschalter").val === true) 
                  setState("ID Pumpe", false);
          }
          
          // Prüfung Schwimmschalter State und 2s später Auslösung Abschaltung
          on({id: "ID Schwimmschalter", val: true, ack: true}, function (obj) {
              timeout = setTimeout(function () {
                Abschalten();
              }, 2000);
          });
          
          

          Das kann man natürlich auch umdrehen und auf false triggern.

          Grüße

          Brati

          CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

          AphofisA 1 Antwort Letzte Antwort
          0
          • AphofisA Aphofis

            Hey ho
            Ist es möglich einen datenpunkt alle x Sekunden den Status abzufragen wenn false soll aus und wenn true mache x
            und den datenpunkt nach wert xy aus einem anderen datenpunkt komplett für den Rest des Tages stoppen?
            Eine Hilfe wäre spitze.
            Hatte schon mal im Netz mehrere Male gesucht aber nichts ähnliches gefunden.

            Dr. BakteriusD Offline
            Dr. BakteriusD Offline
            Dr. Bakterius
            Most Active
            schrieb am zuletzt editiert von Dr. Bakterius
            #5

            @Aphofis Ich glaube, es wäre für dich und alle die dir helfen wollen gut, mal folgendes zu probieren:

            Schreibe auf wann du was machen möchtest. So in der Art "WENN Datenpunkt_1 = WAHR DANN SCHALTE Ausgang_1 EIN FÜR 2 Sekunden".

            oder

            ALLE 2 Sekunden
            WENN Datenpunkt_1 = WAHR UND Heutige_Betriebsdauer <= 10 DANN ...

            Dann wird dir vielleicht selbst klar, wie du das in Blockly umsetzen kannst bzw. kann man dir dann hier relativ leicht helfen. Doch mit deiner Beschreibung kann ich auch nichts anfangen weil ich die Aufgabe nicht verstehe.

            1 Antwort Letzte Antwort
            0
            • B Brati

              @Aphofis Hab gerade wenig Zeit und verstehe die Steuerung immer noch nicht. Was ist ein Vlies Motor und wie lässt der sich im ioBroker ansteuern?

              Ein Ansatz wäre:

              Wenn der Schwimmschalter auf true schaltet, wird 2s später das Abschalten geprüft. Das wird aber nur ausgeführt, wenn er noch auf true ist. Also wird ein kurzes schwappen ausgeblendet.

              var timeout;
              
              function Abschalten() {
                if (getState("ID Schwimmschalter").val === true) 
                      setState("ID Pumpe", false);
              }
              
              // Prüfung Schwimmschalter State und 2s später Auslösung Abschaltung
              on({id: "ID Schwimmschalter", val: true, ack: true}, function (obj) {
                  timeout = setTimeout(function () {
                    Abschalten();
                  }, 2000);
              });
              
              

              Das kann man natürlich auch umdrehen und auf false triggern.

              Grüße

              Brati

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

              @Brati
              Kannst du das vllt auch als Blockly Code hier posten?
              Das wäre sehr nett.

              B 1 Antwort Letzte Antwort
              0
              • AphofisA Aphofis

                @Brati
                Kannst du das vllt auch als Blockly Code hier posten?
                Das wäre sehr nett.

                B Offline
                B Offline
                Brati
                schrieb am zuletzt editiert von
                #7

                @Aphofis sagte in true Abfrage alle 2 Sek.:

                @Brati
                Kannst du das vllt auch als Blockly Code hier posten?
                Das wäre sehr nett.

                Ich bin nicht so der Blockly Freund, aber das sollte passen;

                <xml xmlns="http://www.w3.org/1999/xhtml">
                 <variables>
                   <variable type="undefined" id="timeout">timeout</variable>
                   <variable type="" id="}]r5t%}7KgcAASS(k9!!">Schwimmschalter</variable>
                 </variables>
                 <block type="procedures_defnoreturn" id="$L{ieOwN-~dyS6^_B$|9" x="138" y="88">
                   <field name="NAME">Abschalten</field>
                   <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                   <statement name="STACK">
                     <block type="controls_if" id="_TYbL.9|Hjss}Yr#Zn__">
                       <value name="IF0">
                         <block type="logic_compare" id="4k3$)F+@J81Qijf0D^To">
                           <field name="OP">EQ</field>
                           <value name="A">
                             <block type="variables_get" id="*jL=s^t)GiBpS-@[Z4yU">
                               <field name="VAR" id="}]r5t%}7KgcAASS(k9!!" variabletype="">Schwimmschalter</field>
                             </block>
                           </value>
                           <value name="B">
                             <block type="logic_boolean" id="yrRZ-1`yaM%CLe!Q]dbc">
                               <field name="BOOL">TRUE</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <statement name="DO0">
                         <block type="control" id="841mIdN675:WOH(-SDEl">
                           <mutation delay_input="false"></mutation>
                           <field name="OID">Object ID</field>
                           <field name="WITH_DELAY">FALSE</field>
                           <value name="VALUE">
                             <block type="logic_boolean" id="U`r;}a5p:Cw*eYgT.L[y">
                               <field name="BOOL">FALSE</field>
                             </block>
                           </value>
                         </block>
                       </statement>
                     </block>
                   </statement>
                 </block>
                 <block type="on_ext" id="O{|n_o^=X$tpf5$|:JWS" x="137" y="238">
                   <mutation items="1"></mutation>
                   <field name="CONDITION">true</field>
                   <field name="ACK_CONDITION"></field>
                   <value name="OID0">
                     <shadow type="field_oid" id="Br4b+5qLzBhT_Zi:nbSG">
                       <field name="oid">default</field>
                     </shadow>
                   </value>
                   <statement name="STATEMENT">
                     <block type="timeouts_settimeout" id=";`yh^JS+sRT.WfWpBU+{">
                       <field name="NAME">timeout</field>
                       <field name="DELAY">2</field>
                       <field name="UNIT">sec</field>
                       <statement name="STATEMENT">
                         <block type="procedures_callnoreturn" id="*rpHAQc{X6nm32%-H5v1">
                           <mutation name="Abschalten"></mutation>
                         </block>
                       </statement>
                     </block>
                   </statement>
                 </block>
                </xml>
                

                Zwischenablage01.jpg

                Grüße

                Brati

                CCU2 - 46 Geräte, ioBroker auf Intel NUC (DN2820FYKH) mit Tab als Frontend, Projekt Gartenhaus mit HM

                AphofisA 1 Antwort Letzte Antwort
                1
                • B Brati

                  @Aphofis sagte in true Abfrage alle 2 Sek.:

                  @Brati
                  Kannst du das vllt auch als Blockly Code hier posten?
                  Das wäre sehr nett.

                  Ich bin nicht so der Blockly Freund, aber das sollte passen;

                  <xml xmlns="http://www.w3.org/1999/xhtml">
                   <variables>
                     <variable type="undefined" id="timeout">timeout</variable>
                     <variable type="" id="}]r5t%}7KgcAASS(k9!!">Schwimmschalter</variable>
                   </variables>
                   <block type="procedures_defnoreturn" id="$L{ieOwN-~dyS6^_B$|9" x="138" y="88">
                     <field name="NAME">Abschalten</field>
                     <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                     <statement name="STACK">
                       <block type="controls_if" id="_TYbL.9|Hjss}Yr#Zn__">
                         <value name="IF0">
                           <block type="logic_compare" id="4k3$)F+@J81Qijf0D^To">
                             <field name="OP">EQ</field>
                             <value name="A">
                               <block type="variables_get" id="*jL=s^t)GiBpS-@[Z4yU">
                                 <field name="VAR" id="}]r5t%}7KgcAASS(k9!!" variabletype="">Schwimmschalter</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="logic_boolean" id="yrRZ-1`yaM%CLe!Q]dbc">
                                 <field name="BOOL">TRUE</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="control" id="841mIdN675:WOH(-SDEl">
                             <mutation delay_input="false"></mutation>
                             <field name="OID">Object ID</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="logic_boolean" id="U`r;}a5p:Cw*eYgT.L[y">
                                 <field name="BOOL">FALSE</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                       </block>
                     </statement>
                   </block>
                   <block type="on_ext" id="O{|n_o^=X$tpf5$|:JWS" x="137" y="238">
                     <mutation items="1"></mutation>
                     <field name="CONDITION">true</field>
                     <field name="ACK_CONDITION"></field>
                     <value name="OID0">
                       <shadow type="field_oid" id="Br4b+5qLzBhT_Zi:nbSG">
                         <field name="oid">default</field>
                       </shadow>
                     </value>
                     <statement name="STATEMENT">
                       <block type="timeouts_settimeout" id=";`yh^JS+sRT.WfWpBU+{">
                         <field name="NAME">timeout</field>
                         <field name="DELAY">2</field>
                         <field name="UNIT">sec</field>
                         <statement name="STATEMENT">
                           <block type="procedures_callnoreturn" id="*rpHAQc{X6nm32%-H5v1">
                             <mutation name="Abschalten"></mutation>
                           </block>
                         </statement>
                       </block>
                     </statement>
                   </block>
                  </xml>
                  

                  Zwischenablage01.jpg

                  Grüße

                  Brati

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

                  @Brati
                  Danke!
                  Werde ich morgen gleich mal testen!

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

                    So ganz habe ich das noch nicht verstanden!
                    Wo kommt denn da hin das wenn true true ist das dann das hin wo man ein Gerät steuert wenn true tatsächlich true ist.
                    Kann man das geprüfte true auch auf sagen wir mal auf 10 min. Am Tag begrenzen ?

                    AlCalzoneA 1 Antwort Letzte Antwort
                    0
                    • AphofisA Aphofis

                      So ganz habe ich das noch nicht verstanden!
                      Wo kommt denn da hin das wenn true true ist das dann das hin wo man ein Gerät steuert wenn true tatsächlich true ist.
                      Kann man das geprüfte true auch auf sagen wir mal auf 10 min. Am Tag begrenzen ?

                      AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #10

                      @Aphofis sagte in true Abfrage alle 2 Sek.:

                      Wo kommt denn da hin das wenn true true ist das dann das hin wo man ein Gerät steuert wenn true tatsächlich true ist.

                      So ganz habe ich diesen Satz nicht verstanden :dizzy_face:

                      Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                      AphofisA 1 Antwort Letzte Antwort
                      0
                      • AlCalzoneA AlCalzone

                        @Aphofis sagte in true Abfrage alle 2 Sek.:

                        Wo kommt denn da hin das wenn true true ist das dann das hin wo man ein Gerät steuert wenn true tatsächlich true ist.

                        So ganz habe ich diesen Satz nicht verstanden :dizzy_face:

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

                        @AlCalzone
                        Hihi
                        Also es soll alle x Sek. Geprüft werden ob ein Objekt true ist wenn true dann soll ein anderes Objekt gesteuert werden und wenn das Objekt false ist soll es wieder abgeschaltet werden.
                        Des weiteren soll das zu steuernde Objekt nur Max X min. In 24 std betätigt sein.
                        Hoffe so ist es verständlicher

                        arteckA AlCalzoneA 2 Antworten Letzte Antwort
                        0
                        • AphofisA Aphofis

                          @AlCalzone
                          Hihi
                          Also es soll alle x Sek. Geprüft werden ob ein Objekt true ist wenn true dann soll ein anderes Objekt gesteuert werden und wenn das Objekt false ist soll es wieder abgeschaltet werden.
                          Des weiteren soll das zu steuernde Objekt nur Max X min. In 24 std betätigt sein.
                          Hoffe so ist es verständlicher

                          arteckA Offline
                          arteckA Offline
                          arteck
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @Aphofis sag doch mal genauer was du machen willst..

                          zigbee hab ich, zwave auch, nuc's genauso und HA auch

                          1 Antwort Letzte Antwort
                          0
                          • AphofisA Aphofis

                            @AlCalzone
                            Hihi
                            Also es soll alle x Sek. Geprüft werden ob ein Objekt true ist wenn true dann soll ein anderes Objekt gesteuert werden und wenn das Objekt false ist soll es wieder abgeschaltet werden.
                            Des weiteren soll das zu steuernde Objekt nur Max X min. In 24 std betätigt sein.
                            Hoffe so ist es verständlicher

                            AlCalzoneA Offline
                            AlCalzoneA Offline
                            AlCalzone
                            Developer
                            schrieb am zuletzt editiert von
                            #13

                            @Aphofis sagte in true Abfrage alle 2 Sek.:

                            Also es soll alle x Sek. Geprüft werden ob ein Objekt true ist

                            Also üblicherweise wird in der ioBroker-Welt nicht gepollt (regelmäßige Abfrage), sondern auf Änderung eines Zustands (in deinem Fall false -> true bzw. true -> false) reagiert. Die Zeitbeschränkung kann man z.B. über Timeouts realisieren.

                            Für deine weitere Bedingung (x Minuten pro 24h) wäre allerdings noch zu klären, wann der Zähler zurück gesetzt wird. Sollen maximal x Minuten im Zeitraum von 0:00 bis 23:59 geschaltet sein, oder gleitend für jeweils die letzten 24h, oder...?

                            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                            AphofisA 1 Antwort Letzte Antwort
                            0
                            • AlCalzoneA AlCalzone

                              @Aphofis sagte in true Abfrage alle 2 Sek.:

                              Also es soll alle x Sek. Geprüft werden ob ein Objekt true ist

                              Also üblicherweise wird in der ioBroker-Welt nicht gepollt (regelmäßige Abfrage), sondern auf Änderung eines Zustands (in deinem Fall false -> true bzw. true -> false) reagiert. Die Zeitbeschränkung kann man z.B. über Timeouts realisieren.

                              Für deine weitere Bedingung (x Minuten pro 24h) wäre allerdings noch zu klären, wann der Zähler zurück gesetzt wird. Sollen maximal x Minuten im Zeitraum von 0:00 bis 23:59 geschaltet sein, oder gleitend für jeweils die letzten 24h, oder...?

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

                              @arteck
                              Also:
                              Ich versuche es zu erklären.
                              Ich möchte das der Zustand true meines Schwimmers für die Osmose Anlage alle zb. 30 Sek. Geprüft wird damit ggf dann das Magnet Ventil Osmose Wasser pumpt. Damit falls warum auch immer es zu einem Netzwerk Abbruch kommt und das Magnet Ventil auf true stehen bleibt da der Schwimmer nicht mehr erreichbar ist weil beide auf getrennten ESP8266s mit Tasmota laufen.
                              Darum will ich das nur Maximal 300 Sek. In einem 24 Std. Zyklus also von 0:00-23:59 laufen da ich nie mehr als 10 Liter Osmose Verbrauch am Tag habe und 1 ml entspricht 29,7 Millisekunden.
                              Daraus ergeben sich dann aufgerundet 300 Sek.
                              Da mein Technik Becken locker 30 Liter Wasser aufnehmen kann aber vor 3 Wochen war es so das 24 Liter Wasser kontinuierlich ins Technik Becken gepumpt wurden und der dünne Salzgehalt gefiel meinen Korallen überhaupt nicht.
                              Durch die unnormalen Dosierungen und durch abnorme Wassermengen die falsch gezählt wurden. Hatte ich alle Schwimmer und alle 12 Volt Geräte vom Pi weg genommen und auf zwei ESP8266s verteilt da diese zuverlässig laufen.
                              Trotz dessen möchte ich da eine Sicherheit einbauen das wenn Schwimmer true ist das auch wirklich Osmose ausgeglichen wird und bei definitiv false nichts passiert und das ganze nicht mehr als 300 Sek. Am Tag. Also im 24 Std. Zyklus und nachts soll dann der Zähler zurück gestellt werden.

                              arteckA AsgothianA 2 Antworten Letzte Antwort
                              0
                              • AphofisA Aphofis

                                @arteck
                                Also:
                                Ich versuche es zu erklären.
                                Ich möchte das der Zustand true meines Schwimmers für die Osmose Anlage alle zb. 30 Sek. Geprüft wird damit ggf dann das Magnet Ventil Osmose Wasser pumpt. Damit falls warum auch immer es zu einem Netzwerk Abbruch kommt und das Magnet Ventil auf true stehen bleibt da der Schwimmer nicht mehr erreichbar ist weil beide auf getrennten ESP8266s mit Tasmota laufen.
                                Darum will ich das nur Maximal 300 Sek. In einem 24 Std. Zyklus also von 0:00-23:59 laufen da ich nie mehr als 10 Liter Osmose Verbrauch am Tag habe und 1 ml entspricht 29,7 Millisekunden.
                                Daraus ergeben sich dann aufgerundet 300 Sek.
                                Da mein Technik Becken locker 30 Liter Wasser aufnehmen kann aber vor 3 Wochen war es so das 24 Liter Wasser kontinuierlich ins Technik Becken gepumpt wurden und der dünne Salzgehalt gefiel meinen Korallen überhaupt nicht.
                                Durch die unnormalen Dosierungen und durch abnorme Wassermengen die falsch gezählt wurden. Hatte ich alle Schwimmer und alle 12 Volt Geräte vom Pi weg genommen und auf zwei ESP8266s verteilt da diese zuverlässig laufen.
                                Trotz dessen möchte ich da eine Sicherheit einbauen das wenn Schwimmer true ist das auch wirklich Osmose ausgeglichen wird und bei definitiv false nichts passiert und das ganze nicht mehr als 300 Sek. Am Tag. Also im 24 Std. Zyklus und nachts soll dann der Zähler zurück gestellt werden.

                                arteckA Offline
                                arteckA Offline
                                arteck
                                Developer Most Active
                                schrieb am zuletzt editiert von
                                #15

                                @Aphofis damit kann man doch arbeiten...

                                zigbee hab ich, zwave auch, nuc's genauso und HA auch

                                1 Antwort Letzte Antwort
                                0
                                • AphofisA Aphofis

                                  @arteck
                                  Also:
                                  Ich versuche es zu erklären.
                                  Ich möchte das der Zustand true meines Schwimmers für die Osmose Anlage alle zb. 30 Sek. Geprüft wird damit ggf dann das Magnet Ventil Osmose Wasser pumpt. Damit falls warum auch immer es zu einem Netzwerk Abbruch kommt und das Magnet Ventil auf true stehen bleibt da der Schwimmer nicht mehr erreichbar ist weil beide auf getrennten ESP8266s mit Tasmota laufen.
                                  Darum will ich das nur Maximal 300 Sek. In einem 24 Std. Zyklus also von 0:00-23:59 laufen da ich nie mehr als 10 Liter Osmose Verbrauch am Tag habe und 1 ml entspricht 29,7 Millisekunden.
                                  Daraus ergeben sich dann aufgerundet 300 Sek.
                                  Da mein Technik Becken locker 30 Liter Wasser aufnehmen kann aber vor 3 Wochen war es so das 24 Liter Wasser kontinuierlich ins Technik Becken gepumpt wurden und der dünne Salzgehalt gefiel meinen Korallen überhaupt nicht.
                                  Durch die unnormalen Dosierungen und durch abnorme Wassermengen die falsch gezählt wurden. Hatte ich alle Schwimmer und alle 12 Volt Geräte vom Pi weg genommen und auf zwei ESP8266s verteilt da diese zuverlässig laufen.
                                  Trotz dessen möchte ich da eine Sicherheit einbauen das wenn Schwimmer true ist das auch wirklich Osmose ausgeglichen wird und bei definitiv false nichts passiert und das ganze nicht mehr als 300 Sek. Am Tag. Also im 24 Std. Zyklus und nachts soll dann der Zähler zurück gestellt werden.

                                  AsgothianA Offline
                                  AsgothianA Offline
                                  Asgothian
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #16

                                  @Aphofis
                                  Auch in diesem Fall würde ich NICHT über "Polling" Methoden arbeiten, sondern die Statusänderung abfangen. Die Einzusetzende Methode wäre:

                                  • variable für die Restlaufzeit definieren
                                  • Trigger auf den Datenpunkt, vergleich Größer als vorher (Wechsel false auf true, triggerA), darin:, Startzeitpunkt merken, timeout starten der nach Ablauf der Restlaufzeit die Pumpe abschaltet und die Restlaufzeit auf 0 setzt, Pumpe anschalten
                                  • Trigger auf den Datenpunkt, vergleich Kleiner als vorher (Wechsel true auf false, triggerB), darin: An-Zeit der Pumpe berechnen, gelaufene Zeit von der Restlaufzeit abziehen, Timeout loeschen, Pumpe abschalten.
                                  • Schedule definieren - jeweils um Mitternacht: timeout löschen wenn er laeuft, Restlaufzeit auf 300 sek, pruefen ob Datenpunkt = true, wenn ja: Pumpe an, timeout mit Restlaufzeit wie oben.

                                  Gegebenenfalls musst du die beiden Trigger noch gegen prellen sichern. Wenn du mal nach "Sensoren entprellen" im Forum suchst dann solltest du etwas finden. Ob das Notwendig ist hängt davon ab in wie weit dein Schwimmer eine Schalthysterese besitzt.

                                  Ein regelmäßiges Pollen des Eingangs alle x Sekunden ist so unnötig. Du kannst das aber auch damit machen, wenn du eine Shedule definierst, die alle 30 Sekunden den Wert holt und die Prüfung die im Trigger oben gemacht wird manuell durchführt (letzter Wert false, aktueller Wert true => das was oben triggerA genannt ist ausführen, letzter Wert true, aktueller Wert false => das was oben triggerB genannt ist ausführen.

                                  Ich hoffe mit diesem "pseudocode" kommst du zu Recht. Wenn nicht koennen wir das heute Abend gerne gemeinsam in JS Code verwandeln.

                                  A.

                                  ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                  "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                  AphofisA 1 Antwort Letzte Antwort
                                  0
                                  • AsgothianA Asgothian

                                    @Aphofis
                                    Auch in diesem Fall würde ich NICHT über "Polling" Methoden arbeiten, sondern die Statusänderung abfangen. Die Einzusetzende Methode wäre:

                                    • variable für die Restlaufzeit definieren
                                    • Trigger auf den Datenpunkt, vergleich Größer als vorher (Wechsel false auf true, triggerA), darin:, Startzeitpunkt merken, timeout starten der nach Ablauf der Restlaufzeit die Pumpe abschaltet und die Restlaufzeit auf 0 setzt, Pumpe anschalten
                                    • Trigger auf den Datenpunkt, vergleich Kleiner als vorher (Wechsel true auf false, triggerB), darin: An-Zeit der Pumpe berechnen, gelaufene Zeit von der Restlaufzeit abziehen, Timeout loeschen, Pumpe abschalten.
                                    • Schedule definieren - jeweils um Mitternacht: timeout löschen wenn er laeuft, Restlaufzeit auf 300 sek, pruefen ob Datenpunkt = true, wenn ja: Pumpe an, timeout mit Restlaufzeit wie oben.

                                    Gegebenenfalls musst du die beiden Trigger noch gegen prellen sichern. Wenn du mal nach "Sensoren entprellen" im Forum suchst dann solltest du etwas finden. Ob das Notwendig ist hängt davon ab in wie weit dein Schwimmer eine Schalthysterese besitzt.

                                    Ein regelmäßiges Pollen des Eingangs alle x Sekunden ist so unnötig. Du kannst das aber auch damit machen, wenn du eine Shedule definierst, die alle 30 Sekunden den Wert holt und die Prüfung die im Trigger oben gemacht wird manuell durchführt (letzter Wert false, aktueller Wert true => das was oben triggerA genannt ist ausführen, letzter Wert true, aktueller Wert false => das was oben triggerB genannt ist ausführen.

                                    Ich hoffe mit diesem "pseudocode" kommst du zu Recht. Wenn nicht koennen wir das heute Abend gerne gemeinsam in JS Code verwandeln.

                                    A.

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

                                    @Asgothian
                                    Das schon mal ein Anfang!
                                    Ob ich das hinbekomme weiß ich noch nicht.
                                    Das muss ich sehen.
                                    Was meinst du mit gegen prellen!?
                                    Die Schwimmer sind jeder über einen 10 kOhm widerstand verdrahtet.
                                    Wenn du das meinst?

                                    AsgothianA 1 Antwort Letzte Antwort
                                    0
                                    • AphofisA Aphofis

                                      @Asgothian
                                      Das schon mal ein Anfang!
                                      Ob ich das hinbekomme weiß ich noch nicht.
                                      Das muss ich sehen.
                                      Was meinst du mit gegen prellen!?
                                      Die Schwimmer sind jeder über einen 10 kOhm widerstand verdrahtet.
                                      Wenn du das meinst?

                                      AsgothianA Offline
                                      AsgothianA Offline
                                      Asgothian
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #18

                                      @Aphofis es geht darum zu verhindern das die Pumpe ständig an und aus geschaltet wird wenn der Schwimmer Nähe am Schaltpunkt ist.

                                      A.

                                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                      AphofisA 1 Antwort Letzte Antwort
                                      0
                                      • AsgothianA Asgothian

                                        @Aphofis es geht darum zu verhindern das die Pumpe ständig an und aus geschaltet wird wenn der Schwimmer Nähe am Schaltpunkt ist.

                                        A.

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

                                        @Asgothian
                                        Mehr oder minder, Das soll natürlich auch nicht passieren das dass Magentventil zu frü und somit zu lange schaltet.
                                        und es soll geprüft werden ob wirklich true ist und Tasmota ESP definitiv alive ist und nicht mehr als 300 sek am tag gepumpt wird. sprich nicht mehr als um und bei 10 Liter.

                                        AsgothianA 1 Antwort Letzte Antwort
                                        0
                                        • AphofisA Aphofis

                                          @Asgothian
                                          Mehr oder minder, Das soll natürlich auch nicht passieren das dass Magentventil zu frü und somit zu lange schaltet.
                                          und es soll geprüft werden ob wirklich true ist und Tasmota ESP definitiv alive ist und nicht mehr als 300 sek am tag gepumpt wird. sprich nicht mehr als um und bei 10 Liter.

                                          AsgothianA Offline
                                          AsgothianA Offline
                                          Asgothian
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #20

                                          @Aphofis
                                          Wie sicher gestellt werden kann das der Tasmota ESP aktiv ist hängt davon ab wie die Kommunikation dazu organisiert ist. Vielleicht macht es Sinn das per TS kurz durchzusprechen, dann kann das Script darauf auch reagieren, aber:

                                          • solange wie der Schalter angesteuert werden kann ist sichergestellt das er pro Tag max. 300 s an ist.
                                          • Lässt er sich nicht einschalten, dann bekommt das Script das aktuell nicht mit, ähnlich ist es wenn er sich nicht abschalten lässt.
                                          • Zu beantworten wäre die Frage was passieren soll wenn der ESP nicht erreichbar ist - in diesem Fall kann wenn ich das richtig erinnere nicht geschaltet werden (weder ein noch aus)

                                          A.

                                          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                                          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                                          AphofisA 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

                                          728

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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