Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Zentral Status Licht

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Zentral Status Licht

    This topic has been deleted. Only users with topic management privileges can see it.
    • W
      Wildbill @ft.knorr last edited by

      @ft-knorr Schau Dir mal den Szenen-Adapter an. Der ist genau für sowas gemacht.

      Gruss, Jürgen

      1 Reply Last reply Reply Quote 0
      • Meister Mopper
        Meister Mopper @ft.knorr last edited by

        @ft-knorr sagte in Zentral Status Licht:

        Hallo zusammen, ich habe folgendes Blockly Skript gebaut um Eine zentrale Gruppen Adresse zu steuern. Leider funktioniert es nicht und ich bin nicht dahinter gekommen, was der Fehler sein könnte… Vielleicht die Nullwerte mancher Gruppenadressen? Oder habe ich einen kompletten Gedankenfehler?
        Danke für eure Hilfe
        Bildschirmfoto 2024-06-22 um 16.53.33.png

        Da hast du eine unnötige Fleißarbeit verrichtet. Du kannst es mit einer Wildcard-Abfrage auch einfacher haben.

        z. B. für Zigbee (funktioniert aber auch mit allen anderen Objekten)
        f6317944-8738-43f0-b68a-8f9c623bbccf-grafik.png

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

          Ich hatte einfach alle Objekte mit einer Funktion in einem Objekt gesammelt (triggern) lassen und das gesamte Objekt mit JSONATA ausgewertet.

          Hier mal ein Beispiel - da ich die function Licht (light nicht konsequent) genutzt habe, hier nur exemplarisch. Ausserdem habe ich das Gesamtobjekt Lichter nicht gespeichert, beim Neustart baut sich das Objekt also auf. Man kann das auch abspeichern.

          Ich habe mal die function Licht genommen und die ID On - man kann halt nun über den Selector ggf. das alles generisch machen.

          dbe5f564-a9a3-41a3-990d-883bc12af4d6-image.png

          Alle Trigger werden in einem Objekt gesammelt:

          050f46e8-a70f-4308-a2ce-551d7ff7c564-image.png

          Und zum Schluss wird das ganze ausgewertet und der Gesamtstatus Licht an/aus ausgegeben. Licht aus, wenn jede Eigenschaft des Objektes false ist, und true wenn auch nur eine Eigenschaft true ist.

          Hier zum Import:

          <xml xmlns="https://developers.google.com/blockly/xml">
           <variables>
             <variable id="le.$Q3Q#I71y}N?_(B0i">Lichter</variable>
             <variable id="5DRh~$,XYUN2fM#QcKmQ">Licht</variable>
           </variables>
           <block type="variables_set" id="re;}MTX8aPmh:::$)srk" x="37" y="37">
             <field name="VAR" id="le.$Q3Q#I71y}N?_(B0i">Lichter</field>
             <value name="VALUE">
               <block type="object_new" id="D]L_R!A;AtxR;,;BFh0B"></block>
             </value>
             <next>
               <block type="debug" id="O5WYHaB8axPoLN#U.IaG">
                 <field name="Severity">info</field>
                 <value name="TEXT">
                   <shadow type="text" id="XC.=osWyzH^JP!{K?#D*">
                     <field name="TEXT">test</field>
                   </shadow>
                   <block type="variables_get" id="vkh,58Ef+X(zo`f9k_0=">
                     <field name="VAR" id="le.$Q3Q#I71y}N?_(B0i">Lichter</field>
                   </block>
                 </value>
                 <next>
                   <block type="on_ext" id="ZCN`4[G3JJle6Zz~iwkU">
                     <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="5h^ZCd(nRKLjI2=H9!-u">
                         <field name="oid">ID auswählen</field>
                       </shadow>
                       <block type="selector" id="5U]tpIT_v8}q,/a-Ggq;">
                         <field name="TEXT">state[id=*.On](functions=light)</field>
                       </block>
                     </value>
                     <statement name="STATEMENT">
                       <block type="variables_set" id="Z:~Ud-Md0x=h(1bFpLt{">
                         <field name="VAR" id="5DRh~$,XYUN2fM#QcKmQ">Licht</field>
                         <value name="VALUE">
                           <block type="lists_create_with" id="F2HVL,~.FxSEP09m/z]x">
                             <mutation items="2"></mutation>
                             <value name="ADD0">
                               <block type="on_source" id="JAVN.#btT:}{e3^Zb3qm">
                                 <field name="ATTR">id</field>
                               </block>
                             </value>
                             <value name="ADD1">
                               <block type="on_source" id="vQJ~2ovUcTJvy{l5PfVt">
                                 <field name="ATTR">state.val</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <next>
                           <block type="variables_set" id="K[Tcp`4OH3Ix(F;4l9bK">
                             <field name="VAR" id="5DRh~$,XYUN2fM#QcKmQ">Licht</field>
                             <value name="VALUE">
                               <block type="convert_jsonata" id="$?``Ymj09%,cn%B1UI[p">
                                 <value name="EXPRESSION">
                                   <shadow type="text" id="e,x#HSl1x;~f:QZ;95[X">
                                     <field name="TEXT">{$[0]:$[1]}</field>
                                   </shadow>
                                 </value>
                                 <value name="TARGET">
                                   <block type="variables_get" id="0pbIv|iq5P9nEkJW`T,Y">
                                     <field name="VAR" id="5DRh~$,XYUN2fM#QcKmQ">Licht</field>
                                   </block>
                                 </value>
                               </block>
                             </value>
                             <next>
                               <block type="variables_set" id="frOg4cSsOS2jrE@:PJ/#">
                                 <field name="VAR" id="le.$Q3Q#I71y}N?_(B0i">Lichter</field>
                                 <value name="VALUE">
                                   <block type="convert_jsonata" id="#?^DB}M7-9H6SNEC3dYs">
                                     <value name="EXPRESSION">
                                       <shadow type="text" id="%#1Zi=a+4RoMe}[6@f1/">
                                         <field name="TEXT">$merge($)</field>
                                       </shadow>
                                     </value>
                                     <value name="TARGET">
                                       <block type="lists_create_with" id="y^mi!dr67o3:3TG$Smn*">
                                         <mutation items="2"></mutation>
                                         <value name="ADD0">
                                           <block type="variables_get" id="m;P?p(CwSf87.YaPi5Zi">
                                             <field name="VAR" id="le.$Q3Q#I71y}N?_(B0i">Lichter</field>
                                           </block>
                                         </value>
                                         <value name="ADD1">
                                           <block type="variables_get" id="J:?@M9UW@h64)pg;Op`D">
                                             <field name="VAR" id="5DRh~$,XYUN2fM#QcKmQ">Licht</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                   </block>
                                 </value>
                                 <next>
                                   <block type="debug" id="bq~AXb_AY1DdC3YoG_Yt">
                                     <field name="Severity">info</field>
                                     <value name="TEXT">
                                       <shadow type="text" id="!vQ|8xVEt@J.q8YzFGTB">
                                         <field name="TEXT">test</field>
                                       </shadow>
                                       <block type="variables_get" id="+XLKAsWCg=FehWTI`pD-">
                                         <field name="VAR" id="le.$Q3Q#I71y}N?_(B0i">Lichter</field>
                                       </block>
                                     </value>
                                     <next>
                                       <block type="debug" id="uXeYPjw,I9lE[tH^5G*?">
                                         <field name="Severity">info</field>
                                         <value name="TEXT">
                                           <shadow type="text" id="ZxaOPipZw}vH-~oY;#jY">
                                             <field name="TEXT">test</field>
                                           </shadow>
                                           <block type="text_join" id="_R45hi.[bmQAsGT(?X{d">
                                             <mutation items="2"></mutation>
                                             <value name="ADD0">
                                               <block type="text" id="D!D|3%g@sk^alc;;:73J">
                                                 <field name="TEXT">Licht an: </field>
                                               </block>
                                             </value>
                                             <value name="ADD1">
                                               <block type="convert_jsonata" id="!Al!txyf2!a-J6od^Y+W">
                                                 <value name="EXPRESSION">
                                                   <shadow type="text" id="X@pcN{XJT]%8ah)[Sk6l">
                                                     <field name="TEXT"> $reduce(*,function($i, $j){$i or $j})</field>
                                                   </shadow>
                                                 </value>
                                                 <value name="TARGET">
                                                   <block type="variables_get" id="Fd6`GC7j1E2xiFx-{Uq{">
                                                     <field name="VAR" id="le.$Q3Q#I71y}N?_(B0i">Lichter</field>
                                                   </block>
                                                 </value>
                                               </block>
                                             </value>
                                           </block>
                                         </value>
                                       </block>
                                     </next>
                                   </block>
                                 </next>
                               </block>
                             </next>
                           </block>
                         </next>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
             </next>
           </block>
          </xml>
          

          Der Riesenvorteil eines Objektes gegenüber einer Liste ist halt, dass das Objekt einerseits flexibel und variabel ist, zum anderen aber die Eigenschaft nach der ID aktualisiert und nicht dazu genommen wird.

          1 Reply Last reply Reply Quote 0
          • F
            ft.knorr @paul53 last edited by

            @paul53 Habe deine Lösung ausprobiert. Es funktioniert super.. einzig folgende Fehlermeldung

            javascript.0	23:43:10.268	warn	at Object.<anonymous> (script.js.Master_Licht_Status:12:9)
            

            Könnte das von den Nullwerten kommen?

            Homoran paul53 2 Replies Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @ft.knorr last edited by Homoran

              @ft-knorr sagte in Zentral Status Licht:

              Könnte das von den Nullwerten kommen?

              das könnte man vielleicht sagen wenn man dein Blockly und den erzeugten javascript Code kennen würde.

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @ft.knorr last edited by

                @ft-knorr sagte: folgende Fehlermeldung

                Im Tab "Protokolle" findet man weitere Informationen. Vermutung: Der Ziel-Datenpunkt ist nicht vom Typ "Logikwert" (boolean).

                F 1 Reply Last reply Reply Quote 0
                • F
                  ft.knorr @paul53 last edited by

                  @paul53
                  im Log steht folgendes

                  javascript.0
                  2024-06-24 00:07:58.230	warn	at process.processImmediate (node:internal/timers:476:21)
                  
                  javascript.0
                  2024-06-24 00:07:58.229	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8489:62)
                  
                  javascript.0
                  2024-06-24 00:07:58.229	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:641:29)
                  
                  javascript.0
                  2024-06-24 00:07:58.229	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1396:38)
                  
                  javascript.0
                  2024-06-24 00:07:58.228	warn	at Object.<anonymous> (script.js.Master_Licht_Status:12:9)
                  
                  javascript.0
                  2024-06-24 00:07:58.227	warn	getState "knx.0.Licht.Rückmeldung_Schalten_(Ein_Aus_1_Bit).EG_-_Wohnzimmer_Kü_-_LED_Arbeitsfläche_-_Rückmeldung_Schalten" not found (3) states[id]=null
                  
                  javascript.0
                  2024-06-24 00:07:58.227	warn	at process.processImmediate (node:internal/timers:476:21)
                  
                  javascript.0
                  2024-06-24 00:07:58.226	warn	at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/lib/adapter/adapter.js:8489:62)
                  
                  javascript.0
                  2024-06-24 00:07:58.226	warn	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:641:29)
                  
                  javascript.0
                  2024-06-24 00:07:58.226	warn	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1396:38)
                  
                  javascript.0
                  2024-06-24 00:07:58.225	warn	at Object.<anonymous> (script.js.Master_Licht_Status:12:9)
                  
                  javascript.0
                  2024-06-24 00:07:58.223	warn	getState "knx.0.Licht.Rückmeldung_Schalten_(Ein_Aus_1_Bit).EG_-_Kind_-_Leuchten_Bett_Li_-_Rückmeldung_Schalten" not found (3) states[id]=null
                  

                  DANKE!

                  Homoran 1 Reply Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @ft.knorr last edited by

                    @ft-knorr sagte in Zentral Status Licht:

                    2024-06-24 00:07:58.227 warn getState "knx.0.Licht.Rückmeldung_Schalten_(Ein_Aus_1_Bit).EG_-Wohnzimmer_Kü-LED_Arbeitsfläche-_Rückmeldung_Schalten" not found (3) states[id]=null

                    und der eigentliche Fehler ist nicht im verkürzten log zu sehen

                    F 1 Reply Last reply Reply Quote 0
                    • F
                      ft.knorr @Homoran last edited by

                      @homoran said in Zentral Status Licht:

                      Gibt der Fehler nicht an, dass er keinen Wert bei dem Objekt findet? Ich verstehe nur noch nicht, wie ich in dem Skript sagen kann, dass er Nullwerte ignorieren soll.

                      Bildschirmfoto 2024-06-24 um 08.19.47.png

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @ft.knorr last edited by paul53

                        @ft-knorr sagte: sagen kann, dass er Nullwerte ignorieren soll.

                        Das sind keine Nullwerte, sondern der Datenpunkt hat keinen Zustand, da anscheinend "expire" verwendet wurde. Da hilft nur eine JS-Funktion mit Ergebnis:

                        if(existsState(id)) return getState(id).val;
                        

                        Blockly_temp.JPG

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        1.2k
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        6
                        12
                        471
                        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