Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. (gelöst) Kommando mittels Skript wiederholen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    (gelöst) Kommando mittels Skript wiederholen

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

      Halllo zusammen,

      Ich habe hier ein Problem, das sich hoffentlich mit einem Skript einfach lösen lässt, aber meine Blockly-Kenntnisse reichen nicht aus.

      Die Situations ist wie folgt: Ich habe in unserem Wohnzimmer meine Rollos mit ZEMISMART Roller Shutter automatisiert. Die Rollos werden von einem USB-Dongle (mit Tasmota geflasht) mit Bluetooth angesteuert. Jetzt aber passiert es leider regelmäßig, dass das Kommando bei IoBroker ankommt, aber nicht beim Rollo. Im Iobroker steht dann der Dimmer auf 50% und bleibt auf 50% stehen. Wenn das Signal beim Motor ankommen würden, sieht man, dass der Dimmer sich ständig aktualisiert, wenn er hoch oder runter fährt. Wenn ich dann nochmal das gleiche Kommando gebe, klappt es immer und bewegen sich die Motoren.

      Ich suche jetzt die Möglichkeit mittels eines Skripts die Kommandos zu wiederholen. Wenn ich zum Beispiel das Kommando 'Rollo auf 50%' gebe und nach 5 Sekunden passiert nichts, dann soll das Kommando nochmals gegeben werden.

      Wäre so etwas mit einem Blockly-Skript realisierbar?

      Ich habe jetzt ein Blockly-Skript gebastelt: wenn der Dimmer sich ändert (ein Kommando wurde gegeben) startet der Time-Out, wenn der Dimmer nach 5 Sekunden noch immer den gleichen Wert hat, soll noch mal der vorherigen Wert gesteuert werden.

      Zemismart.png

      Würde das so klappen? Oder gibt es da bessere Lösungen? Schon im Voraus vielen Dank für die Unterstützung.

      Johan

      BananaJoe Asgothian paul53 4 Replies Last reply Reply Quote 0
      • BananaJoe
        BananaJoe Most Active @Johan2009 last edited by

        @johan2009

        Also ob die Prüflogik so hinhaut musst du testen.
        Was du aber brauchst ist ein - so nenne ich das - Entpreller.

        Grund ist das du auf einen Datenpunkt getriggert bist den du ggf. dann selbst manipulierst - wodurch du sofort wieder dein eigenes Skript antriggerst was den Datenpunt dann ansteuert - wodurch du sofort wieder dein eigenes Skript antriggerst, was den ....

        Ist schon ein paar mal passiert, das Stoppen des JavaScript Adapters in der Shell half dann ...

        Hier mal ein Beispiel was ich meine:

        6364b045-23b6-4061-a7da-49eb495d07b1-image.png

        Meine Türklingel "prellte" auch so das einmal Klingeln gleich mehrere Bilder/Nachrichten auslöste. Mit dieser -hier 3 Sekunden Pause - war das Problem gelöst. Bei dir würde ich den Wert auf einen Setzen nachdem die Rollos sicher in der Endposition sind.

        1 Reply Last reply Reply Quote 0
        • Asgothian
          Asgothian Developer @Johan2009 last edited by

          @johan2009

          Ob das so geht ist fraglich. Ohne weitere Informationen zu den DP's wird das schwer zu beantworten sein:

          • In welchem DP siehst du die aktuelle Position des Rollo ?
          • Wir diese vom Rollo selber aktualisiert ?
          • Was passiert mit dem DP "Zenismart 1 Dimmer"
            -- der Befehl durch kommt ? (Insbesondere: Wird der Wert "bestätigt", sprich "grün" in der Objektansicht ?)
            -- der Befehl nicht durch kommt ? (Insbesondere: Wird der Wert "bestätigt", sprich "grün" in der Objektansicht ?)

          A.

          Johan2009 1 Reply Last reply Reply Quote 0
          • Johan2009
            Johan2009 @Asgothian last edited by

            @BananaJoe @Asgothian

            Zunächst einmal vielen Dank fürs Mitdenken!

            Der Datenpunkt 'Dimmer' zeigt die aktuelle Position des Rollo. Wenn ich mein Rollo steuern möchte, muss ich auch den Wert des Dimmers ändern.

            Eigentlich weiß ich auch nicht genau wie das mit den Rollos funktioniert. Wie gesagt gibt es einen Motor und einen USB-Dongle. Die Dongles befinden sich im Moment auch im Wohnzimmer und steuern den Rollomotor mittels eines Bluetoothsignals. Weil ich beim Datenpunkt 'Dimmer' den Fortschritt sehen kann, muss das Rollo dem Dongle auch wieder eine Rückmeldung geben.

            Wenn der Befehl durchkommt, wird der Wert tatsächlich grün zusammen mit dem Datenpunkt 'Power'. Wenn das Rollo dann hoch- oder runterfährt, kann blinken die Datenpunkte immer wieder grün und kann man den Fortschritt sehen.

            Wenn der Befehl nicht durchkommt, blinken die Datenpunkte 'Dimmer' und 'Power' einmal grün und dann passiert nichts. Beim zweiten Mal eintragen geht es immer.

            Ich habe auch einen Screenshot von den Datenpunkten und ein Foto vom Zemismart Shutter mit Dongle hinzugefügt.

            Zemismart dimmer.png
            Zemismart Rollo Shutter.png

            Johan

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

              @johan2009 sagte: Im Iobroker steht dann der Dimmer auf 50% und bleibt auf 50% stehen.

              Bleibt der Wert rot (ack: false), wenn der Befehl beim Rollo nicht ankommt? Wenn ja, versuche es mal mit den entsprechenden Trigger-Bedingungen:

              Bild_2021-02-23_150450.png

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

                @paul53

                Nein, der Wert wird überhaupt nicht rot. 'Dimmer' und 'Power' blinken kurz grün und dann bleiben sie schwarz. Es passiert dann nicht, erst beim zweiten Mal geht es.

                Ich habe deinen Vorschlag in ein Skript umgesetzt, aber leider ohne Erfolg.

                Skript 1.png

                Johan

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

                  @johan2009 sagte: der Wert wird überhaupt nicht rot.

                  Dann ist das der Grund, weshalb nicht gesendet wird. Ein Wert wird nur mit ack = false gesendet.
                  Wodurch wird der Wert geändert? Hast Du in einem Script "aktualisiere" anstelle von "steuere" verwendet?

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

                    @paul53

                    Ich versuche deine Fragen so gut wie möglich zu beantworten, verzeih mir wenn meine Kenntnisse nicht ausreichen. Ich will aber lernen!

                    Dann ist das der Grund, weshalb nicht gesendet wird. Ein Wert wird nur mit ack = false gesendet.

                    Das verstehe ich nicht so gut. Wenn der Wert nur mit ack=false gesendet wird, wie kann es dann sein, dass es in manchen Fällen schon geht und es auch beim zweiten Mal immer klappt?

                    Wodurch wird der Wert geändert?

                    Ich weiß nicht genau, was du meinst. Der Wert wird von dem USB-Dongle geändert, im USB-Dongle ist ein ESP8266-Chip, der den Motor steuert. Den habe ich mit Tasmota geflasht. Oder meinst du, dass ich in den Einstellungen von Tasmota etwas ändern soll?

                    Hast Du in einem Script "aktualisiere" anstelle von "steuere" verwendet?

                    Bis jetzt habe ich nur das selbstgemachte Skript und dein Skript versucht, leider beide ohne Erfolg. Ich könnnte bei meinem Skript noch Mal mit 'aktualisiere' versuchen.

                    Johan

                    Hier unten noch die Tasmota-Firmware, die ich auf den USB-Dongle geflasht habe.

                    Tasmota.jpg

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

                      @johan2009 sagte: Jetzt aber passiert es leider regelmäßig, dass das Kommando bei IoBroker ankommt, aber nicht beim Rollo.

                      Woher kommt das Kommando?

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

                        @paul53 die Werte trage ich mit der Hand ein, entweder direkt bei Tasmota mit dem Schiebregler oder beim 'Dimmer' bei 'Objekte' im Iobroker. Wenn ich den 'Dimmer' verknüpfe mit meinem Google Home, geht das auch.

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

                          @johan2009 sagte: beim 'Dimmer' bei 'Objekte' im Iobroker.

                          Dann sollte das Kommando normalerweise mit ack = false gesetzt, also kurz rot und gesendet werden, es sei denn, die Bestätigung wird bewusst auf true gesetzt.

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

                            @johan2009
                            Was liefert das Log aus folgendem Blockly, wenn das Kommando nicht im Rollo ankommt?

                            Bild_2021-02-23_221355.png

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

                              @paul53 Hier das Ergebnis:

                              Test 1.png

                              Und das steht im Log, wenn es beim zweiten Mal schon geht: Von 100% -> 80%

                              Test 2.png

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

                                @johan2009 sagte: Hier das Ergebnis:

                                ack:false
                                

                                Wenn das der letzte Log-Eintrag aus dem Script ist, muss der Wert 80 im Tab "Objekte" rot sein.
                                Der Trigger ist auf "wurde aktualisiert" gestellt?

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

                                  @paul53 Der Trigger ist auf "wurde aktualisiert" gestellt?

                                  Nein, das habe ich vergessen! Ich versuche nochmal!

                                  Wenn das der letzte Log-Eintrag aus dem Script ist, muss der Wert 80 im Tab "Objekte" rot sein.

                                  Nein, der Wert blinkt kurz grün, ist dann wieder schwarz und es passiert nichts.

                                  Hier die Log-Einträge, jetzt mit Trigger auf 'wurde aktualisiert'.

                                  Wenn das Kommando ankommt:

                                  Test 4.png

                                  Wenn das Kommando nicht ankommt:

                                  test 3.png

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

                                    @johan2009 sagte: Wenn das Kommando ankommt:

                                    Dann versuche mal eine Wiederholung nach 1 s, wenn sich der Wert nicht ändert (Trigger "wurde geändert").

                                    Bild_2021-02-23_234445.png

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

                                      @paul53 Danke für den Script! Die gute Nachricht: die Befehle kommen sofort durch! Die schlechte Nachricht: der Dimmer wird dauernd aktualisiert, auch wenn die Endposition erreicht ist. Es stoppt erst, wenn ich den Script stoppe.

                                      Zum Beispiel: ohne Script wird der Dimmer (zum Beispiel 50%) so aktualisiert:

                                      100
                                      97
                                      95
                                      93
                                      91

                                      bis 50% erreicht ist. Dann wird er nicht mehr aktualisiert.

                                      Mit dem Skript wird der Dimmer so aktualisiert:

                                      100
                                      50
                                      97
                                      50
                                      95
                                      50
                                      93

                                      Bis 50% erreicht ist und wird dann noch immer aktualisiert.

                                      @paul53 Hättest du noch eine Idee, wie das im Script gelöst werden kann? Dass der Befehl nur ein- oder zweimal aktualisiert wird?

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

                                        @johan2009 sagte: der Dimmer wird dauernd aktualisiert, auch wenn die Endposition erreicht ist.

                                        Offenbar eine Trigger-Schleife. Ich denke drüber nach.

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

                                          @johan2009 sagte: Hättest du noch eine Idee, wie das im Script gelöst werden kann?

                                          Versuche es mal so:

                                          Bild_2021-02-24_150454.png

                                          Oder so:

                                          Bild_2021-02-24_153715.png

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

                                            @paul53 Jaaaaa! Es funktioniert! Habe jetzt 5 Mal ohne Probleme das Rollo hoch- und runtergefahren. Nochmals vielen Dank fürs Mitdenken und die Geduld!

                                            Ich habe noch eine letzte Frage. Ich habe den Script jetzt mit einem Rollo getestet, habe aber 5 Rollos und dann auch 5 Mal den Datenpunkt 'Dimmer'.

                                            Kann ich alle Rollos in einen Script packen oder soll ich 5 unterschiedliche Scripts machen? Wenn es in einem Script geht, könntest du mir dann auch zeigen wie das geht?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            806
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            24
                                            1289
                                            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