Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Aktion innerhalb eines Zeitraumes nur 1x ausführen [gelöst]

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Aktion innerhalb eines Zeitraumes nur 1x ausführen [gelöst]

    This topic has been deleted. Only users with topic management privileges can see it.
    • Codierknecht
      Codierknecht Developer Most Active @devdracon last edited by

      @devdracon sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

      @codierknecht & @Homoran nein, der DP wird nicht dauernd aktualisiert.

      Sicher?
      Datenpunkte werden vom jeweiligen Adapter gerne mal zyklisch "aktualisiert". Unabhängig davon, ob sich nun der Wert geändert hat oder nicht. Dein Trigger würde dann feuern.

      Kurze Ergänzung zum Post von @DJMarc75 : Zeiträume über den Tageswechsel zu prüfen, führt gerne mal zu Problemen. Die gezeigte Variante umgeht das.

      @devdracon sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

      Auf "geändert" zu prüfen ist schwierig, da dieser Trigger u.U. nicht immer im angegebenen Zeitfenster ausgelöst wird

      Da muss natürlich zusätzlich die Zeit abgeprüft werden.

      @devdracon sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

      "kleiner als letztes": da ist mir nicht (genau) klar wann dieser Trigger ausgelöst wird...

      Der feuert, wenn sich der Wert ändert und - wie der Name es sagt - der Wert kleiner als der zuletzt übermittelte Wert ist.
      Boolean werden intern als 0 (false) oder 1 (true) dargestellt ***. Der Trigger feuert in dem Fall also nur dann, wenn der Wert von true auf false wechselt.

      *** Per Definition ist false = 0 und true ist alles was nicht 0 ist - aber das lassen wir hier mal unter den Tisch fallen.

      devdracon 1 Reply Last reply Reply Quote 0
      • N
        Nordischerjung @devdracon last edited by

        @devdracon sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

        Hallo zusammen,

        das Ergebnis des folgenden Blockly soll sein:

        Wenn innerhalb das Objekt "druckt" auf falsch steht soll innerhalb eines bestimmten Zeitraumes bei gleichzeitiger Überprüfung der Temperatur eine Steckdose geschaltet werden. Darüber soll 1x per Telegram informiert werden.

        Vielleicht verstehe ich das auch falsch, aber ist der Trigger nicht falsch? Was ist, wenn die Temperatur sich verändert wenn druck auf falsch steht? Dann bekommst du es nicht mit. Müsste man nicht eher auf die Temperatur triggern und da dann die Zeit und den Druckstatus mit abfragen?

        Oder soll die Steckdose nur dann ausgeschaltet werden wenn Druck ausgeschaltet wurde, es ist zwischen x und y Uhrzeit und die Temperatur ist <23
        Was ist wenn die Temperatur zB 1 Minute nach dem ausschalten <23 wird?

        1 Reply Last reply Reply Quote 0
        • devdracon
          devdracon @Codierknecht last edited by

          @codierknecht said in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

          Sicher?
          Datenpunkte werden vom jeweiligen Adapter gerne mal zyklisch "aktualisiert". Unabhängig davon, ob sich nun der Wert geändert hat oder nicht. Dein Trigger würde dann feuern.

          Das war mir bisher nicht bekannt. - Das wäre jedoch auch ein wenig zuverlässiger Trigger?

          Kurze Ergänzung zum Post von @DJMarc75 : Zeiträume über den Tageswechsel zu prüfen, führt gerne mal zu Problemen. Die gezeigte Variante umgeht das.

          Guter Hinweis - werde ich berücksichtigen. Dank an @DJMarc75

          @devdracon sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

          "kleiner als letztes": da ist mir nicht (genau) klar wann dieser Trigger ausgelöst wird...

          Der feuert, wenn sich der Wert ändert und - wie der Name es sagt - der Wert kleiner als der zuletzt übermittelte Wert ist.
          Boolean werden intern als 0 (false) oder 1 (true) dargestellt ***. Der Trigger feuert in dem Fall also nur dann, wenn der Wert von true auf false wechselt.

          *** Per Definition ist false = 0 und true ist alles was nicht 0 ist - aber das lassen wir hier mal unter den Tisch fallen.

          Danke für die Erläuterung.

          @nordischerjung said in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

          Oder soll die Steckdose nur dann ausgeschaltet werden wenn Druck ausgeschaltet wurde, es ist zwischen x und y Uhrzeit und die Temperatur ist <23

          Ja, so soll das ein. (Hintergrund: ein laufender Druck endet später am Abend, dann kann nach Abkühlen die Steckdose ausgeschaltet werden)

          Was ist wenn die Temperatur zB 1 Minute nach dem ausschalten <23 wird?

          Dann ist die Bedingung <23 doch immer noch wahr?

          N 1 Reply Last reply Reply Quote 0
          • N
            Nordischerjung @devdracon last edited by Nordischerjung

            @devdracon sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

            Dann ist die Bedingung <23 doch immer noch wahr?

            Ja aber der Trigger hat dann ausgelöst und geprüft ob die Zeit stimmt und ob die Temperatur <23 ist. Wenn die Temperatur dann zB 23,5°C ist, wird die Steckdose nicht ausgeschaltet.
            Wenn die Temperatur <23 wird, schaltet die Steckdose nicht aus, da der Trigger nicht kommt, weil der Druck schon aus ist.

            In deinem Fall schaltet die Steckdose nur in dem Moment aus, wenn Druck wurde beendet UND Temperatur ist <23 UND Zeit ist zwichen x und y.
            Ist eins davon nicht erfüllt, bleibt die Steckdose an.

            Codierknecht devdracon 2 Replies Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @Nordischerjung last edited by

              @nordischerjung
              Guter Einwand!

              @devdracon
              Du bräuchtest also einen zweiten Trigger, der die (sinkende) Temperatur überwacht und die Steckdose ausschaltet wenn die Temp. unter 23°C sinkt und der Druck beendet ist.

              DJMarc75 1 Reply Last reply Reply Quote 0
              • DJMarc75
                DJMarc75 @Codierknecht last edited by

                @codierknecht sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

                Du bräuchtest also einen zweiten Trigger, der die (sinkende) Temperatur überwacht und die Steckdose ausschaltet wenn die Temp. unter 23°C sinkt und der Druck beendet ist.

                So würde ich das auch machen:

                Screenshot 2022-12-20 095023.png

                1 Reply Last reply Reply Quote 0
                • devdracon
                  devdracon @Nordischerjung last edited by

                  @nordischerjung said in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

                  Ja aber der Trigger hat dann ausgelöst und geprüft ob die Zeit stimmt und ob die Temperatur <23 ist. Wenn die Temperatur dann zB 23,5°C ist, wird die Steckdose nicht ausgeschaltet.
                  Wenn die Temperatur <23 wird, schaltet die Steckdose nicht aus, da der Trigger nicht kommt, weil der Druck schon aus ist.

                  In deinem Fall schaltet die Steckdose nur in dem Moment aus, wenn Druck wurde beendet UND Temperatur ist <23 UND Zeit ist zwichen x und y.
                  Ist eins davon nicht erfüllt, bleibt die Steckdose an.

                  Danke für den Hinweis!

                  @djmarc75 said in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

                  @codierknecht sagte in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

                  Du bräuchtest also einen zweiten Trigger, der die (sinkende) Temperatur überwacht und die Steckdose ausschaltet wenn die Temp. unter 23°C sinkt und der Druck beendet ist.

                  So würde ich das auch machen:

                  Screenshot 2022-12-20 095023.png

                  Der Ansatz ist gut, Danke dafür!

                  ...ich merke, das ein -bei mir- wiederkehrendes Problem ist, das ich versuche zuviele Aktionen mit einem Trigger zu "erschlagen".

                  Ich implementiere das o.g. Blockly auf meine Anforderungen hin und berichte dann hier das Ergebnis!

                  N 1 Reply Last reply Reply Quote 0
                  • N
                    Nordischerjung @devdracon last edited by

                    @devdracon Und evtl noch ein CRON um 20 Uhr UND nicht Druck UND Steckdose ist noch an 😀

                    devdracon 1 Reply Last reply Reply Quote 0
                    • devdracon
                      devdracon @Nordischerjung last edited by

                      @nordischerjung said in Aktion innerhalb eines Zeitraumes nur 1x ausführen:

                      @devdracon Und evtl noch ein CRON um 20 Uhr UND nicht Druck UND Steckdose ist noch an 😀

                      ...warum? Der Cron dann als separater Trigger? Würde der dann -gemäß deiner Definition- nicht den Parameter Temp außen vor lassen? 😕

                      Codierknecht DJMarc75 2 Replies Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @devdracon last edited by

                        @devdracon
                        Das hat ja nix mit dem Trigger zu tun. Zusätzliche Bedingungen wären innerhalb des Trigger natürlich zu prüfen.

                        Wenn ich das richtig interpretiere, willst Du zwischen 20:00 und 05:00 Uhr die Dose für den Drucker komplett ausschalten. Tagsüber soll sie einfach an bleiben.

                        Du bräuchtest 3 Trigger ... naja - eigentlich nur 2, da der Fall "Druck wird beendet und Temperatur ist in diesem Moment bereits < 23°C wohl kaum eintreten wird.

                        • Einen Trigger auf die sinkende Temperatur. Sinkt sie unter 23°C und es ist Nacht, wird die Dose ausgeschaltet.
                        • Einen Trigger auf 20:00 Uhr. Ist die Temperatur um diese Zeit bereits < 23°C, wird ebenfalls die Dose ausgeschaltet.
                          Du musst ja den Fall prüfen, dass der Druck vor 20:00 Uhr beendet wurde und die Temperatur dann unter 23°C sinkt.
                          In diesem Fall wäre ja die Dose an geblieben und soll dann um 20:00 Uhr für die Nacht ausgeschaltet werden.
                        1 Reply Last reply Reply Quote 1
                        • DJMarc75
                          DJMarc75 @devdracon last edited by

                          @devdracon um die Worte von @Codierknecht zu bebildern:

                          Screenshot 2022-12-20 132043.png

                          Der Zeitplan prüft um 20 Uhr ob noch gedruckt wird und wie es mit der Temp aussieht.
                          Wird nicht gedruckt und ist die Temp schon unter 23 Grad dann Dose aus.

                          devdracon 1 Reply Last reply Reply Quote 1
                          • devdracon
                            devdracon @DJMarc75 last edited by

                            @djmarc75 & @Codierknecht Danke für eure Erklärung & Unterstützung!

                            devdracon 1 Reply Last reply Reply Quote 0
                            • devdracon
                              devdracon @devdracon last edited by

                              Das Beispiel von @DJMarc75 liefert das gewünschte Ergebnis; vielen Dank an alle die sich beteiligt haben!

                              paul53 1 Reply Last reply Reply Quote 0
                              • paul53
                                paul53 @devdracon last edited by paul53

                                @devdracon sagte: Das Beispiel von @DJMarc75 liefert das gewünschte Ergebnis

                                Packt man den gemeinsamen Teil in eine Funktion, wird es noch übersichtlicher.

                                Bild_2022-12-21_142826877.png

                                devdracon 1 Reply Last reply Reply Quote 2
                                • devdracon
                                  devdracon @paul53 last edited by

                                  @paul53 müsste hier nicht auch bei der Zeit auf "nicht zwischen" geprüft um den Tageswechsel zu vermeiden?

                                  paul53 1 Reply Last reply Reply Quote 0
                                  • paul53
                                    paul53 @devdracon last edited by paul53

                                    @devdracon sagte: "nicht zwischen" geprüft um den Tageswechsel zu vermeiden?

                                    Nein, das betrifft nur Astro-Zeiten.

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    522
                                    Online

                                    32.0k
                                    Users

                                    80.4k
                                    Topics

                                    1.3m
                                    Posts

                                    6
                                    21
                                    565
                                    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