Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. true Abfrage alle 2 Sek.

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.8k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.0k

true Abfrage alle 2 Sek.

Scheduled Pinned Locked Moved Blockly
87 Posts 7 Posters 7.2k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AsgothianA Asgothian

    @Aphofis
    Das würde das in meinem Ablauf beschriebene Script durchaus leisten. (in beiden Varianten)

    AphofisA Offline
    AphofisA Offline
    Aphofis
    wrote on last edited by
    #23

    @Asgothian
    Das wäre ja was !? Ich habe mir den kram acuh aufgeschrieben, nur dann das ganze in Blockly umsetzen ist etwas kniffeliger.

    AsgothianA 1 Reply Last reply
    0
    • AphofisA Aphofis

      @Asgothian
      Das wäre ja was !? Ich habe mir den kram acuh aufgeschrieben, nur dann das ganze in Blockly umsetzen ist etwas kniffeliger.

      AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      wrote on last edited by
      #24

      @Aphofis Ich empfehle das nicht in Blockly zu tun.

      Aktuell ist es anscheinend nicht möglich, den Timeout im Blockly durch eine Variable zu setzen. Ich kann Dir jetzt aber auch einen JS Script-stub schreiben, wo du nur die Namen der Datenpunkte anpassen musst.

      A.

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

      AphofisA 1 Reply Last reply
      0
      • AsgothianA Asgothian

        @Aphofis Ich empfehle das nicht in Blockly zu tun.

        Aktuell ist es anscheinend nicht möglich, den Timeout im Blockly durch eine Variable zu setzen. Ich kann Dir jetzt aber auch einen JS Script-stub schreiben, wo du nur die Namen der Datenpunkte anpassen musst.

        A.

        AphofisA Offline
        AphofisA Offline
        Aphofis
        wrote on last edited by
        #25

        @Asgothian
        Kann man das script auch in blockly einbinden!? Damit ggf auch text nachrichten zb via telegram möglich sind !? Da pures Javascript komme ich null mit klar da was einzubauen. Klar Datenpunkte ändern bekomme ich hin.

        AsgothianA 1 Reply Last reply
        0
        • AphofisA Aphofis

          @Asgothian
          Kann man das script auch in blockly einbinden!? Damit ggf auch text nachrichten zb via telegram möglich sind !? Da pures Javascript komme ich null mit klar da was einzubauen. Klar Datenpunkte ändern bekomme ich hin.

          AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          wrote on last edited by Asgothian
          #26

          @Aphofis
          Nicht ohne weiteres, aber es gibt da einen einfachen Trick: Bau dir die Aktionen die du haben willst als Blockly zusammen, und lass dir dann den JS code anzeigen. Den kannst du dann in das JS Script kopieren. Die relevanten Stellen hab ich im Script markiert

          A.

          var Restzeit, timeout, Nachricht, StartTime;
          var Pump = "Pump Object ID"
          var Schwimmer = 'Schwimmer Object ID'
          
          Restzeit = 300;
          StartTime = -1;
          function PumpOn()
           {
               if (timeout) { clearTimeout(timeout); timeout = null;};
               timeout = setTimeout(function () {
                  StartTime = -1;
                 Restzeit = 0;
                  setState(Pump, false);
          // Hier wird die Pumpe abgeschaltet wenn die Zeit abgelaufen ist.
              }, Restzeit * 1000);
          // Hier wird die Pumpe eingeschaltet.
              setState(Pump, true);
              StartTime = (new Date().getSeconds())
          }
          
          on({id: Schwimmer, change: "gt"}, function (obj) {
            if (Restzeit > 0) { PumpOn() };
          });
          on({id: Schwimmer, change: "lt"}, function (obj) {
            if (StartTime > 0) {
              if (timeout) {
                 clearTimeout(timeout); 
                 timeout = null;
             }
             Restzeit = Restzeit - ((new Date().getSeconds()) - StartTime);
            }
            setState(Pump, false);
          // Hier wird die Pumpe abgeschaltet wenn der Schwimmer "false" meldet. 
          // Wichtig - die Pumpe wird hier auch dann abgeschaltet wenn sie nicht vorher über das Script eingeschaltet wurde.
          });
          schedule("0 0 * * *", function () {
            Restzeit = 300;
            if (getState(Schwimmer).val) {PumpOn(); }
          });
          

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

          AphofisA 2 Replies Last reply
          1
          • AsgothianA Asgothian

            @Aphofis
            Nicht ohne weiteres, aber es gibt da einen einfachen Trick: Bau dir die Aktionen die du haben willst als Blockly zusammen, und lass dir dann den JS code anzeigen. Den kannst du dann in das JS Script kopieren. Die relevanten Stellen hab ich im Script markiert

            A.

            var Restzeit, timeout, Nachricht, StartTime;
            var Pump = "Pump Object ID"
            var Schwimmer = 'Schwimmer Object ID'
            
            Restzeit = 300;
            StartTime = -1;
            function PumpOn()
             {
                 if (timeout) { clearTimeout(timeout); timeout = null;};
                 timeout = setTimeout(function () {
                    StartTime = -1;
                   Restzeit = 0;
                    setState(Pump, false);
            // Hier wird die Pumpe abgeschaltet wenn die Zeit abgelaufen ist.
                }, Restzeit * 1000);
            // Hier wird die Pumpe eingeschaltet.
                setState(Pump, true);
                StartTime = (new Date().getSeconds())
            }
            
            on({id: Schwimmer, change: "gt"}, function (obj) {
              if (Restzeit > 0) { PumpOn() };
            });
            on({id: Schwimmer, change: "lt"}, function (obj) {
              if (StartTime > 0) {
                if (timeout) {
                   clearTimeout(timeout); 
                   timeout = null;
               }
               Restzeit = Restzeit - ((new Date().getSeconds()) - StartTime);
              }
              setState(Pump, false);
            // Hier wird die Pumpe abgeschaltet wenn der Schwimmer "false" meldet. 
            // Wichtig - die Pumpe wird hier auch dann abgeschaltet wenn sie nicht vorher über das Script eingeschaltet wurde.
            });
            schedule("0 0 * * *", function () {
              Restzeit = 300;
              if (getState(Schwimmer).val) {PumpOn(); }
            });
            
            AphofisA Offline
            AphofisA Offline
            Aphofis
            wrote on last edited by
            #27

            @Asgothian
            ok dan bastel ich das script mal in meine steuerung

            AsgothianA 1 Reply Last reply
            0
            • AphofisA Aphofis

              @Asgothian
              ok dan bastel ich das script mal in meine steuerung

              AsgothianA Offline
              AsgothianA Offline
              Asgothian
              Developer
              wrote on last edited by Asgothian
              #28

              @Aphofis Viel Glück damit.

              Noch ein Hinweis: Ich hab die Objekt ID's als Variablen nach oben geholt, so das du sie nur einmal anpassen musst. Und der Schedule ist auf Mitternacht jeden Tag eingestellt.

              Nachtrag - es war noch ein Fehler drin, ist jetzt behoben.

              A.

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

              AphofisA 1 Reply Last reply
              0
              • AsgothianA Asgothian

                @Aphofis Viel Glück damit.

                Noch ein Hinweis: Ich hab die Objekt ID's als Variablen nach oben geholt, so das du sie nur einmal anpassen musst. Und der Schedule ist auf Mitternacht jeden Tag eingestellt.

                Nachtrag - es war noch ein Fehler drin, ist jetzt behoben.

                A.

                AphofisA Offline
                AphofisA Offline
                Aphofis
                wrote on last edited by
                #29

                @Asgothian
                Das sehr nett!
                Können das das normale Blockly und das JavaScript gemeinsam laufen oder kann man das bestehende mit einbauen!?
                Da über mein bisheriges Blockly Script die Osmose Steuerung läuft und wiederrum über das Magnet Ventil der Osmose Tages und GEsamtzähler.

                AsgothianA 1 Reply Last reply
                0
                • AphofisA Aphofis

                  @Asgothian
                  Das sehr nett!
                  Können das das normale Blockly und das JavaScript gemeinsam laufen oder kann man das bestehende mit einbauen!?
                  Da über mein bisheriges Blockly Script die Osmose Steuerung läuft und wiederrum über das Magnet Ventil der Osmose Tages und GEsamtzähler.

                  AsgothianA Offline
                  AsgothianA Offline
                  Asgothian
                  Developer
                  wrote on last edited by Asgothian
                  #30

                  @Aphofis
                  Klar. Es ist egal wie die verschiedenen Scripte erstellt wurden. Du kannst Blockly, JS und Typescript scripte beliebig mischen.

                  A.
                  Nachtrag: Ich empfehle sogar die scripte in einzelne logische Blöcke aufzuteilen und als einzelne Scripte laufen zu lassen. Dann kannst du einzelne Funktionen temporär abschalten und die Fehlersuche wird auch einfacher.
                  A.

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

                  AphofisA 1 Reply Last reply
                  1
                  • AsgothianA Asgothian

                    @Aphofis
                    Klar. Es ist egal wie die verschiedenen Scripte erstellt wurden. Du kannst Blockly, JS und Typescript scripte beliebig mischen.

                    A.
                    Nachtrag: Ich empfehle sogar die scripte in einzelne logische Blöcke aufzuteilen und als einzelne Scripte laufen zu lassen. Dann kannst du einzelne Funktionen temporär abschalten und die Fehlersuche wird auch einfacher.
                    A.

                    AphofisA Offline
                    AphofisA Offline
                    Aphofis
                    wrote on last edited by
                    #31

                    @Asgothian
                    Das stimmt!
                    Ich baue auch ungerne mega blocklys wo ich dann des späteren kaum noch überblick habe und mich erst lange ins script einlesen muss.
                    übernimmt denn dein script nun die algemeine osmose steuerung für das magnet ventil !? Da Ja der Osmose Zähler über das magnetventil läuft muss das normale blockly zur osmose steuerung doch eigentlich ausgeschaltet werden.!?

                    AsgothianA 1 Reply Last reply
                    0
                    • AphofisA Offline
                      AphofisA Offline
                      Aphofis
                      wrote on last edited by
                      #32

                      Das ist die normale Blockly Steuerung für die Osmose

                      var value, status2;
                      
                      /**
                       * Function um umsetzen von true / false nach offen / geschlossen
                       */
                      function umsetzen(value, status2) {
                        if (value == true) {
                          status2 = ' aktiv';
                        } else {
                          status2 = 'inaktiv';
                        }
                        return status2;
                      }
                      
                      
                      on({id: "sonoff.0.Aqua_Float.POWER1"/*Osmose_Niveau*/, change: "ne"}, function (obj) {
                        var value = obj.state.val;
                        var oldValue = obj.oldState.val;
                        if (getState("sonoff.0.Aqua_Float.POWER1").val == true) {
                          setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, true);
                          console.log(('Magnetventil ist ' + String(umsetzen(getState("sonoff.0.Aqua_Control.POWER1").val, status2))));
                        } else if (getState("sonoff.0.Aqua_Float.POWER1").val == false) {
                          setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false);
                          console.log(('Magnetventil ist ' + String(umsetzen(getState("sonoff.0.Aqua_Control.POWER1").val, status2))));
                        } else if (getState("sonoff.0.Aqua_Float.POWER4").val == true) {
                          setState("javascript.0.scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal"/*scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal*/, false);
                          setState("sonoff.0.Aqua_Control.POWER1"/*Osmose_Magnetventil*/, false);
                        } else if (getState("sonoff.0.Aqua_Float.POWER4").val == false) {
                          setState("javascript.0.scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal"/*scriptEnabled.Automatik_Steuerung.Osmose_Niveau_Normal*/, true);
                        }
                      });
                      
                      
                      1 Reply Last reply
                      0
                      • AphofisA Aphofis

                        @Asgothian
                        Das stimmt!
                        Ich baue auch ungerne mega blocklys wo ich dann des späteren kaum noch überblick habe und mich erst lange ins script einlesen muss.
                        übernimmt denn dein script nun die algemeine osmose steuerung für das magnet ventil !? Da Ja der Osmose Zähler über das magnetventil läuft muss das normale blockly zur osmose steuerung doch eigentlich ausgeschaltet werden.!?

                        AsgothianA Offline
                        AsgothianA Offline
                        Asgothian
                        Developer
                        wrote on last edited by
                        #33

                        @Aphofis
                        Die Frage kann ich dir nicht beantworten. Dafür kenne ich mich mit dem was du steuern willst einfach nicht genug aus. Prinzipiell können 2 Scripte die gleichen Objekte ansteuern, allerdings ist dann (in diesem Beispiel) nicht sichergestellt das die Pumpe wirklich nur 300 s läuft, diese Zeitabfrage gilt nur für die Zeit die durch den Schwimmer eingeschaltet ist.

                        A.

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

                        AphofisA 1 Reply Last reply
                        0
                        • AsgothianA Asgothian

                          @Aphofis
                          Die Frage kann ich dir nicht beantworten. Dafür kenne ich mich mit dem was du steuern willst einfach nicht genug aus. Prinzipiell können 2 Scripte die gleichen Objekte ansteuern, allerdings ist dann (in diesem Beispiel) nicht sichergestellt das die Pumpe wirklich nur 300 s läuft, diese Zeitabfrage gilt nur für die Zeit die durch den Schwimmer eingeschaltet ist.

                          A.

                          AphofisA Offline
                          AphofisA Offline
                          Aphofis
                          wrote on last edited by
                          #34

                          @Asgothian
                          Das macht dann auch keinen Sinn beides laufen zu lassen.
                          Dann lasse ich nur das JavaScript laufen und werde beobachten und testen. Dann melde ich mich wie es läuft.
                          Vielen Dank

                          1 Reply Last reply
                          0
                          • AphofisA Offline
                            AphofisA Offline
                            Aphofis
                            wrote on last edited by
                            #35

                            Also was ich sagen kann Magnetvetil reagiert auf den Schwimmer und Osmose wird fleißig weter gezählt.
                            Das blockly zum steuern vom magnetventil hab ich abgeschaltet.
                            Kann man eine telegram nachricht einbauen wenn die 300 sek bzw 10 liter am tag erreicht sind !?
                            denn davon ist auch abhängig wann ich den Salzgehalt im Becken angleichen muss.

                            AsgothianA 1 Reply Last reply
                            0
                            • AphofisA Aphofis

                              Also was ich sagen kann Magnetvetil reagiert auf den Schwimmer und Osmose wird fleißig weter gezählt.
                              Das blockly zum steuern vom magnetventil hab ich abgeschaltet.
                              Kann man eine telegram nachricht einbauen wenn die 300 sek bzw 10 liter am tag erreicht sind !?
                              denn davon ist auch abhängig wann ich den Salzgehalt im Becken angleichen muss.

                              AsgothianA Offline
                              AsgothianA Offline
                              Asgothian
                              Developer
                              wrote on last edited by
                              #36

                              @Aphofis
                              Das einfachste ist das du an der Stelle wo die Pumpe abgestellt wird weil die Zeit abgelaufen ist die Meldung mit einbaust.

                              Du kannst auch im Schedule wo die Restzeit zurück gesetzt wird eine Nachricht absetzen wieviele Minuten die Pumpe am Vortag gelaufen ist (wenn Restzeit < 0 -> 5 Minuten, ansonsten (300 - Restzeit) / 60 Minuten). Wenn du dann den Zeitpunkt von Mitternacht auf sagen wir 10 Uhr Abends oder 8 Uhr morgens setzt, dann stoert das ggf. auch nicht so beim Schlafen 🙂

                              A.

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

                              AphofisA 1 Reply Last reply
                              0
                              • AsgothianA Asgothian

                                @Aphofis
                                Das einfachste ist das du an der Stelle wo die Pumpe abgestellt wird weil die Zeit abgelaufen ist die Meldung mit einbaust.

                                Du kannst auch im Schedule wo die Restzeit zurück gesetzt wird eine Nachricht absetzen wieviele Minuten die Pumpe am Vortag gelaufen ist (wenn Restzeit < 0 -> 5 Minuten, ansonsten (300 - Restzeit) / 60 Minuten). Wenn du dann den Zeitpunkt von Mitternacht auf sagen wir 10 Uhr Abends oder 8 Uhr morgens setzt, dann stoert das ggf. auch nicht so beim Schlafen 🙂

                                A.

                                AphofisA Offline
                                AphofisA Offline
                                Aphofis
                                wrote on last edited by
                                #37

                                @Asgothian
                                Das

                                JavaScript
                                

                                umbauen in Blockly ist keine Option?

                                AsgothianA 1 Reply Last reply
                                0
                                • AphofisA Aphofis

                                  @Asgothian
                                  Das

                                  JavaScript
                                  

                                  umbauen in Blockly ist keine Option?

                                  AsgothianA Offline
                                  AsgothianA Offline
                                  Asgothian
                                  Developer
                                  wrote on last edited by
                                  #38

                                  @Aphofis
                                  Das was ich dir geschrieben habe leider nicht - du musst im Blockly die Zeit fuer den Timeout fest vorgeben und kannst keine Variable dafür benutzen - zumindest konnte ich das nicht.

                                  Wenn diese Funktionalität existiert, dann schon.

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

                                  AphofisA 2 Replies Last reply
                                  0
                                  • AsgothianA Asgothian

                                    @Aphofis
                                    Das was ich dir geschrieben habe leider nicht - du musst im Blockly die Zeit fuer den Timeout fest vorgeben und kannst keine Variable dafür benutzen - zumindest konnte ich das nicht.

                                    Wenn diese Funktionalität existiert, dann schon.

                                    AphofisA Offline
                                    AphofisA Offline
                                    Aphofis
                                    wrote on last edited by
                                    #39

                                    @Asgothian
                                    Kann ich jemanden im Forum Fragen, der deinen Javascript Code vllt umhechseln kann ins Blockly!?

                                    B 1 Reply Last reply
                                    0
                                    • AsgothianA Asgothian

                                      @Aphofis
                                      Das was ich dir geschrieben habe leider nicht - du musst im Blockly die Zeit fuer den Timeout fest vorgeben und kannst keine Variable dafür benutzen - zumindest konnte ich das nicht.

                                      Wenn diese Funktionalität existiert, dann schon.

                                      AphofisA Offline
                                      AphofisA Offline
                                      Aphofis
                                      wrote on last edited by
                                      #40

                                      @Asgothian
                                      Wenn das script per steuerung zb in der fütterungspause deaktiviert wir, bleibt der timer mit der gemessenen zahl bestehen? und läuft nach einschalten des scripts normal weiter ???

                                      AsgothianA 1 Reply Last reply
                                      0
                                      • AphofisA Aphofis

                                        @Asgothian
                                        Wenn das script per steuerung zb in der fütterungspause deaktiviert wir, bleibt der timer mit der gemessenen zahl bestehen? und läuft nach einschalten des scripts normal weiter ???

                                        AsgothianA Offline
                                        AsgothianA Offline
                                        Asgothian
                                        Developer
                                        wrote on last edited by
                                        #41

                                        @Aphofis sagte in true Abfrage alle 2 Sek.:

                                        @Asgothian
                                        Wenn das script per steuerung zb in der fütterungspause deaktiviert wir, bleibt der timer mit der gemessenen zahl bestehen? und läuft nach einschalten des scripts normal weiter ???

                                        Wenn die Pumpe gerade eingeschaltet ist, und du dann das Script beendest dann wird die Pumpe nicht abgeschaltet, und bei einem Neustart wird die Variable neu mit 300 initialisiert.

                                        Um das zu verhindern macht es meiner Meinung nach sinn einen Datenpunkt "Futtermodus" zu erstellen, und im Script einfach nur das Aktivieren der Pumpe zu unterbinden wenn der Futtermodus aktiviert wird, und nach Ende des Futtermodus wieder zum normalen Ablauf zurück zu kehren.

                                        A.

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

                                        AphofisA 1 Reply Last reply
                                        0
                                        • AphofisA Aphofis

                                          @Asgothian
                                          Kann ich jemanden im Forum Fragen, der deinen Javascript Code vllt umhechseln kann ins Blockly!?

                                          B Offline
                                          B Offline
                                          Brati
                                          wrote on last edited by
                                          #42

                                          @Aphofis

                                          Du kannst dir doch dein Telegram Blockly in JS anzeigen lassen und dann in das Script kopieren.

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

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          580

                                          Online

                                          32.4k

                                          Users

                                          81.4k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe