Ankündigung

Einklappen
Keine Ankündigung bisher.

relative Dimmfunktion über 2 Lichtquellen

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Zitat von Onkelandy Beitrag anzeigen
    Aber in dem Fall hast du's jetzt ja eh gelöst..
    Noch nicht ganz. Ich probiere das Stück für Stück umzusetzen - es funktioniert auch immer mehr. Allerdings kann man nicht immer alles auf einmal testen. Man sieht die Sachen erst im laufenden Betrieb Stück für Stück. Aktuell ist das Problem, dass der Status des schaltens nicht so übermittelt wird, wie ich mir das vorstelle.

    Code:
                    DualWhite:
                        schalten:
                            type: bool
                            knx_dpt: 1
                            knx_send: 5/0/8
                            knx_init: 5/2/8
                            visu_acl: rw
                            Status:
                                type: bool
                                knx_dpt: 1
                                knx_send: 5/2/8
                                enforce_updates: yes
                                eval: or
                                eval_trigger:
                                    - ....WW.schalten
                                    - ....CW.schalten
                            Tastsensor:
                                type: bool
                                knx_dpt: 1
                                knx_cache: 5/5/1
                                enforce_updates: yes
                                on_update:
                                    - ...sperren = False if value and sh....sperren() else None
                                    - ...schalten = value
                                    - ...Dimmwert = min(255, sh....Dimmwert() + 64) if value and sh....Dimmwert() > 0 else None
    Den Tastsensor werte ich aus und setze damit den externen Tastereingang am Präsenzmelder. Dieser sendet dann den Dimmwrt zurück. Das item Status ist die Rückmeldung, ob ein Kanal an ist oder nicht. Dieser sendet dann quasi den Status schalten auf den Bus zurück. Nach meinem Verständnis sollte aber dann auch das item schalten über die Adresse 5/2/8 aktualisiert werden. Das tut sie aber nicht, sprich schalten.Status ist true, aber schalten ist false. Wieso ist das so?

    Kommentar


      #17
      Bin mir noch nicht ganz sicher, ob ich's verstanden habe. Was genau ist die GA 5/2/8? Die Statusrückmeldung des Lichtaktors? Die ist ja nicht schreibbar, sondern gibt dir automatisch den Wert auf den Bus, auf dem sich der Aktor befindet?

      Kommentar


        #18
        Zitat von Onkelandy Beitrag anzeigen
        Bin mir noch nicht ganz sicher, ob ich's verstanden habe. Was genau ist die GA 5/2/8? Die Statusrückmeldung des Lichtaktors? Die ist ja nicht schreibbar, sondern gibt dir automatisch den Wert auf den Bus, auf dem sich der Aktor befindet?
        Ja es ist quasi die Rückmeldung. Allerdings ist ja nur WW und CW mit dem Aktor (DALI-Gateway) verbunden und DualWhite wertet das nur aus und sendet demnach hier an den Bus zurück, wenn einer der beiden an ist.

        Ich habe das jetzt so gut wie gelöst und es funktioniert auch. Allerdings und das hat was mit SmartHomeNG zu tun, weil ich das wohl nicht ganz Bescheid weiß, wird die Statusrückmeldung nicht in einem Item raus gesendet und bei dem anderen empfangen.

        Code:
                        DualWhite:
                            schalten:
                                type: bool
                                knx_dpt: 1
                                knx_send: 5/0/8
                                knx_cache: 5/2/8
                                enforce_updates: yes
                                visu_acl: rw
                                Status:
                                    type: bool
                                    knx_dpt: 1
                                    knx_send: 5/2/8
                                    enforce_updates: yes
                                    eval: or
                                    eval_trigger:
                                        - ....WW.schalten
                                        - ....CW.schalten
                                Tastsensor:
                                    type: bool
                                    knx_dpt: 1
                                    knx_listen: 5/5/1
                                    enforce_updates: yes
                                    on_update:
                                        - ...schalten = True if value and sh....Dimmwert() == 0 else False if not value else None
                                        - ...Dimmwert = min(255, sh....Dimmwert() + 64) if value and sh....Dimmwert() > 0 else None
                            Dimmwert:
                                type: num
                                knx_dpt: 5
                                knx_send: 5/3/8
                                knx_cache: 5/3/8
                                visu_acl: rw
                                alexa_device: DALI_Buero
                                alexa_actions: AdjustBrightness SetBrightness
                                on_change:
                                    - ...WW.Dimmwert = min(value * 2, 255) if sh.EG.Buero.TagNacht() else None
                                    - ...CW.Dimmwert = max(value * 2 - 255, 0) if sh.EG.Buero.TagNacht() else None
                                    - ...CW.Dimmwert = min(value * 2, 255) if not sh.EG.Buero.TagNacht() else None
                                    - ...WW.Dimmwert = max(value * 2 - 255, 0) if not sh.EG.Buero.TagNacht() else None
                            dimmen:
                                type: list
                                knx_dpt: 3
                                knx_listen: 5/1/8
                                on_change:
                                    - .dimmen_auf = sh...Dimmwert()
                                    - .dimmen_ab = sh...Dimmwert()
                                    - .dimmen_auf = sh..dimmen_auf.fade(255, 5, 0.2) if value[0] == 1 and value[1] == 1 else -1 if value[0] == 1 and value[1] == 0 else None
                                    - .dimmen_ab = sh..dimmen_ab.fade(0, 5, 0.2) if value[0] == 0 and value[1] == 1 else -1 if value[0] == 0 and value[1] == 0 else None
                                on_update:
                                    - ..sperren = True if value[0] == 0 and not sh...schalten.Status() else None
                                dimmen_auf:
                                    type: num
                                    on_change: ...Dimmwert = value if value != -1 else max(0, sh....Dimmwert() - 5)
                                dimmen_ab:
                                    type: num
                                    on_change: ...Dimmwert = value if value != -1 else min(255, sh....Dimmwert() + 5)
                            TagNachtWechsel:
                                type: bool
                                eval: value
                                eval_trigger: EG.Buero.TagNacht
                                on_change:
                                    - .backup_ww = sh....WW.Dimmwert()
                                    - .backup_cw = sh....CW.Dimmwert()
                                    - ...WW.Dimmwert = sh....WW.Dimmwert.fade(sh..backup_cw(), 1, 600/abs(sh..backup_cw()-sh..backup_ww())) if sh..backup_cw()-sh..backup_ww() > 0 else None
                                    - ...CW.Dimmwert = sh....CW.Dimmwert.fade(sh..backup_ww(), 1, 600/abs(sh..backup_cw()-sh..backup_ww())) if sh..backup_cw()-sh..backup_ww() > 0 else None
                                backup_ww:
                                    type: num
                                backup_cw:
                                    type: num
                        WW:
                            schalten:
                                type: bool
                                knx_dpt: 1
                                knx_send: 5/0/9
                                knx_cache: 5/2/9
                                enforce_updates: yes
                                visu_acl: rw
                            Dimmwert:
                                type: num
                                knx_dpt: 5
                                knx_send: 5/3/9
                                knx_cache: 5/2/41
                                visu_acl: rw
                        CW:
                            schalten:
                                type: bool
                                knx_dpt: 1
                                knx_send: 5/0/10
                                knx_cache: 5/2/10
                                enforce_updates: yes
                                visu_acl: rw
                            Dimmwert:
                                type: num
                                knx_dpt: 5
                                knx_send: 5/3/10
                                knx_cache: 5/2/42
                                visu_acl: rw
        Als besonderen Bonus führt jedes erneute Drücken des Tastsensor eine Erhöhung der Helligkeit um 25% durch.

        Kommentar


          #19
          Aber sonst funktioniert das mit knx_cache und knx_listen, oder? Kannst ja mal den Monitor der ETS nutzen, um zu checken, was auf dem Bus so passiert. Ansonsten hier mal nen Screenshot der relevanten ETS Teile hier posten. Mit ist nämlich noch nicht klar womit 5/0/8 und 5/2/8 verbunden ist. Musst du den Umweg über KNX hier wirklich machen oder könntest du nicht einfach DualWhite.schalten mittels eval und eval_trigger aktualisieren bzw. gleich durch den Inhalt deines Status-Items ersetzen (mit knx_send 5/0/8)?

          Falls 5/0/8 nur dazu da ist, um die LED beim Tastsensor zu ändern, könntest du vermutlich auch einfach 5/0/9 und 5/0/10 mit deinem Taster-Status verbinden. Bei mir zumindest werden 2 GAs beim Tasterstatus als "oder" ausgewertet und das Lichtchen leuchtet, sobald weiß und/oder kalt an ist.

          Warum genau hast du das on_update nicht so geschrieben?
          Code:
           
           - ...CW.Dimmwert = max(value * 2 - 255, 0) if sh.EG.Buero.TagNacht() else min(value * 2, 255)

          Kommentar


            #20
            Zitat von Onkelandy Beitrag anzeigen
            Aber sonst funktioniert das mit knx_cache und knx_listen, oder?
            Ja das ja. Gruppenmonitor nutze ich sowieso, sonst würde ich das glaueb ich gar nicht schaffen. ;-)

            5/0/8 sendet an den Präsenzmelder auf den externen Taster-Eingang. 5/2/9 bzw. 5/2/10 ist die Rückmeldung vom DALI-Gateway (Status schalten), der ist das was an die LED vom Tastsesor ran geht.

            Zitat von Onkelandy Beitrag anzeigen
            Bei mir zumindest werden 2 GAs beim Tasterstatus als "oder" ausgewertet und das Lichtchen leuchtet, sobald weiß und/oder kalt an ist.
            Ja, weil das bei KNX so ist, dass in der Regel immer der letzte "Impuls" übernommen wird. Das wäre insofern natürlich sinnvoll. Allerdings möchte ich das ja nachher auch in der VISU richtig haben und dafür wäre meines erachtens die Statusrückmeldung des Aktors immer die richtige Lösung. Deshalb liegt der knx_chache auf 5/2/8 (Status DualWhite schalten). Aber genau dieser Status wird zwar auf den Bus gesendet beim ITEM schalten.Status, allerdings beim ITEM schalten wird das nicht zurückgelesen.

            Zitat von Onkelandy Beitrag anzeigen
            - ...CW.Dimmwert = max(value * 2 - 255, 0) if sh.EG.Buero.TagNacht() else min(value * 2, 255)
            Ich denke das war noch vom testen der Übersichtlichkeit halber. Kann ich aber natürlich jetzt kürzen. Den TagNachtWechsel könnte man ja auch kürzen, war mir aber so übersichtlicher. :-)

            Kommentar

            Lädt...
            X