Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. [gelöst]Überwachung einer Poolpumpe

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]Überwachung einer Poolpumpe

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

      Hallo zusammen,

      habe folgendes Blockly erstellt, dass meine Poolpumpe überwachen soll. Überwacht wird eine HM Steckdose mit Leistungsmessung.

      Funktioniert die Pumpe ordnungsgemäß, pendelt sie sich eingeschaltet bei ca 520 Watt ein. Zieht sie z.B. nicht genug Wasser, fällt die Leistung unter 500 Watt. Ist sie länger als 15 Sekunden unter 500 Watt, soll sich die Pumpe ausschalten, also die Steckdose soll sich ausschalten. Es soll dann eine Pushover Nachricht versendet werden.
      Die Pumpe springt nicht sofort über 500 Watt wenn sie eingeschaltet wird. Das habe ich ebenfalls versucht einzubeziehen.
      Ich glaube ich habe den Timer nicht richtig angewendet. Vielleicht hab ich auch woanders n Denkfehler. Kann mir jemand helfen?
      Da Pushover grundsätzlich funktioniert, hab ich das eingeklappt.

      Unbenannt.PNG

      Danach würde ich gerne noch was anderes dort einbinden, aber das würde ich erst ansprechen wenn das jetzige richtig funktioniert.

      paul53 S 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @Dominik F. last edited by

        @dominik-f sagte: Vielleicht hab ich auch woanders n Denkfehler.

        Was funktioniert nicht?

        Dominik F. 1 Reply Last reply Reply Quote 0
        • Dominik F.
          Dominik F. @paul53 last edited by Dominik F.

          @paul53

          Ich bekomme z.B. eine Pushover wenn ich die Pumpe manuell ausschalte. Dazu löst es glaube ich nicht zuverlässig aus bzw bekomme ich keine Pushover wenn die Pumpe durch das Skript ausgeschaltet wurde.

          Ich lasse bis dieses Skript richtig funktioniert mein ursprüngliches daneben laufen was zuverlässig funktioniert. Glaube bei dem hast du mir auch geholfen. Ich möchte nur auf Blockly switschen da ich das einfacher finde und mich damit zukünftig auseinandersetzen möchte.

          Hier ist das funktionierende:

          const logging = true;
          const id_Power_Poolpumpe = 'alias.0.DR_Garage.Steckdose Poolpumpe.POWER'/*Poolpumpe POWER*/;
          const id_Poolpumpe = 'alias.0.DR_Garage.Steckdose Poolpumpe.STATE'/*Poolpumpe Switch state*/;
          
          var timer = null;
          var pumpe = getState(id_Poolpumpe).val;
          
          const prio_Poolpumpe = 0;
          
          //Variablen für Pushover
          const sendpush = true;      //true = verschickt per Pushover Nachrchten // false = Pushover wird nicht benutzt
          const pushover_Instanz0 = 'pushover.0';     // Pushover instance für Prio = 0
          const pushover_Instanz1 = 'pushover.1';     // Pushover instance für Prio = 1
          const pushover_Instanz2 = 'pushover.2';     // Pushover instance für Prio = 2
          const pushover_Instanz3 = 'pushover.3';     // Pushover instance für Prio = -1 oder -2
          var prio = -2;              //nicht verändern die höchste Prio nach Fehlertyp wird verwendet
          var titel;
          var message;
          //var device = 'Handy_Domi';         //Welches Gerät soll die Nachricht bekommen
          var device = 'All';
          var tmp;
          
          //Ab hier eigentliches Script
          
          function send_pushover(device, message, titel, prio) {
              var pushover_Instanz;
              if (prio === 0) { pushover_Instanz = pushover_Instanz0; }
              else if (prio == 1) { pushover_Instanz = pushover_Instanz1; }
              else if (prio == 2) { pushover_Instanz = pushover_Instanz2; }
              else { pushover_Instanz = pushover_Instanz3; }
              sendTo(pushover_Instanz, {
                  device: device,
                  message: message,
                  title: titel,
                  priority: 0,
              });
          }
          
          on(id_Power_Poolpumpe, function (dp) {
              if (dp.state.val < 500) {
                  if (dp.oldState.val >= 500) {
                      timer = setTimeout(function () {
                          if (pumpe) {
                              setState(id_Poolpumpe, false);
                              tmp = 'Poolpumpe ausgeschaltet - Poolpumpe überprüfen';
                              if (logging) { log(tmp); }
                              if (sendpush) {
                                  prio = prio_Poolpumpe;
                                  message = tmp;
                                  titel = 'Fehler Poolpumpe';
                                  send_pushover(device, message, titel, prio);
                              }
                          }
                      }, 10000);
                  }
              } else if (timer) clearTimeout(timer);
          });
          
          on(id_Poolpumpe, function (dp) {
              pumpe = dp.state.val;
          });
          
          
          paul53 T 2 Replies Last reply Reply Quote 0
          • S
            Solardach @Dominik F. last edited by

            @dominik-f
            Ich habe sowas ähnliches gebaut (Pumpe einer Balkonbewässerung)

            Ein Problem ist die mehrfach Triggerung durch " Pumpe Power wurde geändert"
            Die Pumpem Power ist keine Konstante
            Da muss eine Verriegelung eingebaut werden damit das Script nicht immer bei jeder kleinen Änderung der Pumpenleistung neu startet.
            f7279f9a-5aa4-4d94-8001-4a43d0d71572-image.png
            Siehe dir mal mein Blockly an.
            Mit der Variablen Pumpe eingeschaltet auf wahr wird das Script gegen erneutes triggern gesichert.

            Am Ende muss natürlich auch ein "Pumpe eingeschaltet auf falsch" gesetzt werden

            Dominik F. 1 Reply Last reply Reply Quote -1
            • paul53
              paul53 @Dominik F. last edited by

              @dominik-f sagte: Hier ist das funktionierende:

              Das ist nahezu identisch. Ich kann im Blockly keinen Fehler erkennen, vorausgesetzt Wert und vorheriger Wert stammen aus den Trigger-Blöcken und sind keine selbst erstellten Variablen.

              1 Reply Last reply Reply Quote 0
              • Dominik F.
                Dominik F. @Solardach last edited by Dominik F.

                @solardach

                Muss bei einer Überwachung der Leistung denn nicht jede Änderung der Leistung "überwacht" werden?
                oder verstehe ich da was falsch?

                @paul53

                Ja, Wert und vorheriger Wert sind keine eigenen Variablen.
                Habe ich denn das Timeout richtig gesetzt?
                Ich habe noch einen Timer in einem anderen Skript verwendet, dort wurde erst Stop Timout ausgeführt und dann der Timer gestartet.
                Kann es sein das ich das hier auch machen muss?

                Hier das Beispiel das ich meine:
                Unbenannt.PNG
                In dem Skript wird nach Sonnenuntergang eine Lampe für eine bestimmte Zeit eingeschaltet, wenn ein Bewegungsmelder eine Bewegung erkennt.

                Dominik F. S paul53 3 Replies Last reply Reply Quote 0
                • Dominik F.
                  Dominik F. @Dominik F. last edited by

                  oder kann es sein, dass das Javascript Skript schneller ausgeführt wird und dadurch das Blockly nicht richtig funktioniert?

                  1 Reply Last reply Reply Quote 0
                  • S
                    Solardach @Dominik F. last edited by

                    @dominik-f

                    Du hast natürlich Recht, war mein Gedanken Fehler.
                    In meinem Blockly wollte ich die Laufzeit der Pumpe haben.

                    1 Reply Last reply Reply Quote 1
                    • T
                      TT-Tom @Dominik F. last edited by

                      @dominik-f sagte in Überwachung einer Poolpumpe:

                      Ich lasse bis dieses Skript richtig funktioniert mein ursprüngliches daneben laufen was zuverlässig funktioniert.

                      Laufen wirklich beide Scripte parallel oder schaltest du beim Test das JavaScript ab?

                      Dominik F. 1 Reply Last reply Reply Quote 0
                      • Dominik F.
                        Dominik F. @TT-Tom last edited by

                        @tt-tom

                        Ja, bisher laufen beide parallel

                        T 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Dominik F. last edited by

                          @dominik-f sagte: Habe ich denn das Timeout richtig gesetzt?

                          Ja.

                          @dominik-f sagte in Überwachung einer Poolpumpe:

                          dort wurde erst Stop Timout ausgeführt und dann der Timer gestartet.

                          Funktioniert genauso, ist nur etwas eleganter gelöst.

                          Dominik F. 1 Reply Last reply Reply Quote 0
                          • T
                            TT-Tom @Dominik F. last edited by

                            @dominik-f sagte in Überwachung einer Poolpumpe:

                            @tt-tom

                            Ja, bisher laufen beide parallel

                            Dann stop mal das JavaScript, wenn du das Blockly testen möchtest. Ansonsten funkt dir das dazwischen, weil ja beide auf den selben Datenpunkt triggern.

                            Gruß Tom

                            1 Reply Last reply Reply Quote -1
                            • Dominik F.
                              Dominik F. @paul53 last edited by

                              @paul53

                              Könntest du mir die elegantere Lösung eventuell zeigen?

                              @TT-Tom

                              Habe das andere Skript nun gestoppt und lasse die Power mit InfluxDB aufzeichnen. Heute ist das Skript angesprungen und hat die Pumpe ausgeschaltet, ich weiß nur nicht ob es so richtig war das die ausgeht, daher das aufzeichnen. Melde mich sobald ich weiß ob das Skript richtig funktioniert bzw. wann genau es probleme gibt.

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @Dominik F. last edited by

                                @dominik-f sagte: Könntest du mir die elegantere Lösung eventuell zeigen?

                                falls Wert >= 500
                                mache stop timeout
                                sonst falls vorheriger Wert >= 500
                                mache Ausführen timeout
                                
                                Dominik F. 1 Reply Last reply Reply Quote 0
                                • Dominik F.
                                  Dominik F. @paul53 last edited by

                                  @paul53

                                  So richtig?

                                  Unbenannt.PNG

                                  Was ich feststellen konnte ist bisher, dass das Skript die Pumpe öfter ausschaltet, als das javascript. Die Frage ist nur, ob sich was an der Pumpe verändert hat oder welches der beiden Skripte richtig funktioniert. Ich logge erst mal die Leistung eine Zeit ohne Skript und schaue wie sich die Leistung so verhält.

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @Dominik F. last edited by paul53

                                    @dominik-f sagte: So richtig?

                                    Nein.

                                    falls Wert >= 500
                                    

                                    Anstelle des falls-Blockes unten, kann man "sonst falls" verwenden.

                                    Dominik F. 1 Reply Last reply Reply Quote 0
                                    • Dominik F.
                                      Dominik F. @paul53 last edited by

                                      @paul53

                                      Ah, das hatte ich nicht gesehen^^

                                      Unbenannt.PNG

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @Dominik F. last edited by

                                        @dominik-f
                                        Immer noch falsch: Die äußere falls-Klammer weg lassen!

                                        Dominik F. 1 Reply Last reply Reply Quote 0
                                        • Dominik F.
                                          Dominik F. @paul53 last edited by

                                          @paul53

                                          Du meinst das mit Wert <500?

                                          paul53 1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @Dominik F. last edited by paul53

                                            @dominik-f sagte: Du meinst das mit Wert <500?

                                            Ja, denn so wird der Timeout nie gestoppt, denn Wert kann nicht gleichzeitig < 500 und >= 500 sein.

                                            Dominik F. 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            868
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            4
                                            57
                                            2542
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo