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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • 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.
    • devdracon
      devdracon last edited by devdracon

      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.

      Gelöst habe ich das so:

      65bc591b-21f6-4055-9f7a-7500ebe5df85-image.png

      Ist: die Aktion wird fortlaufend ausgeführt

      Wo ist mein Fehler?

      Homoran DJMarc75 N 3 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @devdracon last edited by

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

        Wo ist mein Fehler?

        wird der Datenpunkt druckt dauernd aktualisiert?
        dann wird deine Variable is switched immer als erstes auf false gesetzt

        Codierknecht 1 Reply Last reply Reply Quote 0
        • Codierknecht
          Codierknecht Developer Most Active @Homoran last edited by Codierknecht

          @devdracon

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

          wird der Datenpunkt druckt dauernd aktualisiert?

          Wäre auch meine Idee gewesen.
          Prüfe besser auf "ist kleiner als letztes" oder auf "wurde geändert" und dann nochmal auf false.

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

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

            Auf "geändert" zu prüfen ist schwierig, da dieser Trigger u.U. nicht immer im angegebenen Zeitfenster ausgelöst wird. "kleiner als letztes": da ist mir nicht (genau) klar wann dieser Trigger ausgelöst wird...

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

              @devdracon Screenshot 2022-12-20 082838.png

              DIese Zeitabfrage könnte das Problemchens Lösung sein.

              1 Reply Last reply Reply Quote 0
              • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            835
                                            Online

                                            31.9k
                                            Users

                                            80.3k
                                            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