Navigation

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

    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

    Blockly Logik verstehen

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

      Hallo zusammen,
      ich versuche die Blockly Logik zu verstehen.
      Ich möchte ein einfache Programm von der Homematic nach Blockly importieren, scheitere aber kläglich.
      Das Programm soll EINMALIG über 500 Lux den Rolladen öffnen.
      Homematic.JPG
      Das hier funktioniert nicht (invalid type of id - boolean):
      Blockly1.JPG
      Und das hier öffnet den Rollladen auch, wenn ich ihn über den Tag mal etwas runterfahre zum verschatten... Klar, es reagiert ja auf jede Änderung...
      Blockly2.JPG

      Irgendwie verstehe ich die Logik nicht, habe aber auch nirgends etwas erklärendes gefunden...

      Dickes Danke an den der sich die Mühe macht mir zu helfen!!!
      Gruß Thorsten

      J BBTown 3 Replies Last reply Reply Quote 0
      • J
        Jan1 @tcfigge last edited by

        @tcfigge
        Im Trigger darf nur ein Objekt verwendet werden, das ist schon Dein Fehler.

        T 1 Reply Last reply Reply Quote 0
        • BBTown
          BBTown @tcfigge last edited by

          @tcfigge
          Was ist denn offen?
          = 0
          oder =100?

          Wieviel % wären denn ca. Beschattung?

          Ich bin noch nicht ganz sicher was genau Du wann und wie steuern möchtest.
          Kommen noch weitere Rolläden ins Spiel?

          1 Reply Last reply Reply Quote 0
          • BBTown
            BBTown @tcfigge last edited by BBTown

            @tcfigge
            Zum Nachbilden deines HomeMatic Programmes würde ich folgendes Vorschlagen
            dc1f2f68-5067-458d-880d-7895d0025fbc-grafik.png

            Wenn deine Beschattung bei 30% liegt könnte das ggf. so mit berücksichtigt werden
            9ab3235b-6ef1-4170-820d-253ed7be4c5f-grafik.png

            <xml xmlns="http://www.w3.org/1999/xhtml">
             <block type="on_ext" id="obbkvR7Jau#O.YpSbHC}" x="26" y="30">
               <mutation items="1"></mutation>
               <field name="CONDITION">ne</field>
               <field name="ACK_CONDITION"></field>
               <value name="OID0">
                 <shadow type="field_oid" id="5bi^^aaJ:}R}0z%HWxXI">
                   <field name="oid">Test.0.Lichtsensor</field>
                 </shadow>
               </value>
               <statement name="STATEMENT">
                 <block type="controls_if" id="Rp{YLo^%o#6S$hO_jJ]=">
                   <value name="IF0">
                     <block type="logic_operation" id="WavvC@ol3puffWimMIaK" inline="false">
                       <field name="OP">AND</field>
                       <value name="A">
                         <block type="logic_compare" id="w0o}=^/,(S9XR|LJ|b]c">
                           <field name="OP">GT</field>
                           <value name="A">
                             <block type="get_value" id="Z{GMEnU7rX]0O8mdWRRU">
                               <field name="ATTR">val</field>
                               <field name="OID">Test.0.Lichtsensor</field>
                             </block>
                           </value>
                           <value name="B">
                             <block type="math_number" id="g:v/6kRn6k]#IZD#I-I8">
                               <field name="NUM">500</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <value name="B">
                         <block type="logic_compare" id="x{#)E^ZuVTudA1KwVEb#">
                           <field name="OP">LTE</field>
                           <value name="A">
                             <block type="on_source" id="~n!^b0||-!,k!%4.hQIa">
                               <field name="ATTR">oldState.val</field>
                             </block>
                           </value>
                           <value name="B">
                             <block type="math_number" id="4?s-ka=#-J;Y[8/?W;+y">
                               <field name="NUM">500</field>
                             </block>
                           </value>
                         </block>
                       </value>
                     </block>
                   </value>
                   <statement name="DO0">
                     <block type="controls_if" id="`jw~`H=+@JExWnm-tk|}">
                       <value name="IF0">
                         <block type="logic_compare" id="QRI4iR;cx8$l%-#t$$Zo">
                           <field name="OP">LT</field>
                           <value name="A">
                             <block type="get_value" id="lrN%TGF=C}j_m.!%WTvP">
                               <field name="ATTR">val</field>
                               <field name="OID">Test.0.Rolladen-1</field>
                             </block>
                           </value>
                           <value name="B">
                             <block type="math_number" id="Es^Lrw^L]]_P/H11-BF/">
                               <field name="NUM">30</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <statement name="DO0">
                         <block type="control" id="jRY{^8jlj@y~HZ[%R1Do">
                           <mutation delay_input="false"></mutation>
                           <field name="OID">Test.0.Rolladen-1</field>
                           <field name="WITH_DELAY">FALSE</field>
                           <value name="VALUE">
                             <block type="math_number" id="(IWcuFtW`O/gFilb1Nmv">
                               <field name="NUM">100</field>
                             </block>
                           </value>
                         </block>
                       </statement>
                     </block>
                   </statement>
                 </block>
               </statement>
             </block>
            </xml>
            

            T 2 Replies Last reply Reply Quote 1
            • T
              tcfigge @Jan1 last edited by

              @Jan1
              Wo habe ich denn 2 Trigger?😯

              1 Reply Last reply Reply Quote 0
              • O
                oFbEQnpoLKKl6mbY5e13 last edited by

                Das hast du missverstanden. Du darfst an den "Falls Objekt"-Flansch nur ein Objekt-ID anhängen.

                T 1 Reply Last reply Reply Quote 0
                • T
                  tcfigge @BBTown last edited by

                  @BBTown
                  Danke für die Ideen. Das werde ich mal probieren!
                  Beschattung ist manuell, die Automatik hat denn WAF gefährdet. 😉
                  Heißt, ich gehe einfach hin und fahre den Rollladen auf 50%.
                  In meiner 2. Variante fährt er dann aber, wenn der Lichtsensor wieder gemeldet hat, dann aber wieder hoch...

                  Warum funktioniert das in der ersten, der kurzen Variante nicht?
                  Kann man da immer nur auf Änderung eines Wertes an sich triggern?
                  Das ist mir noch etwas suspekt!

                  1 Reply Last reply Reply Quote 0
                  • T
                    tcfigge @oFbEQnpoLKKl6mbY5e13 last edited by

                    @oFbEQnpoLKKl6mbY5e13
                    Aha, danke für die Info!
                    Das schränkt einen aber schon ziemlich ein..💩

                    O J 2 Replies Last reply Reply Quote 0
                    • O
                      oFbEQnpoLKKl6mbY5e13 @tcfigge last edited by

                      @tcfigge
                      Kein bisschen!

                      1 Reply Last reply Reply Quote 0
                      • J
                        Jan1 @tcfigge last edited by

                        @tcfigge sagte in Blockly Logik verstehen:

                        @oFbEQnpoLKKl6mbY5e13
                        Aha, danke für die Info!
                        Das schränkt einen aber schon ziemlich ein..💩

                        Am Trigger im ersten Blockly hast eine Funktion gleich mit eingebaut und das geht nicht, was mit der FALLS darunter überhaupt nichts zu tun hat. Bei der FALLS kannst so viel dranhängen wie Du willst.

                        Das zweite Blockly ist von Aufbau richtig, da wird sich nur die Logik etwas beißen, da es sonst wie gewünscht funktionieren sollte. Spiel das einfach mal durch und pass die Werte gegebenenfalls an.

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tcfigge @BBTown last edited by

                          @BBTown
                          Ausprobiert:
                          87d899a4-3a54-4996-a7ea-60fc72ccfa33-image.png
                          Funktioniert!
                          Danke!

                          ThomasBahn 1 Reply Last reply Reply Quote 0
                          • T
                            tcfigge @Jan1 last edited by

                            @Jan1
                            Danke!
                            Habe ich verstanden, auch wenn direkt auf einen Wert zu triggern charmanter wäre...
                            So ist das Programm in der Homematic einfacher...

                            J 1 Reply Last reply Reply Quote 0
                            • J
                              Jan1 @tcfigge last edited by

                              @tcfigge
                              Mit Blockly ist das auch recht einfach und im Trigger sind ja Objekte erlaubt, nur eben keine weitere Logik als Trigger.
                              Die eigentliche Logik in Blockly ist auch nicht so schwer und man kann sich da sehr schnell und einfach ran tasten. Mit dem Debug Block kann man dann auch schön sehen wo es klemmt, einfach dem Block ein Namen verpassen und dort einbauen wo was passieren soll, so taucht dann dieser Name im Log auf und man sieht ob es funktioniert, oder eben nicht.

                              1 Reply Last reply Reply Quote 0
                              • ThomasBahn
                                ThomasBahn @tcfigge last edited by

                                @tcfigge Vielleicht solltest du die Variable "vorheriger Wert" am Ende - also noch im Falls Objekt-Block, nach dem falls/mache-Block - auf den aktuellen Wert setzen.

                                Und wenn das Skript startet, könntest du "vorheriger Wert" noch mit dem aktuellen Helligkeitswert initialisieren.

                                J BBTown 2 Replies Last reply Reply Quote 0
                                • J
                                  Jan1 @ThomasBahn last edited by

                                  @ThomasBahn
                                  Das ist keine Variable in dem Sinn, sondern bezieht sich auf das Objekt im Trigger und ist somit immer definiert.

                                  1 Reply Last reply Reply Quote 0
                                  • BBTown
                                    BBTown @ThomasBahn last edited by BBTown

                                    @ThomasBahn
                                    den Baustein findest Du an folgender Stelle und kannst dann über das Dropdown aussuchen was dieser beinhalten soll.
                                    triggerWert.gif 26cdc03d-81a8-4b24-9b07-67962de172f3-grafik.png

                                    T 1 Reply Last reply Reply Quote 0
                                    • T
                                      tcfigge @BBTown last edited by

                                      @BBTown
                                      Hi!
                                      Habe jetzt ein paar Skripte gebaut.
                                      Läuft auch soweit!
                                      Jetzt hae ich ein neues gebaut( noch nicht getestet, ob es funktioniert)
                                      Aber da kam folgende Frage:
                                      Wenn ich mehrere Objekte als Trigger einbaue, kann ich dann das Trigger Modul noch nutzen?
                                      Beispiel.JPG
                                      Woher weißt das Modul, welcher WERT gemeint ist?
                                      Ich hoffe man versteht mich 🙂

                                      Danke!!!
                                      Thorsten

                                      BBTown 1 Reply Last reply Reply Quote 0
                                      • BBTown
                                        BBTown @tcfigge last edited by

                                        @tcfigge

                                        Der Trigger übernimmt den Auslöser.

                                        So wie ich das verstehe, handelt es sich bei den von dir verwendeten Triggerpunkten um unterscheidliche Typen (mal ist es ein boolscher Wert (true/false) und mal ein Zahl), wie soll das dann in deinem Script gehen?
                                        Wie soll denn "true" zum Beispiel mit "> 200" vergliechen werden?

                                        Schreibe doch einmal EXAKT auf was Du umsetzen willst.
                                        Was soll denn nun wann geschen oder auch nicht?
                                        So wie ich es bisher sehe wird es so oder auf eine "Funktion" hinauslaufen, was kein Problem ist sofern völlig klar ist auf was reagiert werden soll ud wie das Ergebnis ausschauen soll.

                                        T 1 Reply Last reply Reply Quote 0
                                        • T
                                          tcfigge @BBTown last edited by tcfigge

                                          @BBTown
                                          Hi!
                                          Das ist wieder eine Rollladensteuerung.
                                          Trigger soll die Helligkeit, ein Systemvariable, die ich setzte ob ich im "imBett" Modus bin, oder nicht, und eine Zweite, die erkennt, ob ich im Bett angekommen bin, oder noch auf dem Weg dahin...
                                          Das ist nicht so einfach 😉

                                          Mir ginge es jetzt primär um den Block, den Du mir gezeigt hast, weil der "vorheriger Wert" ist praktisch! Man kann ihm aber nicht sagen, auf welchen Trigger er reagiert?

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            tcfigge last edited by

                                            Mist, den Screenshot kann man nicht erkennen...und nicht mehr löschen 😞

                                            Es ist wieder eine Rollladensteuerung.

                                            Trigger soll sein: Helligkeit und 2 Systemvariablen.

                                            Die Logik ist nicht so einfach erklärt 😉

                                            Mir ging es darum, ob es einen Weg gibt, den Block, welchen Du mir die Tage geziegt hast, quasi zu sagen, welchem Trigger er zugeordnet ist?
                                            Die Funktion "vorheriger Wert" ist nämlich recht praktisch...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            838
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            5
                                            21
                                            1558
                                            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