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]Tuya mit Lupusecrelais koppeln -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

    [Gelöst]Tuya mit Lupusecrelais koppeln -Blockly

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

      Hallo Zusammen, ich hoffe hier kann mir jemand helfen (da ich noch recht frisch in dem Thema Blockly bin)

      Ich bin mal wieder am Testen mit meinen Rolladenschaltern (6 Geräte erfolgreich in Tuya angelernt und steuerbar). Leider klappt das Blocklyskript nicht so richtig 😞 Mein Ziel war es, ersteinmal einen Rolladenschalter (später dann alle) synchron zu meinem Lupusec Rolladenrelais (alle bis auf ein Lupusec Relais durch die smarten Rolladenschalter ersetzt) zu schalten.

      Hintergrund ist, dass mein Lupusecrelais das Rollo gegen 6Uhr zu 50% hochfährt und wenn die XT3 unscharf ist später ganz hochfährt. Wenn ich das Haus verlasse und Scharf schalte fährt das Rollo ganz herunter und wenn ich nach Hause komme und entschärfe hoch. Da in die tiefen Wanddosen nur Relais oder Taster passten hatte ich diverse Lupusecrelais mit Blende im Einsatz, was sich aber für meine Frau total dumm macht da Steuerung nur noch per App! Daher habe ich jetzt alle Relais bis auf eins durch die Tuya Rolladentaster ersetzt und wollte diese gerne automatisieren. Falls ihr eine bessere Idee habt um die Taster irgendwie mit der XT3 oder dem Relais zu koppeln bzw anhand von deren Statusänderung Aktionen durchzuführen, bin ich für alle Vorschläge offen.

      Das Lupusecrelais hat folgenden Status wenn der Rolladen geschaltet wird:
      hoch, runter, stop

      Die Tuyaschalter haben folgenden Status:
      hoch = (2)
      runter = (1)
      stop = (3)

      Mein Script habe ich teilweise von Elzersharks Script übernommen (hoffe das ist ok), wollte es allerdings stark vereinfachen, das Ziel:
      Lupusecrelais hoch= Tuyataster hoch(2)
      Lupusecrelais runter= Tuyataster runter(1)
      Lupusecrelais stop= Tuyataster stop(3)

      Anbei ein Screenshot meines Scripts, bin für jeden Hinweis dankbar! bin leider nocht nicht so gut in dem Thema 😞

      2ab3580a-cdb3-4a8f-9abb-a276525fd497-grafik.png

      Infos zum Script:

      ObjectID Status ist der Tuyataster (Status 1,2,3)
      ObjectID Flur (hoch/runter) ist das Lupusecrelais

      Ich hoffe ihr könnt mir folgen mit meiner Idee.
      Danke schon mal im voraus!

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

        Bitte ignorieren.

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

          @paul53
          deinen Kommentar oder was meinst du?

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

            @benziman sagte:

            @paul53
            deinen Kommentar oder was meinst du?

            Ich hatte mich dadurch täuschen lassen, dass eine Variable den gleichen Bezeichner (status) hat, wie der Name des Trigger-Datenpunktes lautet. Das sollte man vermeiden, zumal Variablen und Trigger die gleiche Farbe haben.

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

              @benziman
              Es wird der falsche Datenpunkt zum Triggern verwendet, denn die Quelle soll das Lupusecrelais sein. Ändere das Trigger-Objekt in Flur (Rollladen hoch/runter).

              Blockly_temp.JPG

              Export (IDs zuweisen !):

              <xml xmlns="http://www.w3.org/1999/xhtml">
               <variables>
                 <variable type="" id="4Y#?XT8YMB$a2tVPupOu">cmd</variable>
               </variables>
               <block type="comment" id="G(c]vg:,U/c^D?;TM!7T" x="-588" y="162">
                 <field name="COMMENT">Flur (Rollladen hoch/runter)</field>
                 <next>
                   <block type="on" id="}og1U7*H/4fSVU,M2FTv">
                     <field name="OID">Object ID</field>
                     <field name="CONDITION">ne</field>
                     <field name="ACK_CONDITION"></field>
                     <statement name="STATEMENT">
                       <block type="controls_if" id="Uz@1cpu@[8,g5-;IKCLQ">
                         <mutation elseif="1" else="1"></mutation>
                         <value name="IF0">
                           <block type="logic_compare" id="A$)h!enyxg`wM7z:Vm6|">
                             <field name="OP">EQ</field>
                             <value name="A">
                               <block type="on_source" id="c,-[T?C.19yU8uE=};`s">
                                 <field name="ATTR">state.val</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="text" id="6tF1O)HmnCAi?W2r`PWG">
                                 <field name="TEXT">runter</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="variables_set" id="8AgIq?fU[NTp)U_ZA(#!">
                             <field name="VAR" id="4Y#?XT8YMB$a2tVPupOu" variabletype="">cmd</field>
                             <value name="VALUE">
                               <block type="math_number" id="{`ThgFR5eJ)#s9;q!4yA">
                                 <field name="NUM">1</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                         <value name="IF1">
                           <block type="logic_compare" id="=!V4UnQlFn3syN=1/iAt">
                             <field name="OP">EQ</field>
                             <value name="A">
                               <block type="on_source" id="M|o?QT%wnt*:gM;E/qFo">
                                 <field name="ATTR">state.val</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="text" id="K)n.)/.Zikb6Y^=gnm4I">
                                 <field name="TEXT">hoch</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO1">
                           <block type="variables_set" id="|@F~5E?{13f0tFYjepX`">
                             <field name="VAR" id="4Y#?XT8YMB$a2tVPupOu" variabletype="">cmd</field>
                             <value name="VALUE">
                               <block type="math_number" id="JE@=P./!6@KXl}HGxk=b">
                                 <field name="NUM">2</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                         <statement name="ELSE">
                           <block type="variables_set" id="r}H*1OH6h/mmhpZce0=s">
                             <field name="VAR" id="4Y#?XT8YMB$a2tVPupOu" variabletype="">cmd</field>
                             <value name="VALUE">
                               <block type="math_number" id="P~`7[rC#cewB2?`af)`!">
                                 <field name="NUM">3</field>
                               </block>
                             </value>
                           </block>
                         </statement>
                         <next>
                           <block type="control" id="(4}$;pPQJO2=uN`AV6y#">
                             <mutation delay_input="false"></mutation>
                             <field name="OID">Object ID</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="variables_get" id="oV8%}5tblpO%kSe~N$ee">
                                 <field name="VAR" id="4Y#?XT8YMB$a2tVPupOu" variabletype="">cmd</field>
                               </block>
                             </value>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
              </xml>
              

              1 Reply Last reply Reply Quote 0
              • B
                benziman last edited by benziman

                Hi, erstmal mal Danke für die schnelle Antwort und den Aufwand!

                Hat leider nicht funktioniert (Status vom Lupusecrelais wird auch nur sehr verzögert aktualisiert)
                Für die ObjectID habe ich das Lupusecrelais (Flur) und davon die ID "switch" genommen. unten bei ObjectID habe ich dann meinen Schalter im Arbeitszimmer genommen, leider tut sich nichts 😞

                Anbei mal ein Screenshot vom Lupusecrelais.

                b9499689-c7af-4148-8fac-3e6041d54313-grafik.png

                gglfs könnte ich das Script ja auch ändern, so dass sich alle Tuyarelais öffnen/schließen für 10 Sekunden (ca 50%) und sich das Lupusecrelais dem anschließt?
                Blicke bei Blockly leider noch nicht ganz durch, daher DANKE für jeden Tipp/Hinweis oder sogar jedes Script 🙂

                Hier noch der Output der Logs:
                bd4b34a1-54f9-48b2-a056-d2c03ba51b62-grafik.png

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

                  @benziman sagte:

                  Anbei mal ein Screenshot vom Lupusecrelais.

                  Der Datenpunkt mit dem Namen Flur (Rollladen hoch/runter) liefert keinen String, sondern Zahlenwerte - ist also ein Multistate-Datenpunkt. Poste mal die RAW-Ansicht der Objekteigenschaften (in Code Tags).

                  1 Reply Last reply Reply Quote 0
                  • B
                    benziman last edited by

                    Du meinst das hier oder?

                    1b64f226-eac6-4875-8dfe-f4e59ce9bd43-grafik.png

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

                      @benziman sagte:

                      Du meinst das hier oder?

                      Ja, und daraus sieht man, dass Zahlen geprüft werden müssen.

                      Blockly_temp.JPG

                      1 Reply Last reply Reply Quote 0
                      • B
                        benziman last edited by benziman

                        Danke! Habe ich angepasst, leider bewegt sich da weiterhin nix.
                        RAW vom Tuyaschalter mal anbei (vllt liegt es ja daran)

                        753d6973-3de7-4952-ba2d-bd892da9ef9d-grafik.png

                        Auch eine Steuerung nach Zeitplan klappt nicht. Status ist wieder wie oben beschrieben der Tuyataster.

                        7d8778cb-723b-431e-ab1f-a0748b4c3279-grafik.png

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

                          @benziman sagte:

                          RAW vom Tuyaschalter mal anbei (vllt liegt es ja daran)

                          Ja, wer denkt sich so einen besch... Multistate aus ?

                          Blockly_temp.JPG

                          1 Reply Last reply Reply Quote 0
                          • B
                            benziman last edited by

                            ok, eine gute und eine schlechte Nachricht.
                            Die Gute, der Lupusecschalter wird jetzt geschaltet wenn das Lupusecrelais hochfährt 🙂 DANKE!
                            Die "schlechte" der Tuyaschalter fährt nicht den kompletten Weg hoch/runter auch wenn es das Lupusecrelais macht (da eine gewisse Verzögerung ca 5 Sekunden vorliegt). Die Rollos benötigen 19 Sekunden für eine komplette fahrt, leider hat der Tuyaschalter keine Öffnungsanzeige sondern schaltet nur nach Zeit 😕
                            Eine Idee?

                            1 Reply Last reply Reply Quote 0
                            • B
                              benziman last edited by benziman

                              Schön dumm wenn man die Parameter für hoch/runter/stop falsch liest^^
                              Dann denke ich mal, das eine Kopplung an das Lupusecrelais wegen der Verzögerung ungeeignet ist, daher wäre meine Idee folgende via Zeitplan (getestet und funktioniert)
                              5f324afe-5245-4181-bea2-d19bed3dc332-grafik.png

                              Drei Fragen dazu:

                              1. wie kann ich denn am einfachsten noch eine Hoch/Runterfahrzeit definieren (also z.B fahre um 6 Uhr für 10Sekunden hoch, entspricht ca 50%)

                              2. da ich 6 Tuyataster habe (bei denen der Status naturlich überall "Status" heist), wie kann ich das jetzt für alle Schalter umsetzen, einfach copy/paste unter die jeweiligen Einträge für alle sechs Schalter?

                              So vielleicht? (Test gerade hat nicht funktioniert!)
                              f6b0e78a-565a-4cc7-b413-7908ad79a727-grafik.png

                              1. letzte Frage: gerne würde ich noch eine zusätzliche Bedingung wie bei 1. mitgeben: Sprich 1. bleibt im Script und es kommt eine weitere Bedingung hinzu: Fahre um 7Uhr Rolladen für weitere 10 Sekunden (da ja zu dem Zeitpunkt auf 50%) hoch wenn Alarmanlage unscharf.

                              hier zumindest meine Idee wenn Alarmanlage unscharf ist (Zeitintervall 10Sekunden fahren fehlt noch)
                              e7f7bf6d-5975-47fe-9b9f-1adaa9c24467-grafik.png

                              So sieht die Zeile in der Objektansicht aus für den Status unscharf.
                              ce4effe6-9ae2-4638-977e-3c908c23cc30-grafik.png

                              RAW des Eitnrags
                              362e40db-a033-411f-a3c7-cd51ee7daed9-grafik.png

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

                                @benziman sagte:

                                fahre um 6 Uhr für 10Sekunden hoch, entspricht ca 50%

                                Nach 10 s stoppen.

                                Blockly_temp.JPG

                                @benziman sagte:

                                bei denen der Status naturlich überall "Status" heist

                                Das solltest Du ändern, denn in Blockly sieht man die Namen der Datenpunkte, die beliebig angepasst werden können.

                                @benziman sagte in Tuyaschalter mit Lupusecrelais koppeln -Blockly:

                                einfach copy/paste unter die jeweiligen Einträge für alle sechs Schalter?

                                Copy/paste funktioniert nicht, da alle 6 Datenpunkte ein andere ID haben. 6 mal steuere mit Zuweisung der jeweiligen ID funktioniert.

                                @benziman sagte in Tuyaschalter mit Lupusecrelais koppeln -Blockly:

                                hier zumindest meine Idee wenn Alarmanlage unscharf ist

                                Die Abfrage muss innerhalb des Zeit-Triggers erfolgen.

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

                                  @paul53

                                  Zeitintervall habe ich hinzugefügt

                                  5c4878d5-7bce-45b5-9d70-deacaded636a-grafik.png

                                  @benziman sagte:

                                  bei denen der Status naturlich überall "Status" heist
                                  

                                  Das solltest Du ändern, denn in Blockly sieht man die Namen der Datenpunkte, die beliebig angepasst werden können.

                                  --> kann ich dass dann einfach in der Ojektansicht ändern? (wird das nicht beim nächsten Sync mit der Tuyaapp wieder überschrieben?)

                                  hier zumindest meine Idee wenn Alarmanlage unscharf ist
                                  

                                  Die Abfrage muss innerhalb des Zeit-Triggers erfolgen.
                                  --> da kann ich dir nicht ganz folgen, da ich nicht weiß wie ich diesen Block innerhalb des Zeitplans einfügen kann 😕
                                  a8c20553-160f-4910-9c2b-5c10aa4e7e00-grafik.png

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

                                    @benziman sagte:

                                    kann ich dass dann einfach in der Ojektansicht ändern?

                                    Ja.

                                    @benziman sagte in Tuyaschalter mit Lupusecrelais koppeln -Blockly:

                                    wird das nicht beim nächsten Sync mit der Tuyaapp wieder überschrieben?

                                    Keine Ahnung, sollte aber nicht sein.

                                    @benziman sagte in Tuyaschalter mit Lupusecrelais koppeln -Blockly:

                                    da ich nicht weiß wie ich diesen Block innerhalb des Zeitplans einfügen kann

                                    Blockly_temp2.JPG

                                    @benziman sagte in Tuyaschalter mit Lupusecrelais koppeln -Blockly:

                                    Zeitintervall habe ich hinzugefügt

                                    Wenn alle Rollos zur gleichen Zeit gestoppt werden sollen, genügt ein Timeout in dem alle Stop-Befehle ausgeführt werden.

                                    Hier noch eine Möglichkeit, mit Prozenten (z.B. aus einem Datenpunkt) anstelle von festen Zeiten bis zum Stop zu arbeiten:

                                    Blockly_temp.JPG

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      benziman last edited by benziman

                                      Das mit dem Status schaue ich mir mal an.

                                      Mein Zeitplan sieht jetzt wie folgt aus:

                                      5b9a71c2-e66c-4379-8dd4-1d47fc4fca24-grafik.png

                                      so wie du meintest?

                                      Danke für deine Idee mit den Prozenten, versuche ich heute Abend!

                                      Sähe eine Verkettung dann in etwa so aus oder klappt das dann nicht?

                                      e9bb17ce-675f-45e1-baa4-a7ea842ac690-grafik.png

                                      der oberste Zeitplan soll immer um 6 Uhr ausgeführt werden. der in der mitte nur wenn unscharf und der letzte auch immer egal ob unscharf oder nicht.

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

                                        @benziman sagte :

                                        Sähe eine Verkettung dann in etwa so aus oder klappt das dann nicht?

                                        Das sollte so funktionieren. Da der Stop für 2 Rollos jeweils gleichzeitig erfolgt, genügen anstelle von 6 Timeouts auch 3 Timeouts.

                                        Blockly_temp2.JPG

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

                                          @paul53

                                          Das müsste ja dann auch für alle sechs Schalter auf einmal klappen oder? (hatte erstmal nur zwei als Beispiel genommen)

                                          Kann es sein, dass das Script die diversen Schalter momentan nicht richtig ansteuern kann, weil alle "Status" heisen?
                                          Hatte das vorhin mal zu Hause versucht, allerdings hat sich nur ein Rollo bewegt.

                                          Habe jetzt mal deine Prozentvariante nachgebaut: (Variable Prozent hatte ich definieren müssen da nicht vorhanden)
                                          62d07861-054d-476a-ac6f-4123e33e2cb2-grafik.png

                                          Bei "stop zyklische Ausführung" habe ich leider keine Auswahl, das Fenster im Dropdown sieht auch ziemlich komisch aus.
                                          Eine Idee?

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

                                            @benziman sagte:

                                            Das müsste ja dann auch für alle sechs Schalter auf einmal klappen oder?

                                            Ja.

                                            @benziman sagte:

                                            Bei "stop zyklische Ausführung" habe ich leider keine Auswahl, das Fenster im Dropdown sieht auch ziemlich komisch aus.
                                            Eine Idee?

                                            Das Intervall muss erst erzeugt werden, bevor es gestoppt werden kann. Du verwendest aber nicht Intervall, sondern Timeout !

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            774
                                            Online

                                            31.9k
                                            Users

                                            80.3k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            36
                                            1482
                                            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