Navigation

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

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    blockly eleganter machen

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Ahnungsbefreit last edited by mickym

      @Ahnungsbefreit sagte in blockly eleganter machen:

      @dos1973 Sehr schön, also ist Blockly doch nicht so unelegant 🙂

      Habe ich ja nicht behauptet - hab gesagt, dass ich mich mit Blockly nicht auskenne - aber halt mit anderen Mitteln so einen Lösungsansatz gewählt habe. 😉 . Aber ist doch super, wie Du hier mit dem Lösungsansatz das Ganze in die richtigen Bahnen gelenkt hast. Vielen Dank auch von mir!

      1 Reply Last reply Reply Quote 0
      • David G.
        David G. @Ahnungsbefreit last edited by David G.

        @Ahnungsbefreit

        Das habe ich nie wie ich wollte ans laufen bekommen.....

        Da ich nur homematic benutze, reicht mir das so.

        Eine kleine Frage aber noch.

        Reicht das eine "*" im Selektor immer aus, oder braucht man wenn der Datenpunkt in weiteren Unterordner ist noch entsprechend viele weitere Sternchen.

        So lasse ich mir eine Telegram senden und eine Notification in meiner VIS.

        A 1 Reply Last reply Reply Quote 0
        • A
          Ahnungsbefreit @David G. last edited by

          @David-G Das Sternchen kommt da hin, wo sich in der Aufzählung was ändert und nur dort hin sonst bekommst Du zu viele "falsche" Treffer.

          David G. 1 Reply Last reply Reply Quote 0
          • David G.
            David G. @Ahnungsbefreit last edited by

            @Ahnungsbefreit

            Also für

            hm-rpc.0.0000DA49A61F2A.0.LOW_BAT
            

            Müsste ich dann

            hm-rpc.0.*.*.LOW_BAT
            

            nehmen um alle Geräte abzufangen?

            LOW_BAT liegt immer nochmal unter der 0.

            A 1 Reply Last reply Reply Quote 0
            • A
              Ahnungsbefreit @David G. last edited by Ahnungsbefreit

              @David-G said in blockly eleganter machen:

              hm-rpc.0...LOW_BAT

              hm-rpc.0.*.0.LOW_BAT
              

              sollte reichen, also ein "*"

              David G. 1 Reply Last reply Reply Quote 1
              • David G.
                David G. @Ahnungsbefreit last edited by

                @Ahnungsbefreit

                Dank dir,

                hab mein Blockly jetzt fertig.
                War vorher auch sehr lang und musste bei neuen Geräten immer angepasst werden.
                Auch dadurch, dass ich für jedes Gerät einen eigenen Trigger hatte der dann den Namen des Gerätes in einen Datenpunkt geschrieben hat für die beiden Meldungen auf welchen ich dann regiert habe.

                Dann warte ich mal, auf die nächste Akkuwarnung.

                D 1 Reply Last reply Reply Quote 0
                • D
                  dos1973 @David G. last edited by dos1973

                  @Ahnungsbefreit

                  ich hab noch irgendwo einen Denkfehler...
                  ich habe mein Script jetzt umgebaut, aber ich will ja einen DP haben, der alle Shellys beinhaltet die *offline sind.

                  mein DP text Shelly offline wird aber jedesmal überschrieben wenn der Trigger startet, eigentlich logisch - aber ich weiß nicht wie ich da rauskomme und einen DP habe, der mit den offline Status aller shelly anzeigt.

                  Bildschirmfoto 2021-01-03 um 14.22.33.png

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    dos1973 @dos1973 last edited by

                    es muss wohl mit Listen gehen... aber ich stelle mich wahrscheinlich etwas doof an.

                    es klappt zumindest in kleinen Teilen... aber bei weitem nicht wie erhofft.

                    Bildschirmfoto 2021-01-03 um 16.07.53.png

                    A 1 Reply Last reply Reply Quote 0
                    • A
                      Ahnungsbefreit @dos1973 last edited by

                      @dos1973 für das, was Du vorhast, würde ich als Trigger das Zeitintervall z.B. alle 5 Minuten nehmen und dann in einer Schleife durch alle Shellys (mit dem Selektor) gehen und die beiden Listen online/offline erzeugen lassen

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        Ahnungsbefreit @Ahnungsbefreit last edited by

                        @dos1973 also so in der Art:

                        f7c1c380-b127-465b-8421-ae65fbbf8da5-image.png

                        D 1 Reply Last reply Reply Quote 0
                        • D
                          dos1973 @Ahnungsbefreit last edited by

                          @Ahnungsbefreit

                          ich bekomme es nicht hin, auch mit deinem Bsp sind offline und online die gleichen Inhalte?

                          Und ich bekomme den "friendly" Name nicht angezeigt.

                          *Ursprüngliche Begeisterung schwindet langsam in Ernüchterung.

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            Ahnungsbefreit @dos1973 last edited by

                            @dos1973 pack mal ein paar Debug Ausgaben rein, dann findest Du sicherlich den Fehler. Ich kann wie gesagt mangels Shellys nicht selbst testen

                            D 1 Reply Last reply Reply Quote 0
                            • D
                              dos1973 @Ahnungsbefreit last edited by

                              @Ahnungsbefreit
                              heute nicht mehr... morgen wieder.
                              keine Lust mehr, habe mein Ursprungs script erstmal Wieder reaktiviert. Ist zwar ellenlang aber geht 😉

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                Ahnungsbefreit @dos1973 last edited by

                                @dos1973 Ich habe das mal am Beispiel HOMEMATIC Geräte umgesetzt, da ich ja wie erwähnt kein Shelly nutze. Es wurde noch etwas komplizierter, um den Klartextnamen aus der ID des Gerätes zu bekommen aber sonst funktioniert meine Lösung von oben und sollte auch leicht auf Shelly anpassbar sein.

                                e6a128fd-a599-4f61-a6ac-71e050488a48-image.png

                                Die Javascript Funktion ist nur ein Einzeiler (danke @paul53 dafür in einem anderen Thread) mit Inhalt:

                                return getObject(id);
                                

                                Falls gewünscht, kann ich das ganze Script hier auch hochladen.

                                Ich werde im nächsten Schritt die unschöne Textliste (auch noch mit Komma am Anfang! :-)) gegen ein JSON ersetzen, das man so direkt in die VIS einbinden kann. So etwas brauche ich sowieso...

                                D David G. 3 Replies Last reply Reply Quote 0
                                • D
                                  dos1973 @Ahnungsbefreit last edited by dos1973

                                  @Ahnungsbefreit ja liebend gerne 🙂
                                  oha, mit json wollte ich dann auch irgendwann einsteigen, die Textlisten will ich auch loswerden...

                                  A 1 Reply Last reply Reply Quote 0
                                  • David G.
                                    David G. @Ahnungsbefreit last edited by

                                    @Ahnungsbefreit

                                    Ist die ParentID dann der Name vom Homematicgerät?

                                    1.JPG

                                    A 1 Reply Last reply Reply Quote 0
                                    • A
                                      Ahnungsbefreit @David G. last edited by Ahnungsbefreit

                                      @David-G In meinem Setup, ja und auch bei Dir sollte "Sensor_Garagentor" rauskommen

                                      1 Reply Last reply Reply Quote 0
                                      • D
                                        dos1973 @Ahnungsbefreit last edited by dos1973

                                        @Ahnungsbefreit

                                        in dem Teil kann ich dir nicht folgen

                                        Bildschirmfoto 2021-01-04 um 12.04.23.png

                                        kannst mal deine Ausgabe posten

                                        A 1 Reply Last reply Reply Quote 0
                                        • A
                                          Ahnungsbefreit @dos1973 last edited by

                                          @dos1973 So, habe mal statt Text das JSON gebaut. Es wird am Ende in UnreachJSON (das muss als Zeichenkette angelegt werden) geschrieben und das kann man in der VIS verwenden:

                                          5386f5a6-7a5c-4e50-b0ff-9a2f53fd75d4-image.png


                                          <xml xmlns="https://developers.google.com/blockly/xml">
                                          <variables>
                                          <variable id="e:To7F^NX#}ZFQB@0C@z">id</variable>
                                          <variable id="Z}boxz9?^jON|pfGA-@">JSONResult</variable>
                                          <variable id="WjK4C^/1-(^hahMgM|G">i</variable> <variable id="DPRZq(Ca-zxhX,^!Bf}O">ParentID</variable> </variables> <block type="procedures_defcustomreturn" id=".V;sGE(cJ|mFGY}YGD(F" x="-37" y="13"> <mutation statements="false"> <arg name="id" varid="e:To7F^NX#}ZFQB@0C@z"></arg> </mutation> <field name="NAME">GetObjectByID</field> <field name="SCRIPT">cmV0dXJuIGdldE9iamVjdChpZCk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="schedule" id="n_o)hpm1EZDO/j3//$:*" x="-37" y="63"> <field name="SCHEDULE">*/4 * * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="L%#e4Yf5R.h8IPul!}cM"> <field name="VAR" id="Z}boxz9?^jO*N|pfGA-@">JSONResult</field> <value name="VALUE"> <block type="text" id="|sq,CW3RlX@H%z8fP1tM"> <field name="TEXT">[</field> </block> </value> <next> <block type="controls_forEach" id="+o1bDpwZ5K_/,j${ekx">
                                          <field name="VAR" id="WjK4C^/1-(^hahMgM|G">i</field> <value name="LIST"> <block type="selector" id="P!k_vET^lcMtmbC*!q}S"> <field name="TEXT">hm-rpc.1.*.0.UNREACH</field> </block> </value> <statement name="DO"> <block type="variables_set" id="z=xJF=B%%ou4goJJ:WPy"> <field name="VAR" id="DPRZq(Ca-zxhX,^!Bf}O">ParentID</field> <value name="VALUE"> <block type="text_getSubstring" id="~3JND0l}$$KGMup%N7qP" inline="false"> <mutation at1="true" at2="true"></mutation> <field name="WHERE1">FROM_START</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="m!.y#jY-vio4K5i-sCKk"> <field name="VAR" id="WjK4C^/1-(^hahMgM|G">i</field>
                                          </block>
                                          </value>
                                          <value name="AT1">
                                          <block type="math_number" id="^m
                                          @r~G9M;LMNV7#;S!}">
                                          <field name="NUM">1</field>
                                          </block>
                                          </value>
                                          <value name="AT2">
                                          <block type="math_arithmetic" id="1m.?oR^]j3tYf]QptN4" inline="false"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="0t+}.]w{%V)crjiJ@%JG"> <field name="NUM">1</field> </shadow> <block type="text_indexOf" id="LG05Rd#]~*Y~T2ju}-9S"> <field name="END">LAST</field> <value name="VALUE"> <block type="variables_get" id=",@APDqA9${h,}omAL59Y"> <field name="VAR" id="WjK4C^/1-(^hahMgM|G">i</field>
                                          </block>
                                          </value>
                                          <value name="FIND">
                                          <shadow type="text" id="g8ouC|gtYS4b!gN7zf}">
                                          <field name="TEXT">.0.UNREACH</field>
                                          </shadow>
                                          </value>
                                          </block>
                                          </value>
                                          <value name="B">
                                          <shadow type="math_number" id="cyf0Vu7oZh!XuqXoL4ME">
                                          <field name="NUM">1</field>
                                          </shadow>
                                          </value>
                                          </block>
                                          </value>
                                          </block>
                                          </value>
                                          <next>
                                          <block type="variables_set" id="T~W~^WDX5STNSMfV.qa^">
                                          <field name="VAR" id="Z}boxz9?^jO
                                          N|pfGA-@">JSONResult</field>
                                          <value name="VALUE">
                                          <block type="text_join" id="$M$Em4v2K2Tm?}aG;X9"> <mutation items="6"></mutation> <value name="ADD0"> <block type="variables_get" id="ZB:Z#fUg.wu@[Y#(Tf9k"> <field name="VAR" id="Z}boxz9?^jO*N|pfGA-@">JSONResult</field> </block> </value> <value name="ADD1"> <block type="text" id="Uq6RjGKeY_.ja(73q@7x"> <field name="TEXT">{"Name":"</field> </block> </value> <value name="ADD2"> <block type="get_attr" id="j/j$_5s}Y#d129ta(gXY" inline="false"> <value name="PATH"> <shadow type="text" id="*R:?$IZ;iG~7xPO2z;)W"> <field name="TEXT">common.name</field> </shadow> </value> <value name="OBJECT"> <block type="procedures_callcustomreturn" id="@GOqX.uS2Gbgb%3uuTjY"> <mutation name="GetObjectByID"> <arg name="id"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="spdZtTg%lKFR9LO_fo"> <field name="VAR" id="DPRZq(Ca-zxhX,^!Bf}O">ParentID</field> </block> </value> </block> </value> </block> </value> <value name="ADD3"> <block type="text" id="2_hOa-Nk*d5U;^dR{~nN"> <field name="TEXT">","Connected":"</field> </block> </value> <value name="ADD4"> <block type="logic_ternary" id="1r%pcfSp2.CjXrPs]2at" inline="true"> <value name="IF"> <block type="get_value_var" id="e{pl,7A$0QpDUe#W4dN+"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="gXBz!DVWTG?wj0S@gQcv"> <field name="VAR" id="WjK4C^/1-(^hahMgM|G">i</field>
                                          </block>
                                          </value>
                                          </block>
                                          </value>
                                          <value name="THEN">
                                          <block type="text" id="2]di@bg|p-FPTks5u3X*">
                                          <field name="TEXT">❌</field>
                                          </block>
                                          </value>
                                          <value name="ELSE">
                                          <block type="text" id="{IzP9OwRcp!j=-tK+%$)">
                                          <field name="TEXT">✅</field>
                                          </block>
                                          </value>
                                          </block>
                                          </value>
                                          <value name="ADD5">
                                          <block type="text" id="jsxWLE6QoXfnm]EIzrzb">
                                          <field name="TEXT">"},</field>
                                          </block>
                                          </value>
                                          </block>
                                          </value>
                                          </block>
                                          </next>
                                          </block>
                                          </statement>
                                          <next>
                                          <block type="variables_set" id="K4q03kkjBJ_Ey9#Mw-S"> <field name="VAR" id="Z}boxz9?^jO*N|pfGA-@">JSONResult</field> <value name="VALUE"> <block type="text_join" id="=.Y@@~W,faYxV^2wOxYl"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text_getSubstring" id="{QWGaIyOYrDhGW,}LJx^" inline="false"> <mutation at1="false" at2="true"></mutation> <field name="WHERE1">FIRST</field> <field name="WHERE2">FROM_START</field> <value name="STRING"> <block type="variables_get" id="tk8thB9{(-1paz4c@Jr">
                                          <field name="VAR" id="Z}boxz9?^jON|pfGA-@">JSONResult</field>
                                          </block>
                                          </value>
                                          <value name="AT2">
                                          <block type="math_arithmetic" id="h!iAG;~?#iboXHvW!u1m">
                                          <field name="OP">MINUS</field>
                                          <value name="A">
                                          <shadow type="math_number" id="rtHz|UuI}XGW)y/R_|("> <field name="NUM">1</field> </shadow> <block type="text_length" id="]Sv)4mLL[YAVLkkAx%.C"> <value name="VALUE"> <shadow type="text" id="!WA#5hdfe0vbHiX.%[%/"> <field name="TEXT">abc</field> </shadow> <block type="variables_get" id="A)5#M,3}to-wZKb1vA{W"> <field name="VAR" id="Z}boxz9?^jO*N|pfGA-@">JSONResult</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="8_N@{o8~!p?D3XgtsxG5"> <field name="NUM">1</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="H_Gwre47EY~PRzMsv$s4"> <field name="TEXT">]</field> </block> </value> </block> </value> <next> <block type="control" id="AXH=4d=nlRurO%nYSVa">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                          <field name="OID">0_userdata.0.Helpers.UnreachJSON</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                          <block type="variables_get" id="80,(qLW{hq4i^|QCuY_L">
                                          <field name="VAR" id="Z}boxz9?^jO
                                          N|pfGA-@">JSONResult</field>
                                          </block>
                                          </value>
                                          <next>
                                          <block type="debug" id=";0(!LBLU_1ew@WMCvs[" disabled="true"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="90ai3))n!ZVjqq9M@.9Y"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id=".z[!onqDOeXw)#9%aUv">
                                          <field name="VAR" id="Z}boxz9?^jON|pfGA-@">JSONResult</field>
                                          </block>
                                          </value>
                                          </block>
                                          </next>
                                          </block>
                                          </next>
                                          </block>
                                          </next>
                                          </block>
                                          </next>
                                          </block>
                                          </statement>
                                          </block>
                                          <block type="variables_set" id="RDin]@yUGcqGY(,D/e|l" x="138" y="1753">
                                          <field name="VAR" id="Z}boxz9?^jO
                                          N|pfGA-@">JSONResult</field>
                                          <value name="VALUE">
                                          <block type="text_join" id="x3:}/s:Up4|FKGy=)=sP">
                                          <mutation items="2"></mutation>
                                          <value name="ADD0">
                                          <block type="variables_get" id="FrU.AT*$)3nX[aCSvA.0">
                                          <field name="VAR" id="Z}boxz9?^jON|pfGA-@">JSONResult</field>
                                          </block>
                                          </value>
                                          <value name="ADD1">
                                          <block type="text" id="oUPj8LS]`|{Z~|qItzVp">
                                          <field name="TEXT">]</field>
                                          </block>
                                          </value>
                                          </block>
                                          </value>
                                          <next>
                                          <block type="control" id="K^G@i,45#X:lS
                                          RUtIh?">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                                          <field name="OID">0_userdata.0.Helpers.ConnectedJSON</field>
                                          <field name="WITH_DELAY">FALSE</field>
                                          <value name="VALUE">
                                          <block type="variables_get" id="dQJ~]Se/e6f5s;v#D^WE">
                                          <field name="VAR" id="Z}boxz9?^jON|pfGA-@">JSONResult</field>
                                          </block>
                                          </value>
                                          <next>
                                          <block type="debug" id="qLc:/JIP~0A+~51,wUr_" disabled="true">
                                          <field name="Severity">log</field>
                                          <value name="TEXT">
                                          <shadow type="text">
                                          <field name="TEXT">test</field>
                                          </shadow>
                                          <block type="variables_get" id="+:T%YNT._7G!BO$S,;j@">
                                          <field name="VAR" id="Z}boxz9?^jO
                                          N|pfGA-@">JSONResult</field>
                                          </block>
                                          </value>
                                          </block>
                                          </next>
                                          </block>
                                          </next>
                                          </block>
                                          </xml>

                                          D 1 Reply Last reply Reply Quote 0
                                          • A
                                            Ahnungsbefreit @dos1973 last edited by Ahnungsbefreit

                                            @dos1973 In meinem Setup steht der Name des Geräts im "Klartext" (nicht wirklich, ich verwende Kürzel der Form Raum-Gerät, hier BUR(Büro) RAU(Rauchmelder)) und da UNREACH im Channel 0 darunter steht, entferne ich den Teil "0.UNREACH" am Ende. Damit habe ich den Namen des übergeordneten Geräts und über "common.name" dessen Namen:

                                            59d7618a-3e09-4424-9675-19b0ed7c3d20-image.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            526
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            5
                                            72
                                            4423
                                            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