Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. [SOLVED] Wie werden Widgets genutzt, wenn ein Aktor getrennte Objekte für STATUS und Aktion hat?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    15
    1
    642

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    630

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    1.9k

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

Geplant Angeheftet Gesperrt Verschoben Ungelöst Visualisierung
23 Beiträge 4 Kommentatoren 3.5k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • DutchmanD Offline
    DutchmanD Offline
    Dutchman
    Developer Most Active Administrators
    schrieb am zuletzt editiert von
    #4

    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 Antwort Letzte Antwort
    0
    • BreisgauerB Offline
      BreisgauerB Offline
      Breisgauer
      schrieb am zuletzt editiert von
      #5

      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

      Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

      1 Antwort Letzte Antwort
      0
      • DutchmanD Offline
        DutchmanD Offline
        Dutchman
        Developer Most Active Administrators
        schrieb am zuletzt editiert von
        #6

        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 Antwort Letzte Antwort
        0
        • BreisgauerB Offline
          BreisgauerB Offline
          Breisgauer
          schrieb am zuletzt editiert von
          #7

          @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

          Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

          1 Antwort Letzte Antwort
          0
          • DutchmanD Offline
            DutchmanD Offline
            Dutchman
            Developer Most Active Administrators
            schrieb am zuletzt editiert von
            #8

            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 Antwort Letzte Antwort
            0
            • BreisgauerB Offline
              BreisgauerB Offline
              Breisgauer
              schrieb am zuletzt editiert von
              #9

              @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

              Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

              1 Antwort Letzte Antwort
              0
              • DutchmanD Offline
                DutchmanD Offline
                Dutchman
                Developer Most Active Administrators
                schrieb am zuletzt editiert von
                #10

                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 Antwort Letzte Antwort
                0
                • BreisgauerB Offline
                  BreisgauerB Offline
                  Breisgauer
                  schrieb am zuletzt editiert von
                  #11

                  @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

                  Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

                  1 Antwort Letzte Antwort
                  0
                  • DutchmanD Offline
                    DutchmanD Offline
                    Dutchman
                    Developer Most Active Administrators
                    schrieb am zuletzt editiert von
                    #12

                    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 Antwort Letzte Antwort
                    0
                    • BreisgauerB Offline
                      BreisgauerB Offline
                      Breisgauer
                      schrieb am zuletzt editiert von
                      #13

                      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 ….

                      Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

                      1 Antwort Letzte Antwort
                      0
                      • DutchmanD Offline
                        DutchmanD Offline
                        Dutchman
                        Developer Most Active Administrators
                        schrieb am zuletzt editiert von
                        #14

                        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 Antwort Letzte Antwort
                        0
                        • BreisgauerB Offline
                          BreisgauerB Offline
                          Breisgauer
                          schrieb am zuletzt editiert von
                          #15

                          @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

                          Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

                          1 Antwort Letzte Antwort
                          0
                          • DutchmanD Offline
                            DutchmanD Offline
                            Dutchman
                            Developer Most Active Administrators
                            schrieb am zuletzt editiert von
                            #16

                            Das sind die Material Widgets :-)

                            Sent from my iPhone using Tapatalk

                            1 Antwort Letzte Antwort
                            0
                            • BreisgauerB Offline
                              BreisgauerB Offline
                              Breisgauer
                              schrieb am zuletzt editiert von
                              #17

                              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!

                              Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

                              1 Antwort Letzte Antwort
                              0
                              • paul53P Offline
                                paul53P Offline
                                paul53
                                schrieb am zuletzt editiert von
                                #18

                                @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.

                                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                1 Antwort Letzte Antwort
                                0
                                • DutchmanD Offline
                                  DutchmanD Offline
                                  Dutchman
                                  Developer Most Active Administrators
                                  schrieb am zuletzt editiert von
                                  #19

                                  @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 Antwort Letzte Antwort
                                  0
                                  • BreisgauerB Offline
                                    BreisgauerB Offline
                                    Breisgauer
                                    schrieb am zuletzt editiert von
                                    #20

                                    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?

                                    Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

                                    1 Antwort Letzte Antwort
                                    0
                                    • DutchmanD Offline
                                      DutchmanD Offline
                                      Dutchman
                                      Developer Most Active Administrators
                                      schrieb am zuletzt editiert von
                                      #21

                                      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 Antwort Letzte Antwort
                                      0
                                      • BreisgauerB Offline
                                        BreisgauerB Offline
                                        Breisgauer
                                        schrieb am zuletzt editiert von
                                        #22

                                        @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!

                                        Produktiv: iobroker in Docker; latest stable versions for adapters. ETS 5 (aktuelle Version)

                                        1 Antwort Letzte Antwort
                                        0
                                        • S Offline
                                          S Offline
                                          schrorg
                                          schrieb am zuletzt editiert von schrorg
                                          #23

                                          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 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          872

                                          Online

                                          32.6k

                                          Benutzer

                                          81.9k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe