Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Benötige Hilfe bei Blockly

    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

    Benötige Hilfe bei Blockly

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

      Liebe Community,

      leider funktioniert mein Blockly-Skript nicht so wie es soll. Wenn ich zu Alexa "Guten Morgen" sage, soll ein Zeitplan zur Öffnung der Rolläden gesetzt werden. Das funktioniert auch erstmal soweit. Nach Ausführen des Zeitplans soll dieser angehalten werden, damit am nächsten Tag die Rolläden nicht wieder zur gleichen Zeit wie am Vortag öffnen, sondern erst wenn ich wieder "Guten Morgen" gesagt habe. Leider funktioniert das mit dem "Reset" des Zeitplans irgendwie nicht. Die Rolläden öffnen an den Folgetagen immer zur "alten" Zeit auch wenn ich nicht "Guten Morgen" gesagt habe (also das Skript selbst nicht getriggert wurde).

      Wie müsste denn das Blockly aussehen wenn ich den Zeitplan direkt nach dessen Ausführung zurücksetzten will? Kann mir da jemand helfen? Der Wert von "Rolladen_oeffnen" wird nachts durch ein Skript berechnet (in Abhängigkeit von der Zeit des Sonnenaufgangs etc.).

      Vielen Dank für Eure Hilfe 🙂

      Bildschirmfoto 2019-03-10 um 10.22.26.png

      Dr. Bakterius 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by paul53

        Benenne die Variable schedule um (z.B. schedule1), denn die Variable darf nicht die gleiche Bezeichnung haben, wie eine verwendete Funktion. Anschließend JS-Instanz neu starten.

        1 Reply Last reply Reply Quote 0
        • M
          MarkusP last edited by

          Danke für den Hinweis. Das hatte ich zuvor schon so gehabt (Hieß vorher Plan1). Hat aber auch nicht funktioniert.

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

            Habe es mit folgendem Skript unter JS 4.1.12 getestet:
            Blockly_Test_stopSchedule.JPG

            "Test.Button" um 12:03:20 Uhr betätigt und bis 12:08 Uhr gewartet.

            1 Reply Last reply Reply Quote 0
            • M
              MarkusP last edited by

              Im Prinzip sieht mein Rolladen-Skript ja so aus (nur dass jeden Morgen der Zeitplan mit einer anderen Zeit gesetzt wird).
              Mein Problem ist nun, dass am Folgetag die Rolläden aber doppelt angesteuert werden (am Zeitstempel von "letzte Änderung" und "letzte Aktualisierung" zu sehen). Und zwar einmal nach der neuen Zeit und dann nochmal nach der Zeit vom Vortag. Sieht fast so aus als würden dann 2 Zeitpläne ablaufen.

              Bei der Rolladensteuerung am Abend (gleicher Skirptaufbau wie für die Steuerung am Morgen) ist es noch deutlicher zu erkennen (da die Tage ja länger werden und die Rolläden später heruntergehen sollen). Da werden die Rolläden ständig zu früh geschlossen und zwar nach der Zeit vom Vortag bzw. Vorvortag etc....und dann nochmal angesteuert mit der eigentlich richtigen Zeit (wieder am Zeitstempel zu erkennen).

              Bei einer Debugausgabe ist mir auch aufgefallen, dass ich 2 mal den gleichen Debugeintrag hatte im Abstand von 2,1 Sekunden. Läuft da vielleicht das ganze Skript doppelt ab? Aber selbst wenn das Skript doppelt abläuft müsste doch 2 mal die "neue" Zeit übernommen werden und nicht einmal die "alte" und einmal die "neue".

              Bin Ratlos.....

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

                @MarkusP Bei Verwendung des Variablenbezeichners schedule, wird der Zeitplan nicht gelöscht und ein weiterer hinzugefügt. Das geht immer so weiter.
                Ändere den Variablenbezeichner und starte anschließend ioBroker neu, um alle Zeitpläne, die noch irgendwo gespeichert sind, zu löschen.

                1 Reply Last reply Reply Quote 0
                • Dr. Bakterius
                  Dr. Bakterius Most Active @MarkusP last edited by

                  @MarkusP Warum machst du das mit einem Zeitplan? Ich verstehe die Funktion nicht. Sollen die Rollläden zu bleiben wenn man nicht "Guten Morgen sagt"? Wenn man es sagst, sollen sie erst zu einer bestimmten Zeit öffnen? Also was ist das Ziel?

                  1 Reply Last reply Reply Quote 0
                  • M
                    MarkusP last edited by

                    Also Ziel ist folgendes:

                    Situation 1 es ist jemand zuhause (Status Abwesend = false):

                    Wenn ich "Guten Morgen" sage soll folgendes berücksichtigt werden:

                    Sonnenaufgang schon vorbei oder noch dunkel?
                    Uhrzeit ist vor oder nach 7 Uhr?

                    • Wenn es im Sommer schon um 5 Uhr hell wird (und ich ab und zu schon um 5 aufstehe) sollen die Rolläden nicht gleich hoch gehen sondern bis 7 Uhr warten.
                    • Wenn ich um 5 Uhr aufstehe und es aber im tiefsten Winter erst um 8 Uhr hell wird, sollen die Rolläden erst nach Sonnenaufgang-Ende öffnen
                    • Wenn ich am Wochenende lange schlafe und ich nach 7 Uhr "Guten Morgen" sage und es schon hell ist sollen die Rolläden in 15 Minuten öffnen.

                    Den Zeitplan verwende ich, da ich ja nicht vorhersagen kann wann ich am nächsten Tag "Guten Morgen" sagen will.
                    Man könnte höchstens die verbleibende Zeit seit "guten Morgen" bis Sonnenaufgang berechnen und dann einen "Timer" starten.

                    Hoffe das ist irgendwie verständlich ausgedrückt.

                    1 Reply Last reply Reply Quote 0
                    • M
                      MarkusP last edited by MarkusP

                      Ich könnte natürlich anstelle des Zeitplans einfach einen Astrotrigger verwenden nur habe ich dann die Befürchtung, dass dieser auch jeden Tag nochmals gestartet wird. Irgendwo habe ich mal gelese, dass man keine Trigger innerhalb von Triggern verwenden soll wobei "Zeitplan" ja auch ein Trigger ist.

                      Dr. Bakterius paul53 2 Replies Last reply Reply Quote 0
                      • Dr. Bakterius
                        Dr. Bakterius Most Active @MarkusP last edited by

                        @MarkusP Ich würde mit "Guten Morgen" einfach einen Datenpunkt auf 'true' setzen und den Rest mit dem Astrotrigger bzw. einem Timeout machen. Nach dem Öffnen den Datenpunkt wieder auf 'false' setzen.

                        Also wenn Datenpunkt = true und Sonnenaufgang = true -> Rollladen auf in 15 Minuten.

                        So sollten die Rollläden frühestens 15 Minuten nach Sonnenaufgang hochgehen, bzw. 15 Minuten nachdem du "Guten Morgen" gesagt hast.

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

                          @MarkusP sagte:

                          anstelle des Zeitplans einfach einen Astrotrigger verwenden nur habe ich dann die Befürchtung, dass dieser auch jeden Tag nochmals gestartet wird.

                          Die Befürchtung ist richtig, denn Astro-Trigger lassen sich nicht löschen.

                          @MarkusP sagte in Benötige Hilfe bei Blockly:

                          Irgendwo habe ich mal gelese, dass man keine Trigger innerhalb von Triggern verwenden soll wobei "Zeitplan" ja auch ein Trigger ist.

                          Das stimmt im Prinzip, allerdings kann man einen Zeitplan innerhalb eines Datenpunkt-Triggers verwenden, wenn man den Zeitplan vor erneutem Setzen löscht.

                          1 Reply Last reply Reply Quote 0
                          • M
                            MarkusP last edited by MarkusP

                            Mein Skript für die Rolläden am Morgen sieht nun so aus:

                            Bildschirmfoto 2019-03-10 um 15.08.44.png

                            Die zusammengefalteten Blöcke betreffen nur die Ansteuerung der einzelnen Rolläden und von Werten, die der reinen Information gelten. Habe das einfach der Überischt halber mal reduziert. Die Zeitverzögerungen habe ich eingebaut da ich befürchte, dass mir die Variablen vielleicht nicht schnell genug aktualsiert werden und möglicherweise alte Werte vom Vortag an den Zeitplan übergeben werden.

                            Zur Funktion:

                            • Wenn ich "Guten Morgen" sage wird der Wert "GutenMorgenGesagt" = true.

                            • Die Variable "UhrzeitRolladenOeffnen" wird auf eine mit einem anderen Skript berechnete Uhrzeit gesetzt.

                            • 2 Sekunden danach wird der Inhalt der Variablen auf 2 Variablen namens "Stunden" und "Minuten" aufgeteilt.

                            • Wenn "Dunkel_fuer_Rolladen" = wahr (über ein weiteres Skript gesteuert), dann wird Zeitplan "Plan1" mit den Werten aus den Variablen "Stunden" und "Minuten" gesetzt und läuft irgendwann ab

                            • Beim Ablauf von "Plan1" stoppt sich dieser selbst und sollte eigentlich am nächsten Tag nicht mehr zur gleichen Zeit auslösen (bzw. evtl. mit einer neuen Zeit auslösen)

                            • Sollte "Dunkel_fuer_Rolladen" = false sein, wird verglichen ob die Zeit kleiner oder gleich 7 Uhr ist.

                            • Wenn ja, dann öffnen die Rolläden um 7.01 Uhr, wobei sich der "Plan2" wieder selbst stoppt.

                            • Wenn es nun aber später als 7 Uhr ist, öffnen die Rolläden 15 Minuten später.

                            Sieht das Skript nun so aus als sollte es funktionieren oder habe ich irgendwo einen Fehler? Bin mir einfach nicht sicher, ob die einzelnen Zeitpläne auch tatsächlich angehalten werden und sich mit neuen Zeiten "befüllen" lassen können.

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

                              Setze mal zusätzlich unmittelbar vor die Zeitpläne ein zugehöriges stop PlanN. Das ist erforderlich, wenn Du mehr als einmal am Tag "Guten Morgen" sagst.

                              1 Reply Last reply Reply Quote 0
                              • M
                                MarkusP last edited by

                                Du meinst so?

                                Bildschirmfoto 2019-03-10 um 16.13.51.png

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

                                  @MarkusP sagte:

                                  Du meinst so?

                                  Ja.

                                  1 Reply Last reply Reply Quote 0
                                  • M
                                    MarkusP last edited by

                                    OK, macht Sinn. Danke dir bzw Euch. Ich werde in 2 Tagen berichten ob es funktioniert oder ob an Tag 2 die Rolläden zur falschen Zeit von Tag 1 öffnen 😉

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      MarkusP last edited by

                                      Nach 2 Tagen kann ich nun sagen, dass das Skript bzw. beide (auch für abendliche Rolladensteuerung) funktionieren. Ich hab nun aber das Problem, dass die Skripte nach einem Tag anfangen doppelt zu laufen.

                                      Bildschirmfoto 2019-03-12 um 18.23.00.png
                                      Das ist die Debugausgabe im Log von heute Abend. Die Uhrzeit für den Zeitplan wurde 2x gesetzt. Ich weiß nicht wie ich mir das erklären soll.

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

                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      640
                                      Online

                                      31.9k
                                      Users

                                      80.2k
                                      Topics

                                      1.3m
                                      Posts

                                      3
                                      17
                                      1004
                                      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