Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min)

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min)

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      M-A-X last edited by M-A-X

      Hallo.
      Ich wollte ein Skript bauen, dass mir eine Nachricht gibt, sobald mein Sohn 60 Minuten geschlafen hat.
      Unbenannt.png
      (Außerdem habe ich noch ein "Falls Aktuelle Zeit zwischen 0:00 und 00:01 - mache - Setze Timer auf 0" als seperates Blockly, damit der Timer Mittags immer bei 0 startet)
      Leider klappt das gar nicht. Ich bekomme:

      1. auch nach 15:00 Uhr noch Nachrichten (die zweite blaue Falls Bedingung ist zwischen 12:00 und 15:00 Uhr) und
      2. Bekomme ich alle 4-5 Minuten die Meldung, dass mein Sohn 60 Minuten geschlafen hat.

      Zu meiner Idee:
      Falls der Wert "motion" sich geändert hat (von "keine Bewegung zu Bewegung" oder andersrum) soll das Skript starten. Hiermit gehe ich sicher, dass ich nicht dauernd Nachrichten bekomme, wenn keiner da ist.
      Falls "motion/stop" bedeudet, dass (nachdem sich ja was bewegt hatte - siehe erste Schleife) jetzt keine Bewegung mehr da ist (mein Sohn also schläft). Außerdem Falls 12:00-15:00, weil es nur um die Zeit des Mittagsschlafs geht.
      Dann kommt der Timer (Intervall alle 1 Minute) -> Timer plus 1 bis Timer = 60.
      Ich verstehe nicht, wie ich überhaupt so schnell Meldungen bekommen kann, da der Timer doch auf 0 gesetzt wird, sobald ich eine Nachricht bekommen habe.
      Bin dankbar für alle Tipps:)

      EDIT: Ich hatte vorher um alles die Falls-Abfrage der Zeit (Falls 12-15 Uhr) mache Skript. Dann eine Variable auf wahr gesetzt (Mittagszeit = wahr) und diese Variable auf falsch gesetzt sobald die Nachricht über Telegram raus geht. Leider habe ich dann GAR KEINE Nachricht bekommen...

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @M-A-X last edited by paul53

        @M-A-X sagte:

        Leider klappt das gar nicht.

        Es fehlt der sonst-Zweig der Prüfung mit stop zyklische Ausführung Intervall und setze Timer1 auf 0 (ist dort völlig ausreichend).

        Blockly_temp.JPG

        Wert findet man unter "Trigger".

        M 1 Reply Last reply Reply Quote 0
        • M
          M-A-X @paul53 last edited by

          @paul53
          Hey. Bin leider nicht zuhause und kann es nicht testen. Ist bei deiner Lösung nicht ein Problem, wenn sich mein Sohn im Schlaf bewegt?
          Dann wird der timer auf 0 gesetzt und startet neu.
          Ich wollte bei meinem Skript 'einfach' jede Minute anfragen und wenn motion=stop dann timer plus 1, wenn motion=Start fragt er ne Minute später nochmal. (mir kommt es ja nicht drauf an ob er 60 oder 70 minuten schläft)

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @M-A-X last edited by paul53

            @M-A-X sagte:

            Ist bei deiner Lösung nicht ein Problem, wenn sich mein Sohn im Schlaf bewegt?

            Ja. Wenn das Intervall trotz Bewegung zwischendurch nur einmal laufen soll, muss man es mit dem Zähler anders lösen. stop zyklische Ausführung Intervall ist aber erforderlich.

            M 1 Reply Last reply Reply Quote 0
            • M
              M-A-X @paul53 last edited by M-A-X

              @paul53
              Sonst sollte es funktionieren?
              Dann kann ich bei dem 'sonst' Abschnitt doch ein 'falls aktuelle Zeit nach 15 Uhr ODER Variable "Nachricht ging raus" ' noch einbinden und es geht dann?
              Die Variable 'Nachricht ging raus' setze ich einfach auf wahr nach dem Telegramm Block

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @M-A-X last edited by paul53

                @M-A-X sagte:

                Variable "Nachricht ging raus"

                Diese Information enthält auch die Variable Timer1.

                Blockly_temp.JPG

                Oder man setzt Timer1 um 12:00 auf 0.

                Blockly_temp.JPG

                M 1 Reply Last reply Reply Quote 0
                • M
                  M-A-X @paul53 last edited by M-A-X

                  @paul53 ich glaube wir reden an einander vorbei.
                  Ich meine: 'sonst falls xxxx: stoppe zyklische Ausführung'
                  und nicht 'sonst stoppe zyklische Ausführung - falls A tue B'

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @M-A-X last edited by paul53

                    @M-A-X sagte:

                    'sonst falls xxxx: stoppe zyklische Ausführung'

                    Nein, das Intervall muss immer bei sonst gestoppt werden, da andernfalls mehrere Intervalle gleichzeitig laufen.
                    Wenn nach dem Stoppen die mache-Bedingung wieder erfüllt ist, wird das Intervall wieder gestartet und es wird weiter gezählt. Du musst kein Minuten-Intervall verwenden: 6 Sekunden Intervall und zählen bis 600 funktioniert auch.

                    M 2 Replies Last reply Reply Quote 0
                    • M
                      M-A-X @paul53 last edited by M-A-X

                      @paul53 ok. Danke.
                      Da hab ich wieder mal was gelernt. Ich probiere es heute nacht oder morgen früh aus und berichte 🙂
                      Dir einen schönen Sonntag noch

                      1 Reply Last reply Reply Quote 0
                      • M
                        M-A-X @paul53 last edited by

                        @paul53
                        Hey,
                        ich bin jetzt wieder zuhause und habe dein Skript übernommen.
                        Leider scheint die Schleife gar nicht los zu laufen. Ich habe mir ein DEBUG eingebaut, um die minütlichen Infos des Timers im Log zu sehen, aber es passiert nichts.

                        1. Dieses Feld "Wert" aus dem Bereich "Trigger", woher nimmt das Skript die Info, welcher Wert? 🙂
                          Ich konnte zwar "Object" in "Wert" ändern, aber nirgendwo auswählen, dass er den Wert vom Objekt "yitom" nehmen soll. (Zu Testzwecken habe ich außerdem die Zeit auf 10 Minuten gekürzt).
                        2. Wie kann ich die UND Verknüpfung schön übersichtlich in 2 Zeilen bauen und nicht hinter einander?
                          Unbenannt.png
                        paul53 1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @M-A-X last edited by

                          @M-A-X sagte:

                          Leider scheint die Schleife gar nicht los zu laufen.

                          Stimmt denn der Vergleichswert "motion_stop" ? Füge mal vor dem Vergleich ein "debug output Wert" ein.

                          @M-A-X sagte in Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min):

                          woher nimmt das Skript die Info, welcher Wert?

                          Dieser Block liefert die Attribute (u.a. den Wert) des Trigger-Datenpunktes.

                          @M-A-X sagte in Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min):

                          Wie kann ich die UND Verknüpfung schön übersichtlich in 2 Zeilen bauen

                          Mit dem Maus-Zeiger über "und", rechte Maustaste und "externe Eingänge" auswählen.

                          @M-A-X sagte in Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min):

                          Ich habe mir ein DEBUG eingebaut

                          Stelle besser "info" als Log-Level ein.

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            M-A-X @paul53 last edited by

                            @paul53 said in Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min):

                            Stimmt denn der Vergleichswert "motion_stop" ? Füge mal vor dem Vergleich ein "debug output Wert" ein.

                            Habe es mal eingefügt. Es schien daran zu liegen, dass Timer1 noch "hoch" war. Ich habe einfach einen Block "setze Timer1 = 0" eingefügt und das script einmal gestartet.

                            Dieser Block liefert die Attribute (u.a. den Wert) des Trigger-Datenpunktes.

                            Ah. Ok. Das heißt "Wert" "Object" etc. bezieht sich immer auf den übergeordneten Bedingungsblock?

                            Mit dem Maus-Zeiger über "und", rechte Maustaste und "externe Eingänge" auswählen.

                            Danke

                            Stelle besser "info" als Log-Level ein.

                            Habe ich jetzt. Ist das entscheidend? Ich wollte es auf anhieb "sehen" können 🙂
                            Wie gesagt. Das script scheint jetzt zu funktionieren. Das einzige, was ich nicht testen konnte ist, was passiert wenn er sich bewegt während der Timer läuft (hat er nämlich nicht^^) und ob der Timer resetted wird 🙂 Ich berichte dann morgen 🙂
                            Vielen Dank nochmals

                            paul53 1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 @M-A-X last edited by

                              @M-A-X sagte:

                              "Wert" "Object" etc. bezieht sich immer auf den übergeordneten Bedingungsblock?

                              Ja, auf den Trigger-Block.

                              1 Reply Last reply Reply Quote 0
                              • buggybeast
                                buggybeast last edited by

                                @M-A-X
                                Hi Max, ich bin kein Super Experte in Sachen Programmierung, aber dieses ganze Timer Gedöns habe ich schon in diversen Waschmaschinen / Spülmaschinen Skripten gesehen und ist meiner Meinung überflüssig. Kann gute Gründe dafür geben, die ich nicht sehe, aber in Deinem recht einfachen Fall sollte ein Timeout auch gut funktionieren bzw. exakt gleich nur ohne timer Variable. Sähe dann so aus:
                                Bildschirmfoto 2020-06-03 um 17.04.18.png

                                paul53 M 2 Replies Last reply Reply Quote 0
                                • paul53
                                  paul53 @buggybeast last edited by

                                  @buggybeast sagte:

                                  Kann gute Gründe dafür geben, die ich nicht sehe

                                  @M-A-X sagte in Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min):

                                  Problem, wenn sich mein Sohn im Schlaf bewegt?

                                  1 Reply Last reply Reply Quote 0
                                  • buggybeast
                                    buggybeast last edited by

                                    @paul53 Ja schon klar, der kleine Tom kann sich bewegen. Aber wie soll ein Bewegungssensor das unterscheiden? Ob er sich nur im Schlaf bewegt oder wach ist. Er ändert in beiden Fällen den Status. Dann müsste man ja irgendwie skripten, wenn er sich nur 10 Sekunden bewegt, ist er nicht wach, sondern bewegt sich nur im Schlaf, was echt sehr geraten wäre. Das sehe ich aber in dem zuletzt gezeigten Skript nicht.
                                    Vielleicht liegt's auch am Bier 😊

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      M-A-X @buggybeast last edited by

                                      @buggybeast
                                      Hey, ich bin leider vor allem mit schleifen etc nicht firm.
                                      Was passiert bei deinem Skript wenn motion_stop sich in motion_start ändert?
                                      Stoppt es und die Zeit läuft neu los sobald es wieder motion_stop ist? Oder läuft die Zeit WEITER sobald es sich auf motion_stop zurück ändert?
                                      Mir scheint (aber da bin ich auch nicht sicher), dass es bei 'meinem' Skript dann WEITER läuft.
                                      Grüße
                                      Max

                                      paul53 buggybeast 2 Replies Last reply Reply Quote 0
                                      • paul53
                                        paul53 @M-A-X last edited by paul53

                                        @M-A-X sagte:

                                        Stoppt es und die Zeit läuft neu los sobald es wieder motion_stop ist?

                                        Ja.

                                        @M-A-X sagte in Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min):

                                        Mir scheint (aber da bin ich auch nicht sicher), dass es bei 'meinem' Skript dann WEITER läuft.

                                        Ja, das Intervall wird neu gestartet und die Zähl-Variable zählt weiter, da sie nicht zurück gesetzt wurde.

                                        M 1 Reply Last reply Reply Quote 1
                                        • M
                                          M-A-X @paul53 last edited by

                                          @paul53
                                          Also ist 'mein' Skript - eigentlich ja deins 😉 — besser für den Anwendungsfall.
                                          Wenn ich jetzt noch von 1 Minute - wie schon von Dir angeregt - auf 10 Sekunden Intervalle Wechsel, komme ich echten 60 Minuten Schlaf noch näher 🙂
                                          Wobei ich da mal checken muss, wie oft die Kamera den Status überhaupt ändern kann 🙂

                                          1 Reply Last reply Reply Quote 0
                                          • buggybeast
                                            buggybeast @M-A-X last edited by

                                            @M-A-X sagte in Trigger "Mittagsschlaf fertig" (keine Bewegung für X Min):

                                            Was passiert bei deinem Skript wenn motion_stop sich in motion_start ändert?
                                            Stoppt es und die Zeit läuft neu los sobald es wieder motion_stop ist? Oder läuft die Zeit WEITER sobald es sich auf motion_stop

                                            Korrekt, die Zeit stoppt, wie @paul53 bereits geantwortet hat.
                                            Kann es sein, dass Du quasi wissen möchtest, ob Dein Sohn zwischen 12 und 15 Uhr in Summe 60 Minuten geschlafen hat, egal ob am Stück oder mit Unterbrechungen?
                                            Dann hätte ich das falsch verstanden ...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            751
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            3
                                            21
                                            740
                                            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