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 mit Bedingung und schedule

NEWS

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

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

Blockly mit Bedingung und schedule

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
41 Beiträge 3 Kommentatoren 5.4k Aufrufe
  • Ä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 Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #30

    @Homoran:

    Also doch Javascript full statt Blockly `
    Blockly hat einige Einschränkungen. Wenn Du JS full einmal gelernt hast, bist Du damit auch schneller.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    1 Antwort Letzte Antwort
    0
    • HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #31

      Danke nochmals an alle Helfenden.

      Kurze Rückmeldung:

      Heute morgen hat es wohl geregnet ("leider" nur 0,3mm). Der js-Adpter läuft noch (mit 2,5% CPU-Last) und es hat Datenpunkte gegeben.
      144_dp_regen.jpg
      hier sieht man schön die exakt drei Minuten Intervall.

      seltsamerweise zeigt das log von der Wetterstation den Regen von 10:43 bis 10:48 (und das auf verschiedenen Installationen)

      Das aktuelle Blockly (aus dem ich bald die debug-Blöcke entferne)
      144_regenintensitaet_blockly_dutch01.jpg

      …und als code (für Paul53):

      var Intervall;
      
      on({id: 'hm-rpc.0.KEQ1022589.1.STATE', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        console.log('ist getriggert');
        if (getState("hm-rpc.0.KEQ1022589.1.STATE").val == 1) {
          console.log('es regnet');
          Intervall = setInterval(function () {
            setState("Messwerte.0.Wetterdaten.Regenintensitaet"/*Regenintensitaet*/, ((getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val) / 3), true);
            setStateDelayed("Messwerte.0.Wetterdaten.Regenmenge_alt"/*Regenmenge_alt*/, getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val, true, 200, false);
            console.log((String('Die Regenmenge der letzten drei Minuten betrug: ') + String(getState("hm-rpc.0.JEQ0140901.1.RAIN_COUNTER").val - getState("Messwerte.0.Wetterdaten.Regenmenge_alt").val)));
            console.log('noch einmal');
          }, 180000);
        } else {
          (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
          console.log('es regnet nicht mehr');
        }
        console.log('es regnet nicht');
      });
      console.log('Check - fertig');
      console.log((String('Der Zustand vom Regensensor ist: ') + String(getState("hm-rpc.0.KEQ1022589.1.STATE").val)));
      

      Gruß

      Rainer

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • DutchmanD Offline
        DutchmanD Offline
        Dutchman
        Developer Most Active Administrators
        schrieb am zuletzt editiert von
        #32

        5 Minuten sind keine 6 (2x3), ich glaube unsere Logic hier ist falsch und wir machen es zu kompliziert:

        1. die Wetterstation sendet nur alle x Minuten, warum machen wir dan einen Intervall Risiko zu groß das der schneller abgelaufen ist als die Station neue Werte gesendet hat

        2. das script läuft nur wen es regnet und rechnet dan alle 3minuten

        3. logischer wäre doch: triggen wen Regenmenge (Rain Counter) geändert und dan Berechnung Ausführen

        Ich glaube das die ganze Kombination mit ermitteln regnet es ja oder nein überflüssig ist las uns doch einfach triggeren auf Changed Status Regenmenge und dan wert minus wert alt = jetziger Regenfall ?!

        ~Dutch

        1 Antwort Letzte Antwort
        0
        • HomoranH Nicht stören
          HomoranH Nicht stören
          Homoran
          Global Moderator Administrators
          schrieb am zuletzt editiert von
          #33

          @Dutchman:

          5 Minuten sind keine 6 (2x3) `
          Wo siehst du 56 Minuten?

          hier ist das Interval nur einmal durchlaufen worden.

          @Dutchman:

          die Wetterstation sendet nur alle x Minuten, warum machen wir dan einen Intervall Risiko zu groß das der schneller abgelaufen ist als die Station neue Werte gesendet hat `
          Das hatte ich auch überlegt, aber bei 3 Minuten Zykluszeit, sollte die Wahrscheinlichkeit, dass das Intervall genau zu einem Sendetelegram beginnt und das zweite Telegram dadurch nach drei Minuten nicht da ist verschwindend gering sein.

          @Dutchman:

          logischer wäre doch: triggen wen Regenmenge geändert und dan Berechnung Ausführen `
          Auch richtig, aber als Anfänger wollte ich nicht auch noch mit Zeiten rechnen,

          Gruß

          Rainer

          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

          1 Antwort Letzte Antwort
          0
          • DutchmanD Offline
            DutchmanD Offline
            Dutchman
            Developer Most Active Administrators
            schrieb am zuletzt editiert von
            #34

            @Homoran:

            @Dutchman:

            5 Minuten sind keine 6 (2x3) `
            Wo siehst du 56 Minuten?

            hier ist das Interval nur einmal durchlaufen worden. `

            Wir verstehen uns falsch!

            Du hast nur 2 werte in deinem History innerhalb der 3minuten…. Zeit stimmt trotzdem nich aber andere Geschichte....

            @Homoran:

            @Dutchman:

            die Wetterstation sendet nur alle x Minuten, warum machen wir dan einen Intervall Risiko zu groß das der schneller abgelaufen ist als die Station neue Werte gesendet hat Das hatte ich auch überlegt, aber bei 3 Minuten Zykluszeit, sollte die Wahrscheinlichkeit, dass das Intervall genau zu einem Sendetelegram beginnt und das zweite Telegram dadurch nach drei Minuten nicht da ist verschwindend gering sein.

            Ja, trotzdem möglich und daher onnötiges Risiko

            @Homoran:

            @Dutchman:

            logischer wäre doch: triggen wen Regenmenge geändert und dan Berechnung Ausführen `
            Auch richtig, aber als Anfänger wollte ich nicht auch noch mit Zeiten rechnen,

            Gruß

            Rainer `

            Ich verstehe dich nicht, was willst du hier mit Zeiten rechnen .

            Ich versuche es nochmal:

            1. der Wert der Regenmenge ändert sich nur wen es regnet

            2. wir können diesen Wert (hat sich geändert) also nehmen als trigger um die Berechnung aus zu führen

            3. der Rest ändert sich nicht

            ~Dutch

            1 Antwort Letzte Antwort
            0
            • HomoranH Nicht stören
              HomoranH Nicht stören
              Homoran
              Global Moderator Administrators
              schrieb am zuletzt editiert von
              #35

              @Dutchman:

              Wir verstehen uns falsch!

              Du hast nur 2 werte in deinem History innerhalb der 3minuten `
              korrekt (sollte auch 5 Minuten heißen).

              Das Interval sorgt dafür, dass es erst nach 3 Minuten den ersten Wert gibt, nach 6 Minuten den zweiten.

              Wenn es dann nach 8 Minuten aufhört ist das (vom Programm her) ok!

              @Dutchman:

              Ich verstehe dich nicht, was willst du hier mit Zeiten rechnen `
              ich möchte doch als Ergebnis mm/min (oder vielleicht l/h) als Ergebnis, also muss ich auf eine Zeitbasis rechnen.

              var Dauer = (Timestamp2 - Timestamp1)

              var Menge = RainCounter2 - RainCounter1

              var Intens = Menge / Dauer

              und dann noch in die richtige Einheit umrechnen.

              Es hat eben noch zweimal geregnet. Der dritte Regen besteht noch (nicht im log)

              Skript startet, aber…

              javascript.0	2017-10-09 20:25:50.876	info	script.js.Regenintensitaet: es regnet nicht
              javascript.0	2017-10-09 20:25:50.874	info	script.js.Regenintensitaet: es regnet nicht mehr
              javascript.0	2017-10-09 20:25:50.872	info	script.js.Regenintensitaet: ist getriggert
              javascript.0	2017-10-09 20:23:40.160	info	script.js.Regenintensitaet: es regnet nicht
              javascript.0	2017-10-09 20:23:40.157	info	script.js.Regenintensitaet: es regnet
              javascript.0	2017-10-09 20:23:40.151	info	script.js.Regenintensitaet: ist getriggert
              

              ich war immer davon ausgegangen, dass Blöcke, die hinter dem Trigger-Block hängen immer ausgeführt werden ("check-fertig" und "der Status des Regensensors…" tauchen bei dieser Version im log nicht mehr auf.

              Gruß

              Rainer

              kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Antwort Letzte Antwort
              0
              • DutchmanD Offline
                DutchmanD Offline
                Dutchman
                Developer Most Active Administrators
                schrieb am zuletzt editiert von
                #36

                Ah so finden wir einander, 1 Denkfehler

                @Homoran:

                ich war immer davon ausgegangen, dass Blöcke, die hinter dem Trigger-Block hängen immer ausgeführt werden ("check-fertig" und "der Status des Regensensors…" tauchen bei dieser Version im log nicht mehr auf. `

                Wen es nicht mehr regnet (durch die ich Abfrage) stop auch der berechnugsinterval.

                Da die aktoren nicht immer sauber alle x Minuten Daten übermitteln bekommst du jetzt 0 werte wen zb Regenmenge erst nach 3minuten 20 Sekunden übertragen wird.

                Daher empfehle ich doch zu trigger und rechnen auf Änderung gemessener Mengen da dies „Zeit cyclus“ Fehler ausschließt und umrechnen nach Logic Menge/Dauer ist der nässte schritt.

                Er saubere und richtige werte haben oder? Dan das Ergebnis in Gold unmbauen

                ~Dutch

                1 Antwort Letzte Antwort
                0
                • HomoranH Nicht stören
                  HomoranH Nicht stören
                  Homoran
                  Global Moderator Administrators
                  schrieb am zuletzt editiert von
                  #37

                  ok! Im Moment sind einige 0-Werte dabei, weil mir hier nicht nur das Sendeintervall, sondern auch die Messtechnik in die Quere kommt. Die Regenmengenmessung braucht eine Mindestmenge von 0,3mm Wasser um einen Impuls zu senden.

                  ! ````
                  javascript.0 2017-10-09 21:11:29.384 info script.js.Regenintensitaet: es regnet nicht
                  javascript.0 2017-10-09 21:11:29.383 info script.js.Regenintensitaet: es regnet nicht mehr
                  javascript.0 2017-10-09 21:11:29.382 info script.js.Regenintensitaet: ist getriggert
                  javascript.0 2017-10-09 21:11:14.868 info script.js.Regenintensitaet: noch einmal
                  javascript.0 2017-10-09 21:11:14.865 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                  javascript.0 2017-10-09 21:08:14.854 info script.js.Regenintensitaet: noch einmal
                  javascript.0 2017-10-09 21:08:14.849 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                  javascript.0 2017-10-09 21:05:14.843 info script.js.Regenintensitaet: noch einmal
                  javascript.0 2017-10-09 21:05:14.840 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                  javascript.0 2017-10-09 21:02:14.835 info script.js.Regenintensitaet: noch einmal
                  javascript.0 2017-10-09 21:02:14.832 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                  javascript.0 2017-10-09 20:59:14.826 info script.js.Regenintensitaet: noch einmal
                  javascript.0 2017-10-09 20:59:14.824 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                  javascript.0 2017-10-09 20:56:14.818 info script.js.Regenintensitaet: noch einmal
                  javascript.0 2017-10-09 20:56:14.815 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                  javascript.0 2017-10-09 20:53:14.810 info script.js.Regenintensitaet: noch einmal
                  javascript.0 2017-10-09 20:53:14.809 info script.js.Regenintensitaet: Die Regenmenge der letzten drei Minuten betrug: 0
                  javascript.0 2017-10-09 20:50:14.808 info script.js.Regenintensitaet: es regnet nicht
                  javascript.0 2017-10-09 20:50:14.807 info script.js.Regenintensitaet: es regnet
                  javascript.0 2017-10-09 20:50:14.806 info script.js.Regenintensitaet: ist getriggert

                  
                  muss jetzt ein paar Tage auf Dienstreise. Da habe ich Zeit nachzudenken.
                  
                  Ich mag solche "fehlerbehafteten" Dinge. Da kann ich am besten mit lernen:
                  
                  Was passiert wenn ich jetzt x und dann y anders mache.
                  
                  …dann über das Ergebnis die Ursache bewerten.
                  
                  Das ist meine Art zu lernen.
                  
                  Gruß
                  
                  Rainer

                  kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                  Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                  der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                  1 Antwort Letzte Antwort
                  0
                  • DutchmanD Offline
                    DutchmanD Offline
                    Dutchman
                    Developer Most Active Administrators
                    schrieb am zuletzt editiert von
                    #38

                    @Homoran:

                    Ich mag solche "fehlerbehafteten" Dinge. Da kann ich am besten mit lernen:

                    Was passiert wenn ich jetzt x und dann y anders mache.

                    …dann über das Ergebnis die Ursache bewerten.

                    Das ist meine Art zu lernen.

                    Gruß

                    Rainer `

                    Keep that Spirit !

                    1 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #39

                      @Dutchman:

                      1. logischer wäre doch: triggen wen Regenmenge (Rain Counter) geändert und dan Berechnung Ausführen `
                        Ja, triggern auf Änderung der Regenmenge ist sinnvoller, da andernfalls die Intensität zwischenzeitlich auf 0 gehen kann (leichter Regen).
                        @Dutchman:

                      Ich glaube das die ganze Kombination mit ermitteln regnet es ja oder nein überflüssig ist las uns doch einfach triggeren auf Changed Status Regenmenge und dan wert minus wert alt = jetziger Regenfall ?! `
                      Dann geht der Wert der Intensität nie auf 0 zurück, wenn es nicht mehr regnet, weil keine Änderung der Regenmenge mehr erfolgt, also auch nicht mehr getriggert wird. Besser:

                      on(idRegen, function(dp) { // Triggern bei Wertänderung
                         if(!dp.state.val) setState(idIntens, 0, true);    // kein Regen, also Intensität 0
                      });
                      

                      Die Berechnung der Intensität bei Triggern auf Änderung der Regenmenge ist auch nicht so schwierig:

                      on(idCount, function(dp) {
                         setState(idIntens, faktor * (dp.state.val - dp.oldState.val) / (dp.state.lc - dp.oldState.lc), true);
                      });
                      

                      In Blockly ist es leider nicht möglich, dp.oldState.lc zu ermitteln.

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #40

                        @paul53:

                        In Blockly ist es leider nicht möglich, dp.oldState.lc zu ermitteln. `
                        Korrektur: Es gibt doch eine Möglichkeit
                        filename="Regenintensität_Blockly.JPG" index="0">~~

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        1 Antwort Letzte Antwort
                        0
                        • HomoranH Nicht stören
                          HomoranH Nicht stören
                          Homoran
                          Global Moderator Administrators
                          schrieb am zuletzt editiert von
                          #41

                          Danke Paul, das hat dich aber einige Mühen gekostet!!

                          …und mich hängst du erst mal wieder ab :(

                          Je mehr ich weiß, desto mehr merke ich wie wenig ich weiß!

                          Gruß

                          Rainer

                          kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                          der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                          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

                          582

                          Online

                          32.5k

                          Benutzer

                          81.7k

                          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