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 mickym

      @dellishelly Ok - ich verstehe es im Moment nicht - da es bei mir funktioniert. Nachdem Du jetzt schon was in Deinem Datenpunkt stehen hast, schau mal wenn Du die Objektprüfung wieder rausnimmst, ob sich dann das Objekt erweitert:

      Also beim Datenpunkt schreiben:

      3f4e0a7f-aa53-4a7f-8692-d693b8458a8b-image.png

      nur

      $merge($)
      

      Was hast Du denn für eine Version des Javascript Adapters - denn ich hab diese Probleme ja nicht. Ich habe:
      436eddea-a54b-4bc9-9f8a-7f7457c2fd88-image.png

      Alle Statusänderungen kommen nacheinander an und modifizieren das Objekt korrekt:

      96f54b31-d35e-441d-93aa-c124629ae68f-image.png

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

        @mickym
        sobald ich die raus nehme, läuft nur noch der debug für topic.

        37c01964-0f45-4de7-92a6-8e631f5fccf1-image.png

        2023-09-19 16:12:21.655	error	at Object.<anonymous> (script.js.Lichterprüfen:10:31)
        
        javascript.0
        2023-09-19 16:12:21.655	error	at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26)
        
        javascript.0
        2023-09-19 16:12:21.655	error	at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3525:26)
        
        javascript.0
        2023-09-19 16:12:21.655	error	at evaluateFunction (/opt/iobroker/node_modules/jsonata/jsonata.js:4871:28)
        
        javascript.0
        2023-09-19 16:12:21.655	error	at apply (/opt/iobroker/node_modules/jsonata/jsonata.js:4896:24)
        
        javascript.0
        2023-09-19 16:12:21.654	error	at applyInner (/opt/iobroker/node_modules/jsonata/jsonata.js:4929:33)
        
        javascript.0
        2023-09-19 16:12:21.654	error	at validateArguments (/opt/iobroker/node_modules/jsonata/jsonata.js:5062:39)
        
        javascript.0
        2023-09-19 16:12:21.654	error	at Object.validate (/opt/iobroker/node_modules/jsonata/jsonata.js:7215:28)
        
        javascript.0
        2023-09-19 16:12:21.654	error	at Array.forEach (<anonymous>)
        
        javascript.0
        2023-09-19 16:12:21.654	error	at /opt/iobroker/node_modules/jsonata/jsonata.js:7242:45
        
        javascript.0
        2023-09-19 16:12:21.653	error	at Array.forEach (<anonymous>)
        
        javascript.0
        2023-09-19 16:12:21.653	error	at /opt/iobroker/node_modules/jsonata/jsonata.js:7272:57
        
        javascript.0
        2023-09-19 16:12:21.653	error	script.js.Lichterprüfen: Error:
        
        javascript.0
        2023-09-19 16:12:21.646	warn	at Object.<anonymous> (script.js.Lichterprüfen:9:142)
        
        javascript.0
        2023-09-19 16:12:21.645	warn	at script.js.Lichterprüfen:9:52
        
        javascript.0
        2023-09-19 16:12:21.639	warn	getState "[object Object]" not found (3)
        
        javascript.0
        2023-09-19 16:12:21.638	info	script.js.Lichterprüfen: Couchbeleuchtung
        
        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @Dellishelly last edited by

          @dellishelly Nee schon wieder aktivieren - wie gesagt diese Fehlermeldungen habe ich nicht.

          diese Warnung dass er was nicht findet - das macht mich stutzig

          8649ffa0-9a7d-415b-a048-bfef33dc9ae3-image.png

          Das muss bei Dir am System liegen.

          Prüfe ob Du beim Einlesen des Wertes diese Fehler bekommst. Das ist der Grund warum das Objekt nicht erweitert wird, weil der Datenpunkt bei DIR NICHT EINGELESEN wird.
          e495c26e-c2c4-4f78-9e62-1becd6ff7bc7-image.png

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

            @mickym

            ich hab die debug Blöcke mal raus genommen.
            Jetzt läufts und er schreibt auch die einmal getriggert wurden in die Liste.

            Nur die Prüfung am Ende läuft wohl noch nicht.
            debug im Admin zeigt keine Warnungen oder Fehler

            c016d68f-daf8-4c8f-bf7d-16a0ac17d893-image.png
            9c89f62e-b118-49e5-926f-b9586a93d4f6-image.png

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

              @dellishelly Na Dein Objektbezeichnungen sind zwar kryptisch - aber gut.

              Für die Lichter musst Du ja die Logik etwas anders machen.

              Die Lichter sind aus, wenn alles aus ist. Also musst Du mit OR verknüfen.

              $reduce($.*,function($i, $j){$i or $j})
              

              und das Ergebnis verneinen:
              ac79b1ed-eeee-4c93-84e5-02e2c6357869-image.png

              lampen_aus wird also von JSONATA nur dann false sein, wenn alle Eigenschaften des Objektes falsch sind. lampen_aus wird true sein, wenn NUR eine Eigenschaft true ist.

              Um also postiv abzufragen, ob Lampen aus wahr ist, musst Du das Ergebnis verneinen.

              Somit wird es true, sobald alle Eigenschaften false ist und false, falls eine Eigenschaft true ist.

              Unten musst Du dann, um die Lampen rauszufischen die true sind - die Verneinung aufheben:

              statt

              $each($, function($v, $k) {$not($v) ? $k})~>$join(", ")
              

              dann

              $each($, function($v, $k) {$v ? $k})~>$join(", ")
              
              D mickym 2 Replies Last reply Reply Quote 0
              • D
                Dellishelly @mickym last edited by Dellishelly

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

                Ich muss hier noch die richtigen Namen hinterlegen. Die Object ID sind in Mehreren Ordnern mehrfach gleich vergeben.

                Aber das mach ich hinterher.
                Habe die Logik nun geändert, aber er gibt mir unten trotzdem keine Ausgabe.

                Habe mal nen debug direkt hinter den trigger der Listenprüfung gesetzt. - der gibt auch nichts aus, obwohl sich der Wert der Liste ändert

                0ffc2401-9282-449b-ad7d-de11bde230ef-image.png

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

                  @mickym Nun dann prüfe halt erst mal ob der untere Teil getriggert wird (siehst Du ja mit Test) und dann lass Dir mal den Wert mit debug ausgeben, um zu sehen, dass er auch das Objekt einliest.

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

                    @mickym

                    genau das scheint er ja nicht zu machen.
                    sieht so aus als würde er keine Änderung in der Liste_Lampen feststellen

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

                      @dellishelly Verstehe ich zwar nicht aber dann ändere den Trigger halt mal auf wurde aktualisiert.
                      f17b6849-81fe-4a11-90bb-a71e5004bf1e-image.png

                      schon alles eigenartig - wie gesagt ich mach parallel das Gleiche mit Lichtern und gibt keine Probleme

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

                        So ich habe nochmal alles auf das Prüfen ob alle Lichter aus sind umgeschrieben:

                        bfbcb13e-ec95-41a4-8788-1c4269140888-image.png

                        Warum das bei Dir nicht will - ist mir ehrlich gesagt schleierhaft.

                        <xml xmlns="https://developers.google.com/blockly/xml">
                         <variables>
                           <variable id="+%%%So3UD{{[Gk^OhpLZ">topic</variable>
                           <variable id=".=3t38Q=oAvQA=GJrCIT">LichterAus</variable>
                           <variable id="1BU(([$^W;WIow$X5_ol">licht</variable>
                         </variables>
                         <block type="on_ext" id="HZfKRocr8=CFq}R$552t" x="63" y="-608">
                           <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">(functions=light)</field>
                             </block>
                           </value>
                           <statement name="STATEMENT">
                             <block type="debug" id=":^Pgr3}|:]7+:?{a4x(d">
                               <field name="Severity">log</field>
                               <value name="TEXT">
                                 <shadow type="text" id=")36vYh5%pY-%.Zp`EM1~">
                                   <field name="TEXT">Lichter getriggert</field>
                                 </shadow>
                               </value>
                               <next>
                                 <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[0]</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="controls_if" id="pp95*^^[[jJ^?TuXzl[Y">
                                       <value name="IF0">
                                         <block type="logic_compare" id="[3O8l^kLNbNPR.(QA3PK">
                                           <field name="OP">EQ</field>
                                           <value name="A">
                                             <block type="convert_jsonata" id="8DEA9GAj00wS`ak3:LzH">
                                               <value name="EXPRESSION">
                                                 <shadow type="text" id="}n4Gp;Apcafj+v!O#qC1">
                                                   <field name="TEXT">$match($,/.*\.(.*)\.(.*)/).groups[1]</field>
                                                 </shadow>
                                               </value>
                                               <value name="TARGET">
                                                 <block type="on_source" id="_)oOMZwT)AFE/M3KSD#a">
                                                   <field name="ATTR">id</field>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <block type="text" id="RQ9L!U5iM20*h%Ms_tuL">
                                               <field name="TEXT">On</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <statement name="DO0">
                                         <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-Lichter</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="on_source" id=";d-Ch$rON[Q^dstG2J,J">
                                                           <field name="ATTR">state.val</field>
                                                         </block>
                                                       </value>
                                                     </block>
                                                   </value>
                                                 </block>
                                               </value>
                                             </block>
                                           </value>
                                           <next>
                                             <block type="debug" id="ocxE8(:ynLCu;uv0I/(7">
                                               <field name="Severity">log</field>
                                               <value name="TEXT">
                                                 <shadow type="text" id="_;*!{#=32F*17-Iy@dhi">
                                                   <field name="TEXT">test</field>
                                                 </shadow>
                                                 <block type="convert_object2json" id="{n]Gq05EuK4;laxtsYlF">
                                                   <field name="PRETTIFY">FALSE</field>
                                                   <value name="VALUE">
                                                     <block type="convert_jsonata" id="rA|;dyBdh+.#(a47xrM~">
                                                       <value name="EXPRESSION">
                                                         <shadow type="text" id="]^zcbOX^zi9oT]J4XL5=">
                                                           <field name="TEXT">$type($[0]) = "object" ? $merge($) : $[1]</field>
                                                         </shadow>
                                                       </value>
                                                       <value name="TARGET">
                                                         <block type="variables_get" id="4$.?5]j#%WQSn;Tz4%+%">
                                                           <field name="VAR" id="1BU(([$^W;WIow$X5_ol">licht</field>
                                                         </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-Lichter</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">$type($[0]) = "object" ? $merge($) : $[1]</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>
                                       </statement>
                                     </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-Lichter</field>
                                 </shadow>
                               </value>
                               <statement name="STATEMENT">
                                 <block type="variables_set" id=";;jER2B+iYQJi*8$1EU7">
                                   <field name="VAR" id=".=3t38Q=oAvQA=GJrCIT">LichterAus</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">$not($reduce($.*,function($i, $j){$i or $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">LichterAus</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 Lichter aus</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 Lichter sind an: </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) {$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>
                        


                        Die Datenpunkte lassen sich ohne weiteres lesen und beschreiben und triggern auch:

                        297a8408-9a50-4cf9-b527-6c63b7d7566d-image.png

                        Vielleicht ist es doch besser die Array Funktionen zu benutzen, wie @paul53 und @Codierknecht hier vorgeschlagen hat, da Blockly eben mit Objekten nicht gut umgehen kann.

                        sigi234 D 2 Replies Last reply Reply Quote 0
                        • sigi234
                          sigi234 Forum Testing Most Active @mickym last edited by

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

                          Vielleicht ist es doch besser die Array Funktionen zu benutzen

                          oder das:

                          https://forum.iobroker.net/topic/31674/vorlage-generisches-fensteroffenskript-vis?_=1695137930357

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

                            @codierknecht sagte: direkt in JS. Das ist noch übersichtlicher.

                            Meine Version wäre:

                            const ids = Array.prototype.slice.apply($("(functions=window)"));
                            
                            on(ids, function () {
                              let count = 0;
                              for (let id of ids) {
                                if (getState(id).val) count++;
                              }
                              setState("0_userdata.0.Vis.fenster", count, true);
                            });
                            
                            1 Reply Last reply Reply Quote 1
                            • D
                              Dellishelly @mickym last edited by Dellishelly

                              @mickym

                              Ich habe jetzt das blockly nochmal einmal komplett neu zusammengebastelt.

                              und es läuft.

                              Ich kann dir leider nicht sagen woran es nun gelegen hat.....

                              KEINE AHNUNG!
                              ABER:

                              VIEEEELEN VIELEN DANKE für deine Ausdauer und Hilfe!

                              Hast ja quasi fast den ganzen Tag mit mir verbracht 😄

                              Hab heute echt viel dazugelernt!

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              395
                              Online

                              31.9k
                              Users

                              80.2k
                              Topics

                              1.3m
                              Posts

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