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.
    • 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
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    Hi,

                    Script im Widget geht glaube ich aber Dan hat du wieder dasselbe Problem

                    (Für jeden Schalter ein Script)

                    Ich überlege gerade ob es nicht dynamischer gehen würde.

                    In JavaScript ja, den kompletten Baum auslesen und per Funktionen die anderen Objekte erstellen und setzen

                    Hmm müsste auch zum Teil in blockly machbar sein um wieviel Schalter geht es die dieselbe Logik haben müssen ?

                    Sent from my iPhone using Tapatalk

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

                      @Dutchman:

                      … um wieviel Schalter geht es die dieselbe Logik haben müssen ? `

                      Insgesamt betrifft es ungfähr 34 Kanäle.

                      Im Moment helfe ich mir mit duplizieren der Blocky Skripts. Nicht elegant, aber für den Moment komme ich damit zurecht.

                      In "https://forum.iobroker.net/viewtopic.php?f=30&t=15367" wird das Thema des Umgangs mit STATUS und AKTIONs-Objekten gerade auch diskutiert.

                      Mal sehen was dort rauskommt, wird hierfür auch helfen.

                      Auf jeden Fall: Ganz herzlichen Dank für Eure Hilfe!

                      1 Reply Last reply Reply Quote 0
                      • S
                        schrorg last edited by schrorg

                        Hallo zusammen,

                        ich habe das Script für meine Bedürfnisse optimiert und möchte euch das Ergebnis nicht vorenthalten.

                        Jeder State besteht ja im Grunde genommen aus drei Elementen: KNX-Read, KNX-Write und der kombinierte State im JS. Daher habe ich mir überlegt, dass man das in JavaScript auch per Array lösen kann. Nach der Array-Definition geht man dann in einer Schleife darüber und setzt mit "on(...)" die Subscriptions.

                        Das Array besteht aus Objekten, die jeweils drei properties haben: "knxread", "knxwrite" und "combined". Wird mit dem Adapter "web.0" der State "combined" verändert, so wird er nach "knxwrite" geschrieben. Wird per KNX (z.B. KNX-Taster) etwas verändert ("knxread" ändert sich), so wird der Wert nach "combined" übertragen.

                        Damit die Zeilen im Array nicht unnötig lang werden, habe ich das Präfix ausgespart. Es ist ja prinzipiell immer gleich und wird im späteren Verlauf (erste Zeilen in der Schleife) dann einfach hinzugefügt.

                        Das Script im Ganzen sieht dann so aus (Array ist nur auszugsweise und muss natürlich an die tatsächlichen Gegebenheiten angepasst werden!):

                        var pairs = [
                            // Erdgeschoss
                            {knxread: 'EG.Gästezimmer.Status', knxwrite: 'EG.Gästezimmer.Schalten', combined: 'EG.Gästezimmer.Schalten'},
                            {knxread: 'EG.Gästezimmer.Wert', knxwrite: 'EG.Gästezimmer.Wert_setzen_Deckenlicht', combined: 'EG.Gästezimmer.Wert'},
                            {knxread: 'EG.Wohnzimmer.Status', knxwrite: 'EG.Wohnzimmer.Schalten', combined: 'EG.Wohnzimmer.Schalten'},
                        
                            // Obergeschoss
                            {knxread: 'OG.Ankleidezimmer.Position_Rolladen', knxwrite: 'OG.Ankleidezimmer.Position_anfahren_Rolladen', combined: 'OG.Ankleidezimmer.Position_Rolladen'},
                            {knxread: 'OG.Ankleidezimmer.Verfahrstatus_Rolladen', knxwrite: 'OG.Ankleidezimmer.Verfahrstatus_anfahren_Rolladen', combined: 'OG.Ankleidezimmer.Verfahrstatus_Rolladen'},
                            {knxread: 'OG.Schlafzimmer.Position_Rolladen_Fenster', knxwrite: 'OG.Schlafzimmer.Position_anfahren_Rolladen_Fenster', combined: 'OG.Schlafzimmer.Position_Rolladen_Fenster'},
                        
                            // Aussenbereich
                            {knxread: 'Außenbereich.Garten.Status_Licht', knxwrite: 'Außenbereich.Garten.Schalten_Licht', combined: 'Außenbereich.Garten.Schalten_Licht'},
                            {knxread: 'Außenbereich.Garten.Status_Strom', knxwrite: 'Außenbereich.Garten.Schalten_Strom', combined: 'Außenbereich.Garten.Schalten_Strom'},
                            {knxread: 'Außenbereich.Balkon.Status_Licht', knxwrite: 'Außenbereich.Balkon.Schalten_Licht', combined: 'Außenbereich.Balkon.Schalten_Licht'},
                            {knxread: 'Außenbereich.Balkon.Status_Strom', knxwrite: 'Außenbereich.Balkon.Schalten_Strom', combined: 'Außenbereich.Balkon.Schalten_Strom'}
                        ];
                        
                        pairs.forEach(function(pair) {
                            pair.knxread = 'knx.0.' + pair.knxread;
                            pair.knxwrite = 'knx.0.' + pair.knxwrite;
                            pair.combined = 'javascript.0.KNX.' + pair.combined;
                            createState(pair.combined);
                        
                            // Initialen Wert aus KNX in die kombinierten Objekte schreiben:
                            setState(pair.combined, getState(pair.knxread).val, true);
                        
                            // Wert wird durch KNX geändert:
                            on({id: pair.knxread, change: 'ne'}, function(obj) {
                                setState(pair.combined, (obj.state ? obj.state.val : ''), true);
                            });
                        
                            // Wert wird durch ioBroker web.0 geändert:
                            on({id: pair.combined, change: 'ne'}, function(obj) {
                                if ((obj.state ? obj.state.from : '') == 'system.adapter.web.0') {
                                    setState(pair.knxwrite, (obj.state ? (obj.state.val === true ? 1 : (obj.state.val === false ? 0 : obj.state.val)) : ''), false);
                                }
                            });
                        });
                        

                        Ich habe aktuell 138 Subscriptions, d.h. 46 (138/3) Objekte im Array und das Script läuft bei uns seit einigen Tagen völlig problemlos.

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        754
                        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