Ankündigung

Einklappen
Keine Ankündigung bisher.

relative Dimmfunktion über 2 Lichtquellen

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

    relative Dimmfunktion über 2 Lichtquellen

    Ich habe hier ein DualWhite-LED-Stripe. Denn möchte ich mittels Tastsensor so dimmen, dass wenn einer der beiden 100% erreicht hat, der andere auch gedimmt wird. Das Problem ist hier die relative Dimmfunktion. Denn gesendet wird auf dem Bus ja nur ein Start und ein Stopp der Dimmfunktion. Das Problem mit der relativen Dimmfunktion ist aber, dass ich aber nicht weiß wann 100% erreicht sind, während ich den Tastsensor noch drücke.

    Ist das Problem überhaupt lösbar?

    Der LED-Stripe ist per DALI angebunden. Hat aber eben pro Kanal eine Lichfarbe. Ich kann die da nicht gruppieren,

    #2
    Ich vermute, Du sprichst von KNX Aktoren?

    Wenn Du über das setzen von absoluten Werten dimmst, bekommst Du ja die Rückmeldung über das Status Objekt des Aktors.

    Diesen Status (absoluten Wert) müsstest Du auch erhalten, wenn Du relativ dimmst. Wenn Du diesen Status auf ein Item einliest siehst Du wann 100% erreicht sind.
    Viele Grüße
    Martin

    Kommentar


      #3
      Zitat von Msinn Beitrag anzeigen
      Ich vermute, Du sprichst von KNX Aktoren?

      Wenn Du über das setzen von absoluten Werten dimmst, bekommst Du ja die Rückmeldung über das Status Objekt des Aktors.

      Diesen Status (absoluten Wert) müsstest Du auch erhalten, wenn Du relativ dimmst. Wenn Du diesen Status auf ein Item einliest siehst Du wann 100% erreicht sind.
      Ja ich rede über KNX. Das war für mich in einem KNX-Forum wohl vorausgesetzt. Aber mit SmartHomeNG geht ja so ziemlich alles. ;-)

      Ja ich kann das Statusobjekt des Aktors abfragen, das habe ich jetzt auch mal gemacht. Allerdings wird das nur gesendet, wenn der relative Dimmvorgang beendet wird. Anders wäre es sicherlich auch nicht optimal, wenn der dann im schlimmsten Fall 255 mal eine Gruppenadresse auf den Bus sendet, wegen des Dimmvorgangs.

      Genau aus diesem Grund erfahre ich dort keine Rückmeldung. Die Frage ist, ob es eine Idee als Plan B gibt. Also wie gesagt Kanal 1 des Aktors hat 100% erreicht und dann soll Kanal 2 hochgedimmt werden. Es wäre für mich auch okay den gesamten Vorgang in SmartHomeNG abzubilden, was ich aus anderen Gründen mit dem LED-Stripe ohnehin schon gemacht habe.

      Kommentar


        #4
        Dann sehe ich nur die Möglichkeit die Dimmer mit absolutem dimmen anzusteuern und zu schauen wie Du das relative Dimmen in SmartHomeNG nachbaust.

        ich hatte das mal gemacht, weil ich eine Hue Leuchte mit einem KNX Taster dimmen wollte, Ich erinner mich nicht mehr zu 100% wie ich das gebacht hatte, erinnere aber dass Du ander Attribute auf dem Dimmitem nutzen must. Statt knx_send musst Du knx_reply oder knx_status nehmen, weil das was SmartHomeNG in Richtung Bus ausgibt ein Antwort Telegramm ist.
        Viele Grüße
        Martin

        Kommentar


          #5
          Zitat von Msinn Beitrag anzeigen
          Dann sehe ich nur die Möglichkeit die Dimmer mit absolutem dimmen anzusteuern und zu schauen wie Du das relative Dimmen in SmartHomeNG nachbaust.
          Das habe ich auch schon befüchtet.... :-( Das ist gar nicht so einfach, wenn man 255 Schritte in 10 Sekunden packen will ...

          Zitat von Msinn Beitrag anzeigen
          ich hatte das mal gemacht, weil ich eine Hue Leuchte mit einem KNX Taster dimmen wollte, Ich erinner mich nicht mehr zu 100% wie ich das gebacht hatte, erinnere aber dass Du ander Attribute auf dem Dimmitem nutzen must. Statt knx_send musst Du knx_reply oder knx_status nehmen, weil das was SmartHomeNG in Richtung Bus ausgibt ein Antwort Telegramm ist.
          Das kann ich nicht ganz nachvollziehen, im Gruppen-Monitor ist das immer ein GroupValueWrite .... aber bis dahin ist ja auch noch ein langer Weg ...

          Kommentar


            #6
            Du musst bestimmt nicht durch alle 255 Schritte. Die Unterschiede eines Schritts sind so klein, dass häufig nicht wahrnehmbar. -> 25 Helligkeitsänderungen je Sekunde!

            Bei diversen KNX Dimmern kann man auch einstellen, dass nicht von einem Level zum anderen "als Stufe" gedimmt wird, sondern dass der Dimmer das gleichmäßig über einen gewissen Zeitraum macht.

            Zitat von Cannon Beitrag anzeigen
            Das kann ich nicht ganz nachvollziehen
            Nicht nachvollziehen, einfach glauben
            Viele Grüße
            Martin

            Kommentar


              #7
              Wenn es über SmartHomeNG gehen darf, dann könntest Du auch mit 2 Tastern vom KNX aus ein Higher/Lower/Stop realisieren und SmartHomeNG eine Logik verpassen, die die Fade-Eigenschaft eines Items nutzt.
              Vielleicht kann man das einigermaßen elegant über eine Statemachine lösen. Du kannst ja auch ein Hilfitem von z.B. 0 bis 512 faden und das dann aufteilen auf zwei Dimmer.

              Kommentar


                #8
                Zitat von bmx Beitrag anzeigen
                Wenn es über SmartHomeNG gehen darf, dann könntest Du auch mit 2 Tastern vom KNX aus ein Higher/Lower/Stop realisieren und SmartHomeNG eine Logik verpassen, die die Fade-Eigenschaft eines Items nutzt.
                Vielleicht kann man das einigermaßen elegant über eine Statemachine lösen. Du kannst ja auch ein Hilfitem von z.B. 0 bis 512 faden und das dann aufteilen auf zwei Dimmer.
                Ich finde den Ansatz sehr interessant. Ich werde damit mal probieren. :-)

                Kommentar


                  #9
                  Hi,

                  ist nicht direkt für Deinen Fall, aber so werte ich relatives Dimmen mit shNG aus, vielleicht kannst Du das für Dich anpassen:

                  Code:
                  #!/usr/bin/env python
                  #
                  # implementiert eine Dimm-Logik, die auf relative KNX-Dimm-Befehle regaiert
                  # Das Parentiten muss vom Typ num sein und wird von 0-100 gedimmt
                  logger.info("relativDimmen")
                  #print(trigger)
                  # logik nur, wenn von Item getriggert
                  if trigger['by'] == 'Item':
                      lItem = sh.return_item(trigger['source'])
                      lParent = lItem.return_parent()
                      while lItem() == 9:
                          lNext = lParent()+10.0 if lParent()< 100.0 else 100.0
                          logger.info("relativDimmen: Next value {0}".format(lNext))
                          lParent(lNext)
                          if lNext == 100.0:
                              lItem(0)
                          time.sleep(0.5)
                      while lItem() == 1:
                          lNext = lParent()-10.0 if lParent()> 0.0 else 0.0
                          logger.info("relativDimmen: Next value {0}".format(lNext))
                          lParent(lNext)
                          if lNext == 0:
                              lItem(0)
                          time.sleep(0.5)
                  Gruß, Waldemar

                  Kommentar


                    #10
                    @mumf: Danke ... noch probiere ich das mit den Items. Wenn das fehlschlägt auf einem anderen Weg. :-)

                    Ich bin jetzt auch schon ein Stückchen weiter. Das dimmen an sich geht nämlich schon mal.
                    Code:
                                        dimmen:
                                            type: list
                                            knx_dpt: 3
                                            knx_listen: 5/1/8
                                            on_update:
                                                - ..Dimmwert = sh...Dimmwert.fade(255, 5, 0.5) if value[0] == 1 and value[1] == 1 else sh...Dimmwert() if value[0] == 1 and value[1] == 0 else None
                                                - ..Dimmwert = sh...Dimmwert.fade(0, 5, 0.5) if value[0] == 0 and value[1] == 1 else sh...Dimmwert() if value[0] == 0 and value[1] == 0 else None
                    Einziger Knackpunkt. Ich kriefe den "fader" nicht mehr angehalten. Ich ging davon aus, dass ich mit der expliziten Wertzuweisung ohne "fader" diesen stoppen kann. Das geht aber anscheinend nicht. Geht das irgendwie anders?

                    Kommentar


                      #11
                      Der direkte Wert muss anders sein als der aktuelle. Also zb wert-1

                      Kommentar


                        #12
                        Zitat von Onkelandy Beitrag anzeigen
                        Der direkte Wert muss anders sein als der aktuelle. Also zb wert-1
                        Das funktioniert leider auch nicht. Ich befürchte die "fade"-Funktion funktioniert anders als erwartet. Denn ich würde erwarten, dass

                        Code:
                         
                         on_update:     - ..dimmmentest = sh...Dimmwert.fade(255, 5, 0.5) ...
                        den "dimmentest" ändert. Das macht es aber nicht. Es spiel keine Rolle auf welchen Item ich den Wert ansetze. Nach dem Beispiel hier wird die Dimmung immer auf "Dimmwert" ausgeführt. Das gleiche auch bei eval. In einer eval-Anweisung wird auch dort nicht das Ergebnis als fade ausgeführt, sondern immer auf dem aufgerufenen item.

                        Kommentar


                          #13
                          Du musst das Item direkt auf einen Wert setzen, also am besten value-1. Erst danach kannst du wieder faden. Ein Fade ersetzt den vorigen Fade meines Wissens nach nicht. Er muss gestoppt werden, dann ein neuer Fade.

                          So nebenbei, ich weiß zwar nicht ganz exakt, was du machen willst, aber die Interpolationsfunktion beim uzsu Plugin könnte dir bei deinem Vorhaben vielleicht auch helfen..? https://www.smarthomeng.de/using-the...-light-control

                          Kommentar


                            #14
                            Zitat von Onkelandy Beitrag anzeigen
                            Du musst das Item direkt auf einen Wert setzen, also am besten value-1. Erst danach kannst du wieder faden. Ein Fade ersetzt den vorigen Fade meines Wissens nach nicht. Er muss gestoppt werden, dann ein neuer Fade.

                            So nebenbei, ich weiß zwar nicht ganz exakt, was du machen willst, aber die Interpolationsfunktion beim uzsu Plugin könnte dir bei deinem Vorhaben vielleicht auch helfen..? https://www.smarthomeng.de/using-the...-light-control
                            Ich habe einen DualWhite LED-Stripe und den möchte ich so dimmen, dass ich beide Farben einbeziehe. Das Problem ist ich will auch relativ dimmen und das eben über 2 Ebenen ... es funktioniert jetzt auch soweit, bis auf die Latenzzeit, die ich noch anpassen muss, denn der stoppt nicht wirklich gleich beim loslassen der Taste.

                            Code:
                                                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
                                                    dimmen_auf:
                                                        type: num
                                                        on_change: ...Dimmwert = value if value != -1 else None
                                                    dimmen_ab:
                                                        type: num
                                                        on_change: ...Dimmwert = value if value != -1 else None
                            Im Rahmen des Dimmwertes werde ich dann die 255 auf die beiden Farben aufteilen ... :-)

                            Das UZSU schaue ich mir noch mal detaillierter an. Weiß aber nicht, ob das zumindest für die schnelle Dimmfunktion die richitge Lösung wäre.
                            Zuletzt geändert von Cannon; 03.02.2019, 12:08.

                            Kommentar


                              #15
                              Alles klar. Ne, für Dimmen per Tastendruck bringt die uzsu nix. Aber in dem Fall hast du's jetzt ja eh gelöst..

                              Kommentar

                              Lädt...
                              X