Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. HILFE: Alle Fenster geschlossen ? Datenpunkte auf true

    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

    HILFE: Alle Fenster geschlossen ? Datenpunkte auf true

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

      @dellishelly Ich mach sowas nicht mit Blockly sondern mit NodeRed - aber über Blockly hast Du ja auch die Möglichkeit ein Objekt zu erstellen. Ich lasse bei jeder Statusänderung eines Fensters ein Objekt mit dem Status beschreiben, dass alle Fenster enthält. Dieses Objekt speicherst Du in einem Datenpunkt. Sobald dieser upgedated wird, analysierst Du mit einem weiteren Trigger dieses Objekt und gibst dann das Gesamtergebnis aus. - Wie gesagt Blockly ist da sehr hölzern, aber mit JSONATA bekommt man es wahrscheinlich hin. - Aber wie gesagt, ich nutze dieses Tool nicht, weil es viel zu viele Beschränkunge hat.

      1 Reply Last reply Reply Quote 0
      • D
        Dellishelly last edited by

        @mickym
        Mit NodeRed kann ich leider nicht umgehen.
        Die Frage ist ja wie ich die Prüfung der 15 Datenpunkte in Blockly realisiere.

        Danke und Lg
        Delli

        mickym Codierknecht 2 Replies Last reply Reply Quote 0
        • mickym
          mickym Most Active @Dellishelly last edited by mickym

          @dellishelly Na ja traurig genug, aber ich hab es Dir ja beschrieben - ist halt etwas umständlicher aber funktioniert.

          Hier habe ich mal den ersten Teil, der Dir Dein Objekt aufbaut:

          0365726d-dc90-4892-ad26-000dafe6e4d3-image.png

          Du lässt alle Fenster triggern - für den Aufbau des Objektes habe ich halt das Topic aus dem Pfad genommen, dass kannst natürlich selber setzen:

          d438c509-1fe3-4417-af7e-8febf8b04492-image.png

          Aus diesen einzelnen Datenpunkten baut sich ein Objekt auf und enthält alle Deine Fenster im Klartext

          72ea62a0-e4ea-43bc-b73a-89d37d46d8ce-image.png

          Mit jeder Statusänderung dieses Datenpunktes kannst Du dann Deine Analyse antriggern. Das mache ich Dir noch - aber man sollte Vorschläge nicht gleich im Bausch und Bogen verwerfen.

          Hier nun der 2. Teil der Analyse.

          2cfaed70-44b3-4e60-8766-4b0b2194e10a-image.png

          Der Vorteil dieser Methode ist, dass jedes Fenster sofort eine Statusänderung meldet und Du dann nicht jedesmal 15 Datenpunkte abfragen musst, sondern eine Statusänderung eines Datenpunktes enthält alle Informationen. Ich hab nur keinen Weg gefunden - Wildcards mit Blocklys zu verwenden, aber da gibts ja Leute, die dieses Tool lieben. Aber bei meiner Lösung musst halt dafür dann alle 15 Datenpunkte in den oberen Trigger aufnehmen.

          Hier nun alles auf einen Blick:

          a6c08b32-b26b-4000-afa9-7af725df3fe2-image.png

          Das Ganze kann man auch verwenden, um andere Alarmzustände - wenn Geräte offline sind oder sonstiges überwachen will und ist halt praktisch, da sich das immer neu aufbaut. Nur wenn mal Geräte wegfallen muss man sie halt aus dem Objekt entfernen.

          Hier noch der Export - die Datenpunkte musst natürlich selbst basteln genauso wie die Topics im Objekt.

          <xml xmlns="https://developers.google.com/blockly/xml">
           <variables>
             <variable id="+%%%So3UD{{[Gk^OhpLZ">topic</variable>
             <variable id="1BU(([$^W;WIow$X5_ol">windows</variable>
             <variable id=".=3t38Q=oAvQA=GJrCIT">windowsClosed</variable>
           </variables>
           <block type="on_ext" id="HZfKRocr8=CFq}R$552t" x="-412" y="-513">
             <mutation xmlns="http://www.w3.org/1999/xhtml" items="5"></mutation>
             <field name="CONDITION">ne</field>
             <field name="ACK_CONDITION"></field>
             <value name="OID0">
               <shadow type="field_oid" id="d1@K!NJ=}R5S^u`KaX3C">
                 <field name="oid">mqtt.1.logic.states.fensterOffen.buero.balkon</field>
               </shadow>
             </value>
             <value name="OID1">
               <shadow type="field_oid" id="rsRp.Y:Ph?Q,$F_NMQ#_">
                 <field name="oid">mqtt.1.logic.states.fensterOffen.wohnzimmer.balkon</field>
               </shadow>
             </value>
             <value name="OID2">
               <shadow type="field_oid" id="P(d}nW6f@;hm3{K)l+gT">
                 <field name="oid">mqtt.1.logic.states.fensterOffen.wohnzimmer.fensterLinks</field>
               </shadow>
             </value>
             <value name="OID3">
               <shadow type="field_oid" id="o(ovmyt}0${$,bBL[Xe{">
                 <field name="oid">mqtt.1.logic.states.fensterOffen.wohnzimmer.fensterRechts</field>
               </shadow>
             </value>
             <value name="OID4">
               <shadow type="field_oid" id="/PJtDqN-V`U+N:~nI;ET">
                 <field name="oid">mqtt.1.logic.states.fensterOffen.schlafzimmer.balkon</field>
               </shadow>
             </value>
             <statement name="STATEMENT">
               <block type="variables_set" id="GVAg8+xcAz[|GsBc1,da">
                 <field name="VAR" id="+%%%So3UD{{[Gk^OhpLZ">topic</field>
                 <value name="VALUE">
                   <block type="convert_jsonata" id="N?`{C9J4GFRAb`H7?Cwa">
                     <value name="EXPRESSION">
                       <shadow type="text" id="B6d=(wWf2W4nVTTc~Ck4">
                         <field name="TEXT">$match($,/.*\.(.*)\.(.*)/).groups~&gt;$join("-")</field>
                       </shadow>
                     </value>
                     <value name="TARGET">
                       <block type="on_source" id="f5bg({v-?(kFenn6!sOp">
                         <field name="ATTR">id</field>
                       </block>
                     </value>
                   </block>
                 </value>
                 <next>
                   <block type="variables_set" id="FOrMgkW57jj@G6{=YVmo">
                     <field name="VAR" id="1BU(([$^W;WIow$X5_ol">windows</field>
                     <value name="VALUE">
                       <block type="lists_create_with" id="}3Pu2NVfy`*~L*A.Uk(s">
                         <mutation items="2"></mutation>
                         <value name="ADD0">
                           <block type="convert_json2object" id="%Y[TZ2`PQ_$?|57$wY_[">
                             <value name="VALUE">
                               <block type="get_value" id="^St9z9H8%ItA9C_vXAO{">
                                 <field name="ATTR">val</field>
                                 <field name="OID">0_userdata.0.Test.JSON</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <value name="ADD1">
                           <block type="convert_jsonata" id="`pxk8qoF*:@/_PH_8^.Z">
                             <value name="EXPRESSION">
                               <shadow type="text" id="BG^WMHe-q@wGRNa4O#{5">
                                 <field name="TEXT">{$[0]:$[1]}</field>
                               </shadow>
                             </value>
                             <value name="TARGET">
                               <block type="lists_create_with" id="l?wk:~pb$uIfcN6@.%M6">
                                 <mutation items="2"></mutation>
                                 <value name="ADD0">
                                   <block type="variables_get" id="v(JDqPD7Pfzl3ar}[U?I">
                                     <field name="VAR" id="+%%%So3UD{{[Gk^OhpLZ">topic</field>
                                   </block>
                                 </value>
                                 <value name="ADD1">
                                   <block type="logic_negate" id="X1C#Z]zmw0e6IB@B0IHN">
                                     <value name="BOOL">
                                       <block type="on_source" id=";d-Ch$rON[Q^dstG2J,J">
                                         <field name="ATTR">state.val</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </value>
                     <next>
                       <block type="update" id="p^{l*YUMc,}okFib%^V9">
                         <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                         <field name="OID">0_userdata.0.Test.JSON</field>
                         <field name="WITH_DELAY">FALSE</field>
                         <value name="VALUE">
                           <block type="convert_object2json" id="fIBSCL[;SP5Vx,B;dmOY">
                             <field name="PRETTIFY">FALSE</field>
                             <value name="VALUE">
                               <block type="convert_jsonata" id="y1yJD0IPpTHA[;_AVYDi">
                                 <value name="EXPRESSION">
                                   <shadow type="text" id="FPDz#qB5jn$E*aUcyXku">
                                     <field name="TEXT">$merge($)</field>
                                   </shadow>
                                 </value>
                                 <value name="TARGET">
                                   <block type="variables_get" id="N)[-x}gD*RfBEk2.hY:z">
                                     <field name="VAR" id="1BU(([$^W;WIow$X5_ol">windows</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </next>
                   </block>
                 </next>
               </block>
             </statement>
             <next>
               <block type="on_ext" id="lIpLyP^NqU!AEK@Zmf3O">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                 <field name="CONDITION">ne</field>
                 <field name="ACK_CONDITION"></field>
                 <value name="OID0">
                   <shadow type="field_oid" id="8FR,J3q0sg3NZSiJGQ;%">
                     <field name="oid">0_userdata.0.Test.JSON</field>
                   </shadow>
                 </value>
                 <statement name="STATEMENT">
                   <block type="variables_set" id=";;jER2B+iYQJi*8$1EU7">
                     <field name="VAR" id=".=3t38Q=oAvQA=GJrCIT">windowsClosed</field>
                     <value name="VALUE">
                       <block type="convert_jsonata" id="R2K@HY,wF{SE{+6q~Ly(">
                         <value name="EXPRESSION">
                           <shadow type="text" id="MptWY~HPUv*#uY0JVmn%">
                             <field name="TEXT">$reduce($.*,function($i, $j){$i and $j})</field>
                           </shadow>
                         </value>
                         <value name="TARGET">
                           <block type="convert_json2object" id="y`O;-_$VJibyz*b3p)%l">
                             <value name="VALUE">
                               <block type="on_source" id="mX#k_*7P(/6$8T]QzQRi">
                                 <field name="ATTR">state.val</field>
                               </block>
                             </value>
                           </block>
                         </value>
                       </block>
                     </value>
                     <next>
                       <block type="controls_if" id="40P}^7e-qYf5[R?KVPED">
                         <mutation else="1"></mutation>
                         <value name="IF0">
                           <block type="variables_get" id="Kd`cwF*iVL/zvIB.N)~Z">
                             <field name="VAR" id=".=3t38Q=oAvQA=GJrCIT">windowsClosed</field>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="debug" id="n9DnT.[S*bI12V+C?Bfa">
                             <field name="Severity">log</field>
                             <value name="TEXT">
                               <shadow type="text" id="6jUCi;2nzqc#z9a2ZM*2">
                                 <field name="TEXT">Alle Fenster sind geschlossen</field>
                               </shadow>
                             </value>
                           </block>
                         </statement>
                         <statement name="ELSE">
                           <block type="debug" id="sv:o[##||Qa${QL@84eX">
                             <field name="Severity">log</field>
                             <value name="TEXT">
                               <shadow type="text" id="t[klq_fe3}rg#`-x%_tK">
                                 <field name="TEXT">Mindestens ein Fenster ist offen</field>
                               </shadow>
                             </value>
                             <next>
                               <block type="debug" id="VLhWZSWu`a13`9A`S$q]">
                                 <field name="Severity">log</field>
                                 <value name="TEXT">
                                   <shadow type="text" id=":TRP%a4zpNilQIP^4XDz">
                                     <field name="TEXT">test</field>
                                   </shadow>
                                   <block type="convert_json2object" id="+q~:K,vqzXj1{[-95bAi">
                                     <value name="VALUE">
                                       <block type="on_source" id="R7c1@EgSen?{)xy5ACvp">
                                         <field name="ATTR">state.val</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </next>
                           </block>
                         </statement>
                       </block>
                     </next>
                   </block>
                 </statement>
               </block>
             </next>
           </block>
          </xml>
          

          In vereinfachter Form kann man sowas auch mit Listen im Blockly machen - dann musst Du aber intern wissen, welcher Index welchem Fenster entspricht, ist halt lange nicht so schön - aber Blockly kann eben nicht wirklich mit Objekten umgehen.

          Wenn der Name eindeutig des Datenpunktes vom Fenster ist kannst Du anstelle des JSONATA Ausdruckes diesen direkt dem topic zuordnen. Ich habs aus der Objekt ID extrahiert.

          Also anstelle von: d714ac7f-272f-400c-b286-0323f1f0b10f-image.png
          kann man - wenn Deine Fenster sprechende Namen haben auch den Namen dem topic zuordnen.

          dann könntest Du Dir die ganze topic Variable sparen und musst halt dann für das 1. Listenelement den Namen setzen:

          625b4e16-dc02-4cdf-b3b2-667b8c4fe2ef-image.png

          Vielleicht bekommst aber noch ein Haufen besserer Vorschläge - aber wie gesagt im NodeRed Umfeld ist diese Methode sehr praktisch, da das Mergen von Objekten eingebaut ist.

          1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @Dellishelly last edited by

            @dellishelly
            Ich habe das wie folgt gelöst:

            Zuerst habe ich eine Aufzählung erzeugt, die alle relevanten Datenpunkte enthält.
            764b8e47-e789-4fc7-a36b-83dfcf3b8849-image.png

            Damit kann man einen Trigger einrichten, der bei jeder Änderung an einem der Sensoren feuert und die offenen Fenster zählt. Die Zahl der offenen Fenster wird dann in einem eigenen DP gespeichert.
            Ich habe das hier mal für Deine Zwecke etwas abgewandelt.
            73b4b4bd-52ba-4a6d-9558-5bce24b856e4-image.png

            Nur der Vollständigkeit halber: Ich mache das (Zählen der offenen Fenster) mittlerweile direkt in JS. Das ist noch übersichtlicher.

            on({id: Array.prototype.slice.apply($("(functions=window)")), change: "ne"}, async function (obj) {
              var count = 0;
              var states = Array.prototype.slice.apply($("(functions=window)"));
              for (var index in states) {
                if (getState(states[index]).val) count++;
              }
              setState("0_userdata.0.Vis.fenster", count, true);
            });
            
            paul53 1 Reply Last reply Reply Quote 0
            • mickym
              mickym Most Active last edited by mickym

              Ok dank der Verbesserung von Codierknecht habe ich auch den Selektor genommen. Damit kann man die Fenster genauso selektieren:

              Also entweder über

              (functions=window)
              

              um die Aufzählung zu verwenden. Oder ich hab es jetzt für meine Struktur nochmal angepasst:

              7123d6ae-2091-468f-8143-200078652b42-image.png

              kann man bei passender Struktur auch mit Wildcards arbeiten:

              f39c73e9-c703-4f19-bf0b-c4ce3526faaf-image.png

              den unteren Teil habe ich soweit verbessert, dass bei geöffneten Fenstern, diese dann auch ausgegeben werden:

              3d8fdfd4-e483-4437-a886-9097e3ea215b-image.png

              <xml xmlns="https://developers.google.com/blockly/xml">
               <variables>
                 <variable id="+%%%So3UD{{[Gk^OhpLZ">topic</variable>
                 <variable id="1BU(([$^W;WIow$X5_ol">windows</variable>
                 <variable id=".=3t38Q=oAvQA=GJrCIT">windowsClosed</variable>
               </variables>
               <block type="on_ext" id="HZfKRocr8=CFq}R$552t" x="42" y="-590">
                 <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                 <field name="CONDITION">ne</field>
                 <field name="ACK_CONDITION"></field>
                 <value name="OID0">
                   <shadow type="field_oid" id="d1@K!NJ=}R5S^u`KaX3C">
                     <field name="oid">mqtt.1.logic.states.fensterOffen.buero.balkon</field>
                   </shadow>
                   <block type="selector" id="|jdl_QBFs~eJ0k/*U={w">
                     <field name="TEXT">mqtt.1.logic.states.fensterOffen.*</field>
                   </block>
                 </value>
                 <statement name="STATEMENT">
                   <block type="variables_set" id="GVAg8+xcAz[|GsBc1,da">
                     <field name="VAR" id="+%%%So3UD{{[Gk^OhpLZ">topic</field>
                     <value name="VALUE">
                       <block type="convert_jsonata" id="N?`{C9J4GFRAb`H7?Cwa">
                         <value name="EXPRESSION">
                           <shadow type="text" id="B6d=(wWf2W4nVTTc~Ck4">
                             <field name="TEXT">$match($,/.*\.(.*)\.(.*)/).groups~&gt;$join("-")</field>
                           </shadow>
                         </value>
                         <value name="TARGET">
                           <block type="on_source" id="f5bg({v-?(kFenn6!sOp">
                             <field name="ATTR">id</field>
                           </block>
                         </value>
                       </block>
                     </value>
                     <next>
                       <block type="variables_set" id="FOrMgkW57jj@G6{=YVmo">
                         <field name="VAR" id="1BU(([$^W;WIow$X5_ol">windows</field>
                         <value name="VALUE">
                           <block type="lists_create_with" id="}3Pu2NVfy`*~L*A.Uk(s">
                             <mutation items="2"></mutation>
                             <value name="ADD0">
                               <block type="convert_json2object" id="%Y[TZ2`PQ_$?|57$wY_[">
                                 <value name="VALUE">
                                   <block type="get_value" id="^St9z9H8%ItA9C_vXAO{">
                                     <field name="ATTR">val</field>
                                     <field name="OID">0_userdata.0.Test.JSON</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="convert_jsonata" id="`pxk8qoF*:@/_PH_8^.Z">
                                 <value name="EXPRESSION">
                                   <shadow type="text" id="BG^WMHe-q@wGRNa4O#{5">
                                     <field name="TEXT">{$[0]:$[1]}</field>
                                   </shadow>
                                 </value>
                                 <value name="TARGET">
                                   <block type="lists_create_with" id="l?wk:~pb$uIfcN6@.%M6">
                                     <mutation items="2"></mutation>
                                     <value name="ADD0">
                                       <block type="variables_get" id="v(JDqPD7Pfzl3ar}[U?I">
                                         <field name="VAR" id="+%%%So3UD{{[Gk^OhpLZ">topic</field>
                                       </block>
                                     </value>
                                     <value name="ADD1">
                                       <block type="logic_negate" id="X1C#Z]zmw0e6IB@B0IHN">
                                         <value name="BOOL">
                                           <block type="on_source" id=";d-Ch$rON[Q^dstG2J,J">
                                             <field name="ATTR">state.val</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                         <next>
                           <block type="update" id="p^{l*YUMc,}okFib%^V9">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">0_userdata.0.Test.JSON</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="convert_object2json" id="fIBSCL[;SP5Vx,B;dmOY">
                                 <field name="PRETTIFY">FALSE</field>
                                 <value name="VALUE">
                                   <block type="convert_jsonata" id="y1yJD0IPpTHA[;_AVYDi">
                                     <value name="EXPRESSION">
                                       <shadow type="text" id="FPDz#qB5jn$E*aUcyXku">
                                         <field name="TEXT">$merge($)</field>
                                       </shadow>
                                     </value>
                                     <value name="TARGET">
                                       <block type="variables_get" id="N)[-x}gD*RfBEk2.hY:z">
                                         <field name="VAR" id="1BU(([$^W;WIow$X5_ol">windows</field>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </next>
                       </block>
                     </next>
                   </block>
                 </statement>
                 <next>
                   <block type="on_ext" id="lIpLyP^NqU!AEK@Zmf3O">
                     <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                     <field name="CONDITION">ne</field>
                     <field name="ACK_CONDITION"></field>
                     <value name="OID0">
                       <shadow type="field_oid" id="8FR,J3q0sg3NZSiJGQ;%">
                         <field name="oid">0_userdata.0.Test.JSON</field>
                       </shadow>
                     </value>
                     <statement name="STATEMENT">
                       <block type="variables_set" id=";;jER2B+iYQJi*8$1EU7">
                         <field name="VAR" id=".=3t38Q=oAvQA=GJrCIT">windowsClosed</field>
                         <value name="VALUE">
                           <block type="convert_jsonata" id="R2K@HY,wF{SE{+6q~Ly(">
                             <value name="EXPRESSION">
                               <shadow type="text" id="MptWY~HPUv*#uY0JVmn%">
                                 <field name="TEXT">$reduce($.*,function($i, $j){$i and $j})</field>
                               </shadow>
                             </value>
                             <value name="TARGET">
                               <block type="convert_json2object" id="y`O;-_$VJibyz*b3p)%l">
                                 <value name="VALUE">
                                   <block type="on_source" id="mX#k_*7P(/6$8T]QzQRi">
                                     <field name="ATTR">state.val</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </value>
                         <next>
                           <block type="controls_if" id="40P}^7e-qYf5[R?KVPED">
                             <mutation else="1"></mutation>
                             <value name="IF0">
                               <block type="variables_get" id="Kd`cwF*iVL/zvIB.N)~Z">
                                 <field name="VAR" id=".=3t38Q=oAvQA=GJrCIT">windowsClosed</field>
                               </block>
                             </value>
                             <statement name="DO0">
                               <block type="debug" id="n9DnT.[S*bI12V+C?Bfa">
                                 <field name="Severity">log</field>
                                 <value name="TEXT">
                                   <shadow type="text" id="6jUCi;2nzqc#z9a2ZM*2">
                                     <field name="TEXT">Alle Fenster sind geschlossen</field>
                                   </shadow>
                                 </value>
                               </block>
                             </statement>
                             <statement name="ELSE">
                               <block type="debug" id="sv:o[##||Qa${QL@84eX">
                                 <field name="Severity">log</field>
                                 <value name="TEXT">
                                   <shadow type="text" id="t[klq_fe3}rg#`-x%_tK">
                                     <field name="TEXT">Mindestens ein Fenster ist offen</field>
                                   </shadow>
                                   <block type="text_join" id="1.VR-sz?IMc4/%CPn2iT">
                                     <mutation items="2"></mutation>
                                     <value name="ADD0">
                                       <block type="text" id="BD-zZA^}qq{|Lf*mSFuW">
                                         <field name="TEXT">Folgende Fenster sind geöffnet: </field>
                                       </block>
                                     </value>
                                     <value name="ADD1">
                                       <block type="convert_jsonata" id="ON4]E+%)z@RZzf6Tft]$">
                                         <value name="EXPRESSION">
                                           <shadow type="text" id="1q9+4?m/0O5o(~sU?a}U">
                                             <field name="TEXT">$each($, function($v, $k) {$not($v) ? $k})~&gt;$join(", ")</field>
                                           </shadow>
                                         </value>
                                         <value name="TARGET">
                                           <block type="convert_json2object" id="+q~:K,vqzXj1{[-95bAi">
                                             <value name="VALUE">
                                               <block type="on_source" id="R7c1@EgSen?{)xy5ACvp">
                                                 <field name="ATTR">state.val</field>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </statement>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
              </xml>
              

              Der Unterschied ist insofern, dass man halt nicht zählt, sondern entsprechende Statusmeldungen generiert, wo man hinlaufen muss.

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

                @mickym

                Vielen lieben Dank für eure Hilfe
                Ich hab soweit alles angelegt.
                Den Datenpunkt für das JSON File angelegt und zu Testzwecken 2 Lampen als zu triggernde Datenpunkte genutzt.

                71b2540b-701b-4f69-9c65-de400e529ca0-image.png

                Ich bekomme nur ne Fehlermeldung.
                Hast du ne Idee woran das liegen könnte ?

                mickym 1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Dellishelly last edited by mickym

                  @dellishelly Als erstes hast du einen anderen Pfad - ich würde wie gesagt die Namen ggf. verwenden für das topic (also wie ganz unten beschrieben)

                  Also mal den Datenpunkt mit der Lampe zeigen.

                  Desweiteren musst Du ggf. das negieren umdrehen, wenn in Deinen States schon true bei geschlossen ist.

                  d65f86aa-2437-4b8e-b316-aeea0e77cb4b-image.png

                  Ach so und bei Lichter an - dann musst Du die Logik umkehren. 😉 - Du willst ja dann wenn alles false - ist - alle Lichter AUS angeben und falls noch eines AN ist dieses dann ausgeben.

                  Ach und am Anfang in das neu aufzubauende Objekt ein leeres Objekt reinschreiben, also {}

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

                    @mickym

                    tut mir leid ich kann dir leider nicht ganz folgen

                    Was meinst du mit anderem Pfad ?

                    6f53c23d-5873-45c0-b553-396dc110c8cc-image.png

                    Das ist der Datenpunkt einer Lampe. Die anderen sehen alle gleich aus.

                    Was konkret muss ich im Skript noch anpassen ?
                    Den Pfad zur LampenJSON habe ich ja hinterlegt.

                    Danke nochmal für deine Hilfe

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Dellishelly last edited by mickym

                      @dellishelly

                      Also erstes musst Du mal den Namen extrahieren.

                      Setz mal den Namen ein für die Ermittlung des topics und der JSONATA-Ausdruck:
                      e1e54248-f35e-4a56-8de1-ecd68018d59e-image.png
                      ist

                      $match($,/(.*)\.(.*)/).groups[0]
                      

                      <block xmlns="https://developers.google.com/blockly/xml" type="variables_set" id="g^ezE{937LstW(ZUEydf" x="63" y="-471">
                       <field name="VAR" id="+%%%So3UD{{[Gk^OhpLZ">topic</field>
                       <value name="VALUE">
                         <block type="convert_jsonata" id="VZSXzKA0(o~O8Z|VUv|k">
                           <value name="EXPRESSION">
                             <shadow type="text" id="?HMex^nHv0Re,E7osI,t">
                               <field name="TEXT">$match($,/(.*)\.(.*)/).groups[0]</field>
                             </shadow>
                           </value>
                           <value name="TARGET">
                             <block type="on_source" id="m@|lT|L7Zt[/H,1xEzL/">
                               <field name="ATTR">common.name</field>
                             </block>
                           </value>
                         </block>
                       </value>
                       <next>
                         <block type="variables_set" id="FOrMgkW57jj@G6{=YVmo">
                           <field name="VAR" id="1BU(([$^W;WIow$X5_ol">licht</field>
                           <value name="VALUE">
                             <block type="lists_create_with" id="}3Pu2NVfy`*~L*A.Uk(s">
                               <mutation items="2"></mutation>
                               <value name="ADD0">
                                 <block type="convert_json2object" id="%Y[TZ2`PQ_$?|57$wY_[">
                                   <value name="VALUE">
                                     <block type="get_value" id="^St9z9H8%ItA9C_vXAO{">
                                       <field name="ATTR">val</field>
                                       <field name="OID">0_userdata.0.Test.JSON</field>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <value name="ADD1">
                                 <block type="convert_jsonata" id="`pxk8qoF*:@/_PH_8^.Z">
                                   <value name="EXPRESSION">
                                     <shadow type="text" id="BG^WMHe-q@wGRNa4O#{5">
                                       <field name="TEXT">{$[0]:$[1]}</field>
                                     </shadow>
                                   </value>
                                   <value name="TARGET">
                                     <block type="lists_create_with" id="l?wk:~pb$uIfcN6@.%M6">
                                       <mutation items="2"></mutation>
                                       <value name="ADD0">
                                         <block type="variables_get" id="v(JDqPD7Pfzl3ar}[U?I">
                                           <field name="VAR" id="+%%%So3UD{{[Gk^OhpLZ">topic</field>
                                         </block>
                                       </value>
                                       <value name="ADD1">
                                         <block type="logic_negate" id="X1C#Z]zmw0e6IB@B0IHN">
                                           <value name="BOOL">
                                             <block type="on_source" id=";d-Ch$rON[Q^dstG2J,J">
                                               <field name="ATTR">state.val</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <next>
                             <block type="update" id="p^{l*YUMc,}okFib%^V9">
                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                               <field name="OID">0_userdata.0.Test.JSON</field>
                               <field name="WITH_DELAY">FALSE</field>
                               <value name="VALUE">
                                 <block type="convert_object2json" id="fIBSCL[;SP5Vx,B;dmOY">
                                   <field name="PRETTIFY">FALSE</field>
                                   <value name="VALUE">
                                     <block type="convert_jsonata" id="y1yJD0IPpTHA[;_AVYDi">
                                       <value name="EXPRESSION">
                                         <shadow type="text" id="FPDz#qB5jn$E*aUcyXku">
                                           <field name="TEXT">$merge($)</field>
                                         </shadow>
                                       </value>
                                       <value name="TARGET">
                                         <block type="variables_get" id="N)[-x}gD*RfBEk2.hY:z">
                                           <field name="VAR" id="1BU(([$^W;WIow$X5_ol">licht</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </next>
                         </block>
                       </next>
                      </block>
                      

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

                        @mickym said in HILFE: Alle Fenster geschlossen ? Datenpunkte auf true:

                        $match($,/(.).(.)/).groups[0]

                        Okay also die Geschichte mit Topic=Namen setzen aus dem Objekt habe ich jetzt verstanden.
                        Was ist dieser Pfad ?

                        $match($,/(.).(.)/).groups[0]

                        So hab Ichs jetzt aktuell im Skript

                        04002921-2d44-4788-9521-0881f9d972b0-image.png

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Dellishelly last edited by mickym

                          @dellishelly Dieser Ausdruck extrahiert aus Deinem Namen des Datenpunktes

                          a86a1097-aece-43f4-98cc-d83cd7f5034c-image.png

                          da steht ja als Name Couchbeleuchtung.STATE das Wort Couchbeleuchtung. So dass im Objekt dann stehen muss:

                          {
                                   "Couchbeleuchtung" : false
                           }
                          

                          Du musst ggf. halt ein Debug reinmachen und prüfen, ob alles richtig extrahiert wird.
                          Und wie gesagt, solange die Liste noch nicht aufgebaut ist, mach ein leeres Objekt in Deinen Datenpunkt liste_lampen rein.

                          D mickym 2 Replies Last reply Reply Quote 0
                          • D
                            Dellishelly @mickym last edited by

                            @mickym

                            Den Ausdruck habe ich ja verstanden. Leider klappt's noch immer nicht.
                            hier ist der Dubug - kannst du mir dazu was sagen ?

                            vascript.0
                            2023-09-19 13:27:26.337	error	at Object.<anonymous> (script.js.Lichterprüfen:9:83)
                            
                            javascript.0
                            2023-09-19 13:27:26.337	error	at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26)
                            
                            javascript.0
                            2023-09-19 13:27:26.337	error	at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3525:26)
                            
                            javascript.0
                            2023-09-19 13:27:26.337	error	at evaluateFunction (/opt/iobroker/node_modules/jsonata/jsonata.js:4871:28)
                            
                            javascript.0
                            2023-09-19 13:27:26.337	error	at apply (/opt/iobroker/node_modules/jsonata/jsonata.js:4896:24)
                            
                            javascript.0
                            2023-09-19 13:27:26.336	error	at applyInner (/opt/iobroker/node_modules/jsonata/jsonata.js:4929:33)
                            
                            javascript.0
                            2023-09-19 13:27:26.336	error	at validateArguments (/opt/iobroker/node_modules/jsonata/jsonata.js:5062:39)
                            
                            javascript.0
                            2023-09-19 13:27:26.336	error	at Object.validate (/opt/iobroker/node_modules/jsonata/jsonata.js:7215:28)
                            
                            javascript.0
                            2023-09-19 13:27:26.336	error	at Array.forEach (<anonymous>)
                            
                            javascript.0
                            2023-09-19 13:27:26.336	error	at /opt/iobroker/node_modules/jsonata/jsonata.js:7242:45
                            
                            javascript.0
                            2023-09-19 13:27:26.336	error	at Array.forEach (<anonymous>)
                            
                            javascript.0
                            2023-09-19 13:27:26.335	error	at /opt/iobroker/node_modules/jsonata/jsonata.js:7272:57
                            
                            javascript.0
                            2023-09-19 13:27:26.335	error	script.js.Lichterprüfen: Error:
                            
                            javascript.0
                            2023-09-19 13:27:26.330	warn	at Object.<anonymous> (script.js.Lichterprüfen:8:131)
                            
                            javascript.0
                            2023-09-19 13:27:26.330	warn	at script.js.Lichterprüfen:8:52
                            
                            javascript.0
                            2023-09-19 13:27:26.329	warn	getState "0_userdata.0.Status.Liste_lampen" not found (3) states[id]=null```
                            1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @mickym last edited by

                              @mickym Na der sagt, dass der Datenpunkt 0_userdata.0.Status.Liste_lampen nicht existiert. Hast Du den angelegt?

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

                                @mickym

                                ja das ist ja das was ich nicht verstehe.

                                Ich habs aber jetzt nochmal so gemacht wie du gesagt hast und die "Liste Lampe" aus dem Skript entfernt.
                                funktioniert aber genauso wenig.

                                d664bbcd-dd8d-443e-90d1-7b8708bc2590-image.png

                                das ist jetzt der debug

                                
                                javascript.0
                                2023-09-19 13:37:09.279	error	at Object.<anonymous> (script.js.Lichterprüfen:9:41)
                                
                                javascript.0
                                2023-09-19 13:37:09.279	error	at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26)
                                
                                javascript.0
                                2023-09-19 13:37:09.279	error	at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3525:26)
                                
                                javascript.0
                                2023-09-19 13:37:09.279	error	at evaluateFunction (/opt/iobroker/node_modules/jsonata/jsonata.js:4871:28)
                                
                                javascript.0
                                2023-09-19 13:37:09.278	error	at apply (/opt/iobroker/node_modules/jsonata/jsonata.js:4896:24)
                                
                                javascript.0
                                2023-09-19 13:37:09.278	error	at applyInner (/opt/iobroker/node_modules/jsonata/jsonata.js:4929:33)
                                
                                javascript.0
                                2023-09-19 13:37:09.278	error	at validateArguments (/opt/iobroker/node_modules/jsonata/jsonata.js:5062:39)
                                
                                javascript.0
                                2023-09-19 13:37:09.277	error	at Object.validate (/opt/iobroker/node_modules/jsonata/jsonata.js:7215:28)
                                
                                javascript.0
                                2023-09-19 13:37:09.277	error	at Array.forEach (<anonymous>)
                                
                                javascript.0
                                2023-09-19 13:37:09.275	error	at /opt/iobroker/node_modules/jsonata/jsonata.js:7242:45
                                
                                javascript.0
                                2023-09-19 13:37:09.275	error	at Array.forEach (<anonymous>)
                                
                                javascript.0
                                2023-09-19 13:37:09.275	error	at /opt/iobroker/node_modules/jsonata/jsonata.js:7272:57
                                
                                javascript.0
                                2023-09-19 13:37:09.274	error	script.js.Lichterprüfen: Error:
                                
                                javascript.0
                                2023-09-19 13:37:09.266	warn	at Object.<anonymous> (script.js.Lichterprüfen:8:108)
                                
                                javascript.0
                                2023-09-19 13:37:09.263	warn	at script.js.Lichterprüfen:8:52
                                
                                javascript.0
                                2023-09-19 13:37:09.256	warn	getState "Object ID" not found (3)
                                
                                mickym 1 Reply Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @Dellishelly last edited by mickym

                                  @dellishelly Nochmal hast Du denn den Datenpunkt unter userdata_0.0 angelegt?

                                  Du kannst ja prüfen was in diesen Datenpunkt geschrieben werden soll:

                                  af2854c7-af7c-42d4-a7a9-32adb6ac16bc-image.png

                                  Lass Dir mit Debug ausgeben, so wie im Screenshot gezeigt was in den Datenpunkt geschrieben wird.

                                  Wenn das so ähnlich aussieht - dann ist der Input korrekt, aber Dein Datenpunkt existiert nicht.

                                  Der Datenpunkt sollte halt ein leeres Objekt {} zu Beginn enthalten. Wenn das nicht der Fall ist, dann mach ich noch eine Abprüfung rein.

                                  146a2f52-ed46-41e3-9df3-02f7dacfd49a-image.png

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

                                    @dellishelly sagte: sobald der Status eines geändert wird, ALLE Fenster überprüft und eine Variable "Alle Fenster" auf true setzt wenn alle Fenster geschlossen sind.

                                    Blockly_temp.JPG

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

                                      @mickym

                                      ich komm mir schon maximal dämlich vor......

                                      ja den Datenpunkte Liste_Lampen habe ich selbst angelegt
                                      2f196f85-218b-48b3-9cc1-8c8a8b57307c-image.png

                                      69314a83-0bef-4e1b-997f-dc102a379faa-image.png

                                      javascript.0
                                      2023-09-19 13:54:01.168	error	at Object.<anonymous> (script.js.Lichterprüfen:8:147)
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.168	error	at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26)
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.167	error	at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3493:26)
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.167	error	at evaluateUnary (/opt/iobroker/node_modules/jsonata/jsonata.js:3985:26)
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.166	error	at evaluateGroupExpression (/opt/iobroker/node_modules/jsonata/jsonata.js:4349:33)
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.166	error	script.js.Lichterprüfen: Error:
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.163	warn	at Object.<anonymous> (script.js.Lichterprüfen:8:142)
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.163	warn	at script.js.Lichterprüfen:8:52
                                      
                                      javascript.0
                                      2023-09-19 13:54:01.161	warn	getState "[object Object]" not found (3)
                                      
                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @Dellishelly last edited by mickym

                                        @dellishelly OK wie ich vermutete, da steht null drin. Hier ich hab mal für die Initialisierung wie folgt geändert - damit müsste es gehen:

                                        59a547e6-f352-4ddb-a307-edf01f94febe-image.png

                                        also gib mal folgenden Code ein:

                                        $type($[0]) = "object" ? $merge($) : $[1]
                                        

                                        Wie gesagt damit sollte es gehen!!

                                        Der Fehler ist dass am Anfang ein leeres Objekt erwartet wurde.

                                        6a7a552b-e35b-4942-9a78-db868d53ca69-image.png

                                        Wenn da am Anfang nicht null sondern {} drin stehen würde - wäre es gegangen - nun sollte es aber auch gehen.

                                        cbb39065-6386-4838-8fbd-59b3839083dc-image.png

                                        Es gibt beim allerersten Mal eine Warnung - aber es sollte durchlaufen.

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

                                          @mickym

                                          Hab ich erledigt. Leider noch immer kein erfolg 😞

                                          ae89a640-8c48-4fd4-b3c2-2f38262cb865-image.png

                                          javascript.0
                                          2023-09-19 14:16:34.253	error	at Object.<anonymous> (script.js.Lichterprüfen:8:147)
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.253	error	at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26)
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.252	error	at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3493:26)
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.252	error	at evaluateUnary (/opt/iobroker/node_modules/jsonata/jsonata.js:3985:26)
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.252	error	at evaluateGroupExpression (/opt/iobroker/node_modules/jsonata/jsonata.js:4349:33)
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.252	error	script.js.Lichterprüfen: Error:
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.249	warn	at Object.<anonymous> (script.js.Lichterprüfen:8:142)
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.248	warn	at script.js.Lichterprüfen:8:52
                                          
                                          javascript.0
                                          2023-09-19 14:16:34.245	warn	getState "[object Object]" not found (3)
                                          
                                          D 1 Reply Last reply Reply Quote 0
                                          • D
                                            Dellishelly @Dellishelly last edited by Dellishelly

                                            @mickym

                                            Bist du sicher dass der hier stimmt ?

                                            $match($,/(.).(.)/).groups[0]

                                            Woher kommt der Pfad ?
                                            Kann ich ihn mir selbst irgendwoher kopieren ?

                                            mickym 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            736
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            46
                                            2074
                                            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