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.
    • T
      Tontechniker @Jan1 last edited by Tontechniker

      @jan1
      Ich kann nur sagen, dass es zur Zufriedenheit funktioniert.

      Hab das für alle Stockwerke eingebaut und es ist O.K.!

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

        @tontechniker
        Das Ding macht nix sinnvolles, wenn das gewünscht ist funktioniert es 😉

        Wenn Du Hilfe willst, musst Du Dich auch darauf ein lassen bestehende Fehler zu akzeptieren und da gehts schon mit dem aktualisieren los. Das geht wahrscheinlich nur, weil Du danach konvertierst, was sinnlos ist, da das schon passt, der Block aber dann das Steuern übernimmt, was man mit dem richtigen Block eh schon machen würde.

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

          @jan1
          Das "Ding" zeigt mir im Ergebnis in der Visu-Übersicht, ob noch irgendwo ein Verbraucher eingeschaltet ist. Das ist die Funktion, die ich beabsichtige.

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

            @tontechniker
            Ja aber so wie Du das aufbaust, ist das eher purer Zufall, dass das so funktioniert, weil das nur Funktionen einzelner Blöcke z einer gesamt Funktion zusammen baut, die ein einzelner Block mehr schon als logische Funktion beinhaltet.

            Was ich auch nicht verstehe, ist die ODER Funktion in der Falls. Du willst das eine Objekt ODER das andere aktualisieren. Wo her soll der Block denn nun wissen was er aktualisieren soll?

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

              @jan1
              Wie würdest Du denn die Aufgabe lösen??

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

                @tontechniker
                Beschreibe bitte noch mal was Du erreichen willst, weil so ganz habe ich das noch nicht verstanden. Wobei Dein Blockly eben auch kein Sinn ergibt.

                Du willst doch lediglich ein paar Lampen (wie viele?) prüfen, ob die an sind und wenn eine davon an ist, dann soll ein DP auf wahr wechseln, richtig?

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

                  @tontechniker sagte: Nach einfügen von Konvertierung "nach Logikwert" funktionierte das Blockly wie gewünscht.

                  Enthalten die Datenpunkte "Rundumleuchten" und "Wege" Zahlen (Anzahl der eingeschalteten Leuchten)? Wenn ja, dann bilde die Summe und prüfe diese auf > 0.

                  Bild_2021-03-21_155514.png

                  Man kann auch mit Typwandlung arbeiten, was aber der Verständlichkeit abträglich ist.

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

                    @paul53
                    Du bist ja der Blockly Spezi, deshalb mal ne Frage zu dem Blockly so wie es jetzt ist. Wie kann ich ein Objekt mit ner ODER definiert setzten? Wenn die beiden Objekte unterschiedlich sind, welches ist dann dominant?

                    mal von der Konvertierung abgesehen, kann das doch so nicht funktionieren:
                    28008dce-f2a9-4272-a013-297e94c83d7f-grafik.png

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

                      @jan1
                      Bei ODER (||) wird der erste (von links nach rechts) Operand zurück gegeben, dessen implizite Typwandlung true ergibt.

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

                        @paul53
                        OK, heißt tatsächlich wenn einer der beiden Werte TRUE ist (oder eben nicht einer der Werte die ein FALSE verursachen), wird auf TRUE aktualisiert, oder beziehst Du das jetzt doch auf die Konvertierung auf ein Logikwert?
                        Die Konvertierung wird ja eh nur benötigt, wenn die Objekte nicht boolen sind, was noch nicht geklärt ist.

                        Edit:
                        würde auch erklären warum das so funktioniert, obwohl das dann aber zu 100% Zufall ist, da er das was Du da aufführst als Anfänger nie und nimmer absichtlich gemacht hat 🙂

                        Da empfehle ich aber trotz Funktion das auf "normal" umzubauen, da man diese Logik erst mal verinnerlichen muss.

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

                          @jan1 sagte: Die Konvertierung wird ja eh nur benötigt, wenn die Objekte nicht boolen sind

                          Ja, siehe Beispiel:

                          Bild_2021-03-21_161901.png

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

                            @paul53
                            OK, wieder was gelernt.
                            Mal schauen was @Tontechniker noch schreibt und ob die Konvertierung wirklich nötig ist, oder ob die nur zufällig das Blockly so zurecht biegt, dass es augenscheinlich das Tut was gewünscht ist, was wirklich Zufall sein sollte 😉

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

                              @jan1
                              Das mit der Konvertierung macht mich auch etwas stutzig. Meine verwendeten Objekte sind alle "bool". Trotzdem kommt die schon oben erwähnte Fehlermeldung im Log, wenn ich die Konvertierung nicht einfüge.
                              Ich habe drei Stockwerke mit je ca. 10 Objekten. In der Visu habe ich für jedes Stockwerk einen Indikator (bool) eingebaut, der anzeigt, dass noch nicht alle Objekte (Leuchten) aus sind.
                              Nach meinem Kentnisstand habe ich ein logisches "oder" über die Objekte mit meinem Blockly gebaut, das - bis auf die Konvertierung - so funktioniert wie gedacht.
                              Das das ein Zufallsprodukt sein soll, kann ich nicht glauben. Ich kann auch mal den Code des Blocklys hier einstellen, dann können die Spezialisten nachsehen, warum es funktioniert.
                              Hans

                              J paul53 3 Replies Last reply Reply Quote 0
                              • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            797
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

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