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] Eingeschaltete Verbraucher überwachen

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Eingeschaltete Verbraucher überwachen

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      Jan1 @Tontechniker last edited by

      @tontechniker
      Das ist ein Zufallsprodukt 😉

      Wenn das wirklich boolen sind, dann ist die Konvertierung überflüssig.
      Ich fasse jetzt noch mal zusammen, was Du überhaupt machen willst.

      Beleuchtung Garten soll auf true wechseln, wenn Rundumleuchten oder Wege true sind, richtig?
      Wenn ja dann poste mal bitte den Export, damit ich das so umbaue, wie es für mich am logischsten wäre.

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

        @jan1
        Ich schicke Dir mal ein komplettes Stockwerk.
        Erster Stock.txt
        Und hier das einfache Beispiel.
        Garten.txt
        Danke!

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

          @tontechniker
          So und hier mein Vorschlag den ich wesentlich logischer finde:

          <block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="aSL),`N,s0i@ArEv$A,T" x="-1637" y="-987">
           <mutation xmlns="http://www.w3.org/1999/xhtml" items="9"></mutation>
           <field name="CONDITION">ne</field>
           <field name="ACK_CONDITION"></field>
           <value name="OID0">
             <shadow type="field_oid" id="5RiuB:XDJ~tm=HDWM#kr">
               <field name="oid">knx.0.1_Stock.Licht.Arbeit</field>
             </shadow>
           </value>
           <value name="OID1">
             <shadow type="field_oid" id="1mpLoQ:n2UBJd2so=~O.">
               <field name="oid">knx.0.1_Stock.Licht.Bad.Decke</field>
             </shadow>
           </value>
           <value name="OID2">
             <shadow type="field_oid" id="emIdUTu]So9[!X`P{yKh">
               <field name="oid">knx.0.1_Stock.Licht.Bad.Spiegel</field>
             </shadow>
           </value>
           <value name="OID3">
             <shadow type="field_oid" id="XL[]B8CQXkpuWOB/evm~">
               <field name="oid">knx.0.1_Stock.Licht.Essen</field>
             </shadow>
           </value>
           <value name="OID4">
             <shadow type="field_oid" id="=9#{V8yK`Ak=}BQiHyuP">
               <field name="oid">knx.0.1_Stock.Licht.Flur</field>
             </shadow>
           </value>
           <value name="OID5">
             <shadow type="field_oid" id="C6.!8kg8of7u%4sEEz;a">
               <field name="oid">knx.0.1_Stock.Licht.Gast</field>
             </shadow>
           </value>
           <value name="OID6">
             <shadow type="field_oid" id="zAc)X_A2y^IgN8%FT,8X">
               <field name="oid">knx.0.1_Stock.Licht.Kueche</field>
             </shadow>
           </value>
           <value name="OID7">
             <shadow type="field_oid" id="b$QgTEX8SKBi]D`:pBZH">
               <field name="oid">knx.0.1_Stock.Licht.Treppenhaus_unten</field>
             </shadow>
           </value>
           <value name="OID8">
             <shadow type="field_oid" id="ORi`Be@]12yiXBvsBIwQ">
               <field name="oid">knx.0.1_Stock.Licht.WZ</field>
             </shadow>
           </value>
           <statement name="STATEMENT">
             <block type="controls_if" id="4S6DfuWI.,%VDo`^`n2)">
               <mutation else="1"></mutation>
               <value name="IF0">
                 <block type="logic_operation" id="j.Mr^GxgdN#HCf}j@mod" inline="false">
                   <field name="OP">OR</field>
                   <value name="A">
                     <block type="logic_operation" id="csH^6{[qEDcqfl!dqpwI" inline="false">
                       <field name="OP">OR</field>
                       <value name="A">
                         <block type="logic_operation" id="=S33T*(g*`IeD~Vh*rxX" inline="false">
                           <field name="OP">OR</field>
                           <value name="A">
                             <block type="logic_operation" id="-C1LADSKx^[dl!vC`O=U" inline="false">
                               <field name="OP">OR</field>
                               <value name="A">
                                 <block type="logic_operation" id="af@O9e#J]l*$5Pnw]vG?" inline="false">
                                   <field name="OP">OR</field>
                                   <value name="A">
                                     <block type="logic_operation" id="_T(QHJ.!BWh5sjtNjli}" inline="false">
                                       <field name="OP">OR</field>
                                       <value name="A">
                                         <block type="logic_operation" id="cox!ZPgfn+sq#K3!-zDz" inline="false">
                                           <field name="OP">OR</field>
                                           <value name="A">
                                             <block type="logic_operation" id="1ZHx?$RN=.G[NrA$DDAu" inline="false">
                                               <field name="OP">OR</field>
                                               <value name="A">
                                                 <block type="get_value" id="0]-tlVapqsWqsbC62o!M">
                                                   <field name="ATTR">val</field>
                                                   <field name="OID">knx.0.1_Stock.Licht.Arbeit</field>
                                                 </block>
                                               </value>
                                               <value name="B">
                                                 <block type="get_value" id="|x$c|fd~$gC*k_l53o{%">
                                                   <field name="ATTR">val</field>
                                                   <field name="OID">knx.0.1_Stock.Licht.Bad.Decke</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <block type="get_value" id="Viw`.6J%=s3pD.@dMya1">
                                               <field name="ATTR">val</field>
                                               <field name="OID">knx.0.1_Stock.Licht.Bad.Spiegel</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <block type="get_value" id="_P4ScFk/u!^cD:H:pz9V">
                                           <field name="ATTR">val</field>
                                           <field name="OID">knx.0.1_Stock.Licht.Essen</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <value name="B">
                                     <block type="get_value" id="3O;Si1n0c6[a2@F}xQr[">
                                       <field name="ATTR">val</field>
                                       <field name="OID">knx.0.1_Stock.Licht.Flur</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="get_value" id="VA0r$;Go3YWDS[Y!2_Ia">
                                   <field name="ATTR">val</field>
                                   <field name="OID">knx.0.1_Stock.Licht.Gast</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <value name="B">
                             <block type="get_value" id="Em9b-qYo-R(0Qyo#7+jT">
                               <field name="ATTR">val</field>
                               <field name="OID">knx.0.1_Stock.Licht.Kueche</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <value name="B">
                         <block type="get_value" id="1T2-up7b4t^MOH$FrVk(">
                           <field name="ATTR">val</field>
                           <field name="OID">knx.0.1_Stock.Licht.Treppenhaus_unten</field>
                         </block>
                       </value>
                     </block>
                   </value>
                   <value name="B">
                     <block type="get_value" id="iX4$;A(yRbNt(?2SF3{a">
                       <field name="ATTR">val</field>
                       <field name="OID">knx.0.1_Stock.Licht.WZ</field>
                     </block>
                   </value>
                 </block>
               </value>
               <statement name="DO0">
                 <block type="update" id="G(%K%A!eTuh5]/et5opa">
                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                   <field name="OID">0_userdata.0.Überwachte_Verbraucher.Beleuchtung_Obergeschoss</field>
                   <field name="WITH_DELAY">FALSE</field>
                   <value name="VALUE">
                     <block type="logic_boolean" id="ecrg;1Vgu?#uT;ScHD:#">
                       <field name="BOOL">TRUE</field>
                     </block>
                   </value>
                 </block>
               </statement>
               <statement name="ELSE">
                 <block type="update" id="8([~8K672PMbnU#Xh,Ud">
                   <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                   <field name="OID">0_userdata.0.Überwachte_Verbraucher.Beleuchtung_Obergeschoss</field>
                   <field name="WITH_DELAY">FALSE</field>
                   <value name="VALUE">
                     <block type="logic_boolean" id="72XK[@tG@}5rQ.4U~X1#">
                       <field name="BOOL">FALSE</field>
                     </block>
                   </value>
                 </block>
               </statement>
             </block>
           </statement>
          </block>
          


          c7a21008-bc85-4344-ac70-4446c366bf39-grafik.png
          Dann noch ein Tipp für die Übersicht, rechte Maustaste auf den Block und "externe Eingänge" wählen 😉

          @paul53
          könnte man sich das viele Oder in der FALLS auch mit "ist wahr" im Trigger und WERT in der FALLS noch verkürzen?

          paul53 T 2 Replies Last reply Reply Quote 1
          • paul53
            paul53 @Tontechniker last edited by

            @tontechniker sagte: Ich kann auch mal den Code des Blocklys hier einstellen, dann können die Spezialisten nachsehen, warum es funktioniert.

            Das nutzt nichts, da wir nicht nachvollziehen können, was die Trigger-Datenpunkte liefern. Bau besser zwei Debug-Blöcke für die Log-Ausgabe der beiden Datenpunkt-Werte ein.

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

              @jan1 sagte: könnte man sich das viele Oder in der FALLS auch mit "ist wahr" im Trigger und WERT in der FALLS noch verkürzen?

              Nein.

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

                @paul53
                Hatte ich mir gedacht, da der Trigger hier leider nicht als ODER fungiert und die Zuordnung WERT wohl auch nicht so ist wie es bei einem einzelnen Objekt wäre, schade da man so alles doppelt angeben muss.

                @Tontechniker
                Der RAW eines der Trigger DPs wäre hier auch nützlich, da man da sieht wie der deklariert ist.

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

                  @jan1 sagte: Der RAW eines der Trigger DPs wäre hier auch nützlich, da man da sieht wie der deklariert ist.

                  Aber nur dann, wenn sich die Werte im Datenpunkt an die Deklaration halten, was leider nicht immer der Fall ist.

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

                    @paul53
                    Die Anbindung der Geräte erfolgt wohl über den KNX Adapter, der auch die Objekte generiert. Ist das dann nicht automatisch richtig?

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

                      @jan1 sagte: KNX Adapter, der auch die Objekte generiert. Ist das dann nicht automatisch richtig?

                      Ich weiß nicht, ob der KNX-Adapter alle Datenpunkte richtig behandelt (habe kein KNX).

                      T 1 Reply Last reply Reply Quote 1
                      • paul53
                        paul53 @Tontechniker last edited by paul53

                        @tontechniker sagte: Meine verwendeten Objekte sind alle "bool".

                        Der Javascript-Adapter denkt sich das nicht aus:

                        You are assigning a number to the state "0_userdata.0.Überwachte_Verbraucher.Beleuchtung_Garten" which expects a boolean. Please fix your code to use a boolean or change the state type to number
                        
                        1 Reply Last reply Reply Quote 1
                        • T
                          Tontechniker @Jan1 last edited by

                          @jan1
                          Habe alle Blocklys so wie Du vorgeschlagen umgestellt. Es funktioniert ohne Konvertierung.
                          Vielen Dank!
                          Gruss
                          Hans

                          J 1 Reply Last reply Reply Quote 0
                          • T
                            Tontechniker @paul53 last edited by

                            @paul53
                            Du vermutest richtig. Alle Datenpunkte kommen von KNX. Deshalb konnte ich mir die Fehlermeldung nicht erklären. Ich glaube, ich habe mit meiner ersten Version ein "feature" entdeckt und mit der Konvertierung den dabei entstehenden Fehler ausgebügelt.

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

                              @tontechniker
                              Und wenn Dir das jetzt anschaust, sieht das auch logischer aus, oder?
                              Ehrlich wenn das nicht funktioniert hätte, hätte ich immer noch nicht verstanden, was Du eigentlich tun willst 🙂

                              paul53 1 Reply Last reply Reply Quote 1
                              • paul53
                                paul53 @Jan1 last edited by

                                @jan1 sagte: Und wenn Dir das jetzt anschaust, sieht das auch logischer aus, oder?

                                Eigentlich nicht, wenn die Datenpunkte tatsächlich boolesche Werte liefern würden. Falls (if) macht eine implizite Typwandlung, wenn die Oder-Verknüpfung eine Zahl liefert.

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

                                  @paul53
                                  Von der Funktion ist was anderes, wenn man noch nicht weiß, was da wirklich im DP drin steht.
                                  Ich meinte auch die Optik, da man hier eigentlich sehr schnell und einfach sehen kann, was das Blockly tun soll. Das war vorher auch mein Problem, dass irgendwie das was er geschrieben hat, nicht zu dem Blockly gepasst hat, was angeblich sogar das tut was es soll.

                                  Da das jetzt auch ohne Konvertierung und Fehler im Log läuft, war wohl vorher noch wo ein Fehler begraben.

                                  paul53 1 Reply Last reply Reply Quote 1
                                  • paul53
                                    paul53 @Jan1 last edited by

                                    @jan1 sagte: Da das jetzt auch ohne Konvertierung und Fehler im Log läuft

                                    Die Konvertierung erfolgt jetzt nicht durch einen Konvertierungs-Block, sondern implizit durch den falls-Block.

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

                                      @paul53
                                      Ist das dann wieder die Typwandlung wie oben schon geschrieben? Wobei ich davon ausgegangen bin, dass der Block nur auf true und false regiert. Aber selbst wenn, müsste das nicht auch im Log auftauchen?

                                      paul53 1 Reply Last reply Reply Quote 1
                                      • paul53
                                        paul53 @Jan1 last edited by paul53

                                        @jan1 sagte: dass der Block nur auf true und false regiert.

                                        Der falls-Block reagiert auf alle Datentypen und macht bei nicht booleschen Werten eine implizite Typwandlung.
                                        Kleiner Test (variiere den Zahlenwert):

                                        Bild_2021-03-21_191506.png

                                        @jan1 sagte in Eingeschaltete Verbraucher überwachen:

                                        müsste das nicht auch im Log auftauchen?

                                        Das Log warnt nur, wenn bei setState() der Datentyp des geschriebenen Wertes nicht mit der Deklaration in common.type übereinstimmt.

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

                                          @paul53
                                          Hätte nicht gedacht, dass ich bei so einer leichten Aufgabe noch dermaßen viel dazu lerne. Ich habe schon verstanden was da passiert und warum, war mir nur nicht bewusst, dass das so schon automatisch abläuft.

                                          Dass das nur bei setState passiert ist dann auch klar, da er hier eben auch gleich ein eventuelles Folgeproblem anmeckert. Beim Einlese ist es dem Block wurscht, da er es eh so konvertiert wie er es versteht. Merkt man dann eventuell erst, wenn was rauskommt, was man so nicht erwartet 😉

                                          T 1 Reply Last reply Reply Quote 1
                                          • T
                                            Tontechniker @Jan1 last edited by Tontechniker

                                            @jan1
                                            Vielen Dank nochmal für eure Hilfe!
                                            Wie kann ich denn diesen tread auf "erledigt" setzen?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            815
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            44
                                            2029
                                            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