Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. [SOLVED] Wie werden Widgets genutzt, wenn ein Aktor getrennte Objekte für STATUS und Aktion hat?

    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

    UNSOLVED [SOLVED] Wie werden Widgets genutzt, wenn ein Aktor getrennte Objekte für STATUS und Aktion hat?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Breisgauer
      Breisgauer last edited by

      Hi

      ich habe KNX Aktoren, die ihren STATUS in einem eigenen Objekt kommunizieren.

      Beispiel: Ein Dimmer kommuniziert seinen STATUS EIN/AUS in einem eigenen Objekt, wie auch der aktuellen Dimmwert in einem eigenen Objekt auf dem KNX Bus kommuniziert wird. Gesteuert wird der Dimmaktor wiederum über andere, separate Objekte wie Objekt SCHALTEN EIN/AUS oder Objekt DIMMWERT ABSOLUT.

      Die Widgets haben meist nur ein Objekt verfügbar, das für Schreiben und Lesen gedacht ist. Widget 'jqui - Slider horizontal' hat z.B. nur ein Objekt um den Dimmwert zu setzen und von Änderungen des Dimmwerts zu erfahren. Steuere ich also den Aktor mit dem entsprechende Objekt über das Widget, dann bekommt das Widget spätere Änderungen des Dimmwerts nicht mit, da der neue Dimmwert über ein anderes Objekt kommuniziert wird.

      Wie löst ihr das Problem, die Widgets korrekt zu nutzen, wenn Steuerung und Status über separate Objekte kommuniziert werden?

      • Breisgauer
      1 Reply Last reply Reply Quote 0
      • Dutchman
        Dutchman Developer Most Active Administrators last edited by

        Ich kombiniere die verschiedenen Quellen per Script zu einem object und steuere dieses per vis.

        Im Script kan man Abfrage was der Ursprung der Änderung war (Script oder vis) und dem entsprechend Aktionen auslösen

        Sent from my iPhone using Tapatalk

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

          Danke Dutchman, das wäre eine Option.

          Ich bin nicht besonders firm im Scripten. Könntest Du ein Beispiel zur Verfügung stellen, mit dem ich weiterlaufen kann?

          • Breisgauer
          1 Reply Last reply Reply Quote 0
          • Dutchman
            Dutchman Developer Most Active Administrators last edited by

            Joa klar, musst mir aber Mal deine Situation schätzen 😉

            Also sehr Datenpunkte geht es drum und wie werden diese geschaltet und was möchtest du in vis erreichen

            Sent from my iPhone using Tapatalk

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

              Mein Held!

              Mein Dimmaktor hat u.a. folgende Objekte:

              • Objekt #1: "Schalten EIN/AUS", DPT 1.001 (1-Bit), Schreiben

              • Objekt #2: "Status AN/AUS", DPT 1.001 (1-Bit), Lesen

              • Objekt #3: "Dimmen Absolut", DPT 5.001 (8-Bit, Prozent), Schreiben

              • Objekt #4: "Status Dimmwert", DPT 5.001 (8-Bit, Prozent), Lesen

              Über einen 'Slider' steuere ich in ioBroker den Dimmwert, somit ist der 'Slider' mit Objekt #3 verbunden.

              Wird der Dimmwert über eine andere Quelle als ioBroker verändert, kommuniziert das der Aktor über Objekt #4 über den Bus.

              Der 'Slider' soll den neuen Dimmwert erfahren und sich entsprechend anpassen.

              Analog schalte ich über 'radiobutton ON/OFF' den Dimmer AN/AUS, was über Objekt #1 geschieht.

              Wird der Dimmer über eine andere Quelle als ioBroker AN/AUS geschalten. kommuniziert das der Aktor über Objekt #2.

              Der 'radiobutton ON/OFF' soll diesen Status erfahren und sich dem Status anpassen.

              • Breisgauer
              1 Reply Last reply Reply Quote 0
              • Dutchman
                Dutchman Developer Most Active Administrators last edited by

                Also wen ich das richtig verstehe :

                • Datenpunkt schreiben ermöglicht das steuern

                • Datenpunkt lesen ändert sich wen man nicht per ioBroker sondern KNX (oder Schalter darauf) den Zustand ändert ?

                Das soll 1 object werden, wen Zustand per vis geschaltet Dan in Datenpunkt schreiben einstellen.

                Wen Datenpunkt lesen per KNX Adapter erneuert wird muss das object denselben Wert annehmen?

                Sent from my iPhone using Tapatalk

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

                  @Dutchman:

                  Also wen ich das richtig verstehe :

                  • Datenpunkt schreiben ermöglicht das steuern

                  • Datenpunkt lesen ändert sich wen man nicht per ioBroker sondern KNX (oder Schalter darauf) den Zustand ändert ? `

                  Korrekt!

                  Herausforderung ist, dass Widgets wie 'Slider' und 'radiobutton ON/OFF' nur einen Datenpunkt zur Steuerung als Verbindung zulassen.

                  Dadurch benötige ich 1 Objekt/Datenpunkt, das den KNX Aktor steuert und den KNX Status im Widget darstellt.

                  Beispiel Dimmen: KNX Objekt #3 (schreiben) und KNX Objekt #4 (Lesen) müssen für das Widget auf 1 Datenpunkt projiziert werden. Wird dieser Datenpunkt in ioBroker verändert, soll das über KNX Objekt #3 an den KNX Bus gegeben werden, meldet der KNX Bus eine Änderung über KNX Objekt #4 soll das über selbigen Datenpunkt an das Widget gehen.

                  Die KNX Objekte habe ich beispielhaft angefügt. Ebenso, wie das in der Visu abgebildet sein kann.

                  • Breisgauer
                    7245_visu.png
                    7245_objects.png
                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    okido das ist nicht so ein grosses problem mache gerade das beispiel, eine frage noch :

                    • Muss es ein object sein für schalten und dimmer oder separate wo an/aus und der % wert wiedergegeben wird

                    • oder ist >1% auch an bzw < 1% aus

                    ich fange erstmal mit dem Schalter an

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

                      @Dutchman:

                      okido das ist nicht so ein grosses problem … `
                      Super!!

                      @Dutchman:

                      … eine frage noch :

                      • Muss es ein object sein für schalten und dimmer oder separate wo an/aus und der % wert wiedergegeben wird

                      • oder ist >1% auch an bzw < 1% aus `

                      2 Objekte: Eines für das Widget 'radiobutton', das aus KNX Objekt #1 und KNX Objekt #2 resultiert, ein weiteres für das Widget 'Slider', das sich aus KNX Objekt #3 und KNX Objekt #4 ergibt.

                      • Breisgauer
                      1 Reply Last reply Reply Quote 0
                      • Dutchman
                        Dutchman Developer Most Active Administrators last edited by

                        ok, dan sollte es das hier eigentlich bereits sei weis nur nicht ob es bei dir Funktionieren wird wen man true/false auf das KNX object schreibt oder das es 0 oder 1 sein muss.

                        Zur Erklärung :

                        • habe blockly genommen da dies auch für unerfahrenen Anfänger ziemlich leicht zu begreifen ist

                        • ich habe deine 4 KNX object als dummy erstellt unter javascript.test.knx

                        • ich habe 2 object erstellt unter javascript.test.lampe (schalten und dimmen)

                        • der linke teil ist für object bezüglich schalten, der rechten teil für dimmen

                        • der erste träger schreibt den wert welcher aus KNX kommt und das object Lampe

                        • der zweite träger schreibt den wert des objects Lampe nach KNX aber NUR wen dieser durch vis (also web.0) geschrieben wurde.

                        Das letztere mache ich da sonst wen KNX den wert ändert iObroker nochmal denselben wert nach KNX schicken würde. Wen das egal ist kan die IF-abfrage raus.

                        979_screen_shot_2018-06-27_at_11.48.38.png
                        979_screen_shot_2018-06-27_at_11.54.18.png

                        Hier das script zum importieren, würde bei dir auch 1:1 so laufen da ich mit dummy objecten arbeite

                         <xml xmlns="http://www.w3.org/1999/xhtml"><block type="create" id="i1J/zcZ_uB2rEnn%i^6q" x="13" y="13"><field name="NAME">test.KNX.schalten_read</field>
                            <statement name="STATEMENT"><block type="create" id="|z`Clfl^#BS:-E%1Gd|a"><field name="NAME">test.KNX.schalten_write</field>
                                <statement name="STATEMENT"><block type="create" id="/I#vbI`SS9%xh}k)39~|"><field name="NAME">test.KNX.dimmen_read</field>
                                    <statement name="STATEMENT"><block type="create" id="vdf@PAn/eM?mtjF-O|UI"><field name="NAME">test.KNX.dimmen_write</field>
                                        <statement name="STATEMENT"><block type="create" id="cz1~spClS?q~65[2tkPS"><field name="NAME">test.Lampe.schalten</field>
                                            <statement name="STATEMENT"><block type="create" id="5)}L]]buya`2IngOv,xU"><field name="NAME">test.Lampe.dimmen</field></block></statement></block></statement></block></statement></block></statement></block></statement> 
                            <next><block type="comment" id="NzxSWNy#{O|c([Fqk-AX"><field name="COMMENT">Lampe schalten</field>
                                <next><block type="comment" id="+o}(z+vhQt|y5Vbkz=`4"><field name="COMMENT">Wenn wert durch KNX geändert</field> 
                                    <next><block type="comment" id="a:yY8.m|de4Fk{T*`8e!"><field name="COMMENT">Auf allgemeines object übernehmen</field>
                                        <next><block type="on" id="EEA9BRWIrO#p+4Z;;Juw"><field name="OID">javascript.0.test.KNX.schalten_read</field>
                                            <field name="CONDITION">ne</field>
                        
                                            <statement name="STATEMENT"><block type="update" id="eeJEH9[v7wKe0-4|n=AT"><mutation delay_input="false"></mutation>
                                                <field name="OID">javascript.0.test.Lampe.schalten</field>
                                                <field name="WITH_DELAY">FALSE</field>
                                                <value name="VALUE"><block type="on_source" id=");9A#+o.m:SLdPO4os%w"><field name="ATTR">state.val</field></block></value></block></statement> 
                                            <next><block type="comment" id="@lEL[iiogA]*@ay;Zy#z"><field name="COMMENT">Wenn wert durch vis geändert</field>
                                                <next><block type="comment" id="}M[?`J)J|pm/oYuK](W("><field name="COMMENT">nach KNX schreiben nur wen</field>
                                                    <next><block type="comment" id="9@D+x|6MA=6l9+ODwvX;"><field name="COMMENT">wert aus vis kommt</field>
                                                        <next><block type="on" id="O%GGKRI:Me9;Rtlzq4cF"><field name="OID">javascript.0.test.Lampe.schalten</field>
                                                            <field name="CONDITION">ne</field>
                        
                                                            <statement name="STATEMENT"><block type="controls_if" id="gc(}r0sW^eZwMO}Gf7-!"><value name="IF0"><block type="logic_compare" id="XIODS@3eibM5AgPEOU@D"><field name="OP">EQ</field>
                                                                    <value name="A"><block type="on_source" id="r*]zJH7),iXq9_p^{@v|"><field name="ATTR">state.from</field></block></value> 
                                                                    <value name="B"><block type="text" id="R1I;NC2[aQyPamj!:cD%"><field name="TEXT">system.adapter.web.0</field></block></value></block></value> 
                                                                <statement name="DO0"><block type="update" id="N[Io^0XGMlNZ5rYk6VV="><mutation delay_input="false"></mutation>
                                                                    <field name="OID">javascript.0.test.KNX.schalten_write</field>
                                                                    <field name="WITH_DELAY">FALSE</field>
                                                                    <value name="VALUE"><block type="on_source" id="1-:P9]oxlC5zaGAu9D:p"><field name="ATTR">state.val</field></block></value></block></statement></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block> 
                          <block type="comment" id="H[RLO.bOc_KPh,~XQsX}" x="563" y="288"><field name="COMMENT">Lampe DIMMEN</field>
                            <next><block type="comment" id="0.u0Z:Y+ey4P6=@yW(SK"><field name="COMMENT">Wenn wert durch KNX geändert</field> 
                                <next><block type="comment" id="xP.+/B3pp]~V#Ybtnek#"><field name="COMMENT">Auf allgemeines object übernehmen</field>
                                    <next><block type="on" id="_DBqr0yRrKG-bsO^;1AH"><field name="OID">javascript.0.test.KNX.dimmen_read</field>
                                        <field name="CONDITION">ne</field>
                        
                                        <statement name="STATEMENT"><block type="update" id="}.V~X9G,!kW+{udlA3!B"><mutation delay_input="false"></mutation>
                                            <field name="OID">javascript.0.test.Lampe.dimmen</field>
                                            <field name="WITH_DELAY">FALSE</field>
                                            <value name="VALUE"><block type="on_source" id="^[]q.icYDBIit4g-Bg0?"><field name="ATTR">state.val</field></block></value></block></statement> 
                                        <next><block type="comment" id="dmVhBL.CzQvu}NhqQ=?6"><field name="COMMENT">Wenn wert durch vis geändert</field>
                                            <next><block type="comment" id="y8rh[hq8Sp)_lEoU=r]k"><field name="COMMENT">nach KNX schreiben nur wen</field>
                                                <next><block type="comment" id="7^RWiFr+STysD0lLtT[L"><field name="COMMENT">wert aus vis kommt</field>
                                                    <next><block type="on" id="7[!jnie5?2OZ5970s*3E"><field name="OID">javascript.0.test.Lampe.dimmen</field>
                                                        <field name="CONDITION">ne</field>
                        
                                                        <statement name="STATEMENT"><block type="controls_if" id="2]+P*+xCen1}x?{I^%#2"><value name="IF0"><block type="logic_compare" id="js!ZbO}KUknl%[ztZl8b"><field name="OP">EQ</field>
                                                                <value name="A"><block type="on_source" id="VA,[X3y;WT7A{@~E[;x6"><field name="ATTR">state.from</field></block></value> 
                                                                <value name="B"><block type="text" id="iYd+E+A05*x9gL-0I!1x"><field name="TEXT">system.adapter.web.0</field></block></value></block></value> 
                                                            <statement name="DO0"><block type="update" id="`uTlAf_9?[{a.|SNa;6y"><mutation delay_input="false"></mutation>
                                                                <field name="OID">javascript.0.test.KNX.dimmen_write</field>
                                                                <field name="WITH_DELAY">FALSE</field>
                                                                <value name="VALUE"><block type="on_source" id="?NNsw[l#M;Bsla~i^WLZ"><field name="ATTR">state.val</field></block></value></block></statement></block></statement></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></xml> 
                        
                        

                        und hier auch der export der widgets zum probieren:

                        [{"tpl":"tplMaListLightDim","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"oid":"javascript.0.test.Lampe.dimmen","title":"Test lampe dimmen\n"},"style":{"left":"3px","top":"282px"},"widgetSet":"material"},{"tpl":"tplMaListLight","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"oid":"javascript.0.test.Lampe.schalten","title":"Test Lampe schalten"},"style":{"left":"3px","top":"226px"},"widgetSet":"material"}]
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • Breisgauer
                          Breisgauer last edited by

                          @Dutchman:

                          • habe blockly genommen da dies auch für unerfahrenen Anfänger ziemlich leicht zu begreifen ist `

                          Vielen Dank für die Vorlage, werde ich testen.

                          Ist es ein großer Aufwand, das als javascript vorlage zu realisieren?

                          Hintergrund: Ich wollte das als Startpunkt nehmen, um mich auch in JS einzuarbeiten.

                          • Breisgauer
                          1 Reply Last reply Reply Quote 0
                          • Dutchman
                            Dutchman Developer Most Active Administrators last edited by

                            Wen du die Blöcke importiert hast kannst du ja zeige Code machen Dan siehst du wie es in JavaScript aussieht 😉

                            Sent from my iPhone using Tapatalk

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

                              OK, kommt das so raus, wie Du es auch in javascript machen würdest?! Da siehst man, wie dringend eine Einarbeitung von mir nötig ist ….

                              1 Reply Last reply Reply Quote 0
                              • Dutchman
                                Dutchman Developer Most Active Administrators last edited by

                                Jup, also kwa Logik könnte man das noch etwas vereinfachen/kombinieren ich habe es aber erstmal so gelassen damit nicht alles auf einen Haufen sondern seperaten Blöcken kommt ist für den Anfang Einfacher zu verstehen.

                                Ich würde es letztlich noch mehr zusammenbringen damit weniger Blöcke/Code nötig sind

                                Sent from my iPhone using Tapatalk

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

                                  @Dutchman:

                                  … und hier auch der export der widgets zum probieren: `

                                  Sorry, blöde Frage, aus welchem Set sind die Widgets?

                                  Ich habe die Standard Sets + 'jqui-mfd' + 'fancyswitch' + 'hqwidgets' aktiv, aber die Vorlage scheint sich eines anderen Sets zu bedienen.

                                  • Breisgauer
                                  1 Reply Last reply Reply Quote 0
                                  • Dutchman
                                    Dutchman Developer Most Active Administrators last edited by

                                    Das sind die Material Widgets 🙂

                                    Sent from my iPhone using Tapatalk

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

                                      OK, die habe ich nicht drauf. Die muss man ja manuell installieren, sind nicht über ioBroker.admin verfügbar. Dann ziehe ich doch erst mal auf mein Testsystem um und versuche es dort.

                                      Auf jeden Fall schon mal vielen Dank!

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

                                        @Breisgauer:

                                        Ist es ein großer Aufwand, das als javascript vorlage zu realisieren? `
                                        https://forum.iobroker.net/viewtopic.php?f=20&t=14961&p=156224#p156224.

                                        1 Reply Last reply Reply Quote 0
                                        • Dutchman
                                          Dutchman Developer Most Active Administrators last edited by

                                          @Breisgauer:

                                          OK, die habe ich nicht drauf. Die muss man ja manuell installieren, sind nicht über ioBroker.admin verfügbar. Dann ziehe ich doch erst mal auf mein Testsystem um und versuche es dort.

                                          Auf jeden Fall schon mal vielen Dank! `

                                          Nein das ist ein Widget Satz welchen du per Admin installieren kannst:

                                          ~~![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201806 ... 470e23.png">https://uploads.tapatalk-cdn.com/20180627/b4d0d713c4956ab1444df532ef470e23.png</link_text>" />

                                          Sent from my iPhone using Tapatalk~~

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

                                            Vielen Dank für die Vorlagen. Damit kam ich einen großen Schritt weiter!

                                            @Dutchman:

                                            [Nein das ist ein Widget Satz welchen du per Admin installieren kannst: `
                                            Dafür muss in den 'main settings' des iobroker.admin das repository von 'default' auf 'latest' geändert werden. Aktuell ist sind die Material Widgets noch nicht über 'default' verfügbar.

                                            @Dutchman:

                                            Hier das script zum importieren, würde bei dir auch 1:1 so laufen da ich mit dummy objecten arbeite `
                                            Das war eine prima Vorlage, u.a. auch um erste Erfahrung mit Blockly zu sammeln. Learnings:

                                            • Blockly 'system / update Object ID' funktionierte nicht, um das KNX Objekt zu aktualisieren. 'system / control Object ID' funktioniert.

                                            • der iobroker.script Editor läuft in Google Chrome deutlich schneller als in Microsoft Edge

                                            Und so habe ich es dann gemacht.

                                            Bockly Export:

                                             <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="45a4TZZ^CJv1nlRir2M+" x="13" y="-362"><field name="COMMENT">- Bad -</field>
                                                <next><block type="comment" id="cLT=F:;=;j9LGZGlQ8%Y"><field name="COMMENT">Hilfsobjekte, die STATUS und ACTION Objekt von KNX</field>
                                                    <next><block type="comment" id=":x78Q3S4;HW`sFe+yp|E"><field name="COMMENT">in jeweils einem STEUER/STATUS Objekt zusammenfassen</field>
                                                        <next><block type="create" id="EAjdt|xgpdHb*imf`7A)"><field name="NAME">JRUI.UnitedObjects.DG.Bad_Deckenauslass_EIN_AUS</field>
                                                            <statement name="STATEMENT"><block type="create" id="2|:qV3)~O8wg6EGh90S0"><field name="NAME">JRUI.UnitedObjects.DG.Bad_Deckenauslass_DIMMWERT</field></block></statement></block></next></block></next></block></next></block> 
                                              <block type="comment" id="`:itHcdM?[34BX8V~|Jb" x="12" y="-162"><field name="COMMENT">Änderungen des KNX Objekt STATUS EIN/AUS</field>
                                                <next><block type="comment" id="g#Pd5^Oc|Dr(CcrAfJDG"><field name="COMMENT">in das Hilfsobjekt schreiben</field>
                                                    <next><block type="on" id="za.QK_bsB#ZXRe}FNn/;"><field name="OID">knx.0.Schalten.DG.DG_-Bad-_Deckenauslass_STATUS</field>
                                                        <field name="CONDITION">ne</field>
                                            
                                                        <statement name="STATEMENT"><block type="update" id="OB@?B[{Fv,l(2%6+z%Nx"><mutation delay_input="false"></mutation>
                                                            <field name="OID">javascript.0.JRUI.UnitedObjects.DG.Bad_Deckenauslass_EIN_AUS</field>
                                                            <field name="WITH_DELAY">FALSE</field>
                                                            <value name="VALUE"><block type="on_source" id="L7LUBuTsT0TN#cnZ?mCf"><field name="ATTR">state.val</field></block></value></block></statement></block></next></block></next></block> 
                                              <block type="comment" id="W%nh5B-s0kxshWwAk{/m" x="762" y="-162"><field name="COMMENT">Änderungen des KNX Objekt STATUS DIMMWERT</field>
                                                <next><block type="comment" id="gx1mY:{=4Scs=*Pg6_Ax"><field name="COMMENT">in das Hilfsobjekt schreiben</field>
                                                    <next><block type="on" id="ApB.tKqb}(-cqshV%@97"><field name="OID">knx.0.Dimmen.DG.DG_-Bad-_Deckenauslass_DIMMEN_STATUS_DIMMWERT</field>
                                                        <field name="CONDITION">ne</field>
                                            
                                                        <statement name="STATEMENT"><block type="update" id="#Bp4s]PV(wVq7}(+{cR4"><mutation delay_input="false"></mutation>
                                                            <field name="OID">javascript.0.JRUI.UnitedObjects.DG.Bad_Deckenauslass_DIMMWERT</field>
                                                            <field name="WITH_DELAY">FALSE</field>
                                                            <value name="VALUE"><block type="on_source" id=";XOa2Jhwyav2GRc1cxWv"><field name="ATTR">state.val</field></block></value></block></statement></block></next></block></next></block> 
                                              <block type="comment" id="t_@D]KoMl5YVG{)wIU|0" x="13" y="87"><field name="COMMENT">Änderungen vom Hilfsobjekt an KNX übertragen</field>
                                                <next><block type="comment" id="MrEQW~e%)c;%}dmEbzs="><field name="COMMENT">wenn die Änderung in der VISU durchgeführt wurde</field>
                                                    <next><block type="on" id="(~,[eX}@tJ#xhMS=s@D0"><field name="OID">javascript.0.JRUI.UnitedObjects.DG.Bad_Deckenauslass_EIN_AUS</field>
                                                        <field name="CONDITION">ne</field>
                                            
                                                        <statement name="STATEMENT"><block type="controls_if" id="%b]{DvDD2[-#jo%tNSzY"><value name="IF0"><block type="logic_compare" id="f51q,NiH(Z=s-#9ia6zH"><field name="OP">EQ</field>
                                                                <value name="A"><block type="on_source" id="?Tb];(mN{ObVeU`=ugR/"><field name="ATTR">state.from</field></block></value> 
                                                                <value name="B"><block type="text" id="laQ}p[HOt(nCML[ec2`v"><field name="TEXT">system.adapter.web.0</field></block></value></block></value> 
                                                            <statement name="DO0"><block type="control" id="|k{/]NAKwteNHDjT`puJ"><mutation delay_input="false"></mutation>
                                                                <field name="OID">knx.0.Schalten.DG.DG_-Bad-_Deckenauslass_EIN_AUS</field>
                                                                <field name="WITH_DELAY">FALSE</field>
                                                                <value name="VALUE"><block type="on_source" id=":-p*Bz+##W^HAt.Jx,W*"><field name="ATTR">state.val</field></block></value></block></statement></block></statement></block></next></block></next></block> 
                                              <block type="comment" id="ia@S4:hqc2o8;k4=Ebc)" x="763" y="62"><field name="COMMENT">Änderungen vom Hilfsobjekt an KNX übertragen</field>
                                                <next><block type="comment" id="?2`8a/%?_oDW0[Eomw*+"><field name="COMMENT">wenn die Änderung in der VISU durchgeführt wurde</field>
                                                    <next><block type="on" id="^dhSPaT0.mTb?[b-O[AP"><field name="OID">javascript.0.JRUI.UnitedObjects.DG.Bad_Deckenauslass_DIMMWERT</field>
                                                        <field name="CONDITION">ne</field>
                                            
                                                        <statement name="STATEMENT"><block type="controls_if" id="?f{eKoe/g`;T)0=L5t*J"><value name="IF0"><block type="logic_compare" id="*]vkc5jSMf57SFPw@^H~"><field name="OP">EQ</field>
                                                                <value name="A"><block type="on_source" id="sc_M=:tiF|j|]Qc-}716"><field name="ATTR">state.from</field></block></value> 
                                                                <value name="B"><block type="text" id="Q1DM9K4J=i`URJ|tuaB4"><field name="TEXT">system.adapter.web.0</field></block></value></block></value> 
                                                            <statement name="DO0"><block type="control" id="A0;^5S0rgb]3wcAN@T87"><mutation delay_input="false"></mutation>
                                                                <field name="OID">knx.0.Dimmen.DG.DG_-Bad-_Deckenauslass_DIMMEN_ABSOLUT</field>
                                                                <field name="WITH_DELAY">FALSE</field>
                                                                <value name="VALUE"><block type="on_source" id="UGVu^(;@V(}(=fjozt5q"><field name="ATTR">state.val</field></block></value></block></statement></block></statement></block></next></block></next></block> 
                                              <block type="on" id="pfwv7OEwfv]9:Kl9M`NZ" x="112" y="588"><field name="OID">Object ID</field>
                                                <field name="CONDITION">ne</field></block></xml> 
                                            
                                            

                                            Und die Test-Widgets für den Veiw dazu:

                                            [{"tpl":"tplMfdLight","data":{"oid":"knx.0.Schalten.DG.DG_-Bad-_Deckenauslass_STATUS","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","asButton":"true","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"min":"0","max":"1"},"style":{"left":"14px","top":"171px"},"widgetSet":"jqui-mfd"},{"tpl":"tplJquiRadio","data":{"oid":"javascript.0.JRUI.UnitedObjects.DG.Bad_Deckenauslass_EIN_AUS","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","off_text":"OFF","on_text":"ON","padding":"5","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0},"style":{"left":"220px","top":"171px"},"widgetSet":"jqui"},{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"Bad Decke"},"style":{"left":"14px","top":"141px","width":"200px","height":"23px"},"widgetSet":"basic"},{"tpl":"tplJquiSlider","data":{"oid":"javascript.0.JRUI.UnitedObjects.DG.Bad_Deckenauslass_DIMMWERT","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"min":"0","max":"100","step":"5"},"style":{"left":"220px","top":"229px","width":"126px","height":"23px"},"widgetSet":"jqui"},{"tpl":"tplMfdLight","data":{"oid":"knx.0.Dimmen.DG.DG_-Bad-_Deckenauslass_DIMMEN_STATUS_DIMMWERT","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","asButton":"true","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"min":"0","max":"100"},"style":{"left":"103px","top":"171px"},"widgetSet":"jqui-mfd"},{"tpl":"tplValueFloat","data":{"oid":"knx.0.Dimmen.DG.DG_-Bad-_Deckenauslass_DIMMEN_STATUS_DIMMWERT","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","is_comma":"true","factor":"1","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_append_singular":"%","html_append_plural":"%","digits":"0"},"style":{"left":"111px","top":"251px","z-index":"0","text-align":"center"},"widgetSet":"basic"},{"tpl":"tplValueBool","data":{"oid":"knx.0.Schalten.DG.DG_-Bad-_Deckenauslass_STATUS","g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html_false":"OFF","html_true":"ON"},"style":{"left":"15px","top":"252px","text-align":"center","width":"76px","height":"25px"},"widgetSet":"basic"}]
                                            

                                            Somit kann ich eine prima Vorlage für vergleichbare Fälle.

                                            Ich habe sehr viele KNX Kanäle, die getrennte Steuer- und Statusobjekte haben. Dh. ich müsste für jeden KNX Kanal einmal ein derartiges Script bauen, in dem die Objekte für die Widgets konsolidiert werden. Keine Ahnung was das für einen Einfluss auf die Performance des ioBroker hat.

                                            Gibt es einen Weg, das zu vereinfachen, z.b. ein Skript direkt in einem Widget einzubetten?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            819
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            4
                                            23
                                            2806
                                            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