Ankündigung

Einklappen
Keine Ankündigung bisher.

[Logik Baustein] Relatives Dimmen

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

    [Logik Baustein] Relatives Dimmen

    Hallo,

    ich habe sh.py das relative Dimmen beigebracht:

    Code:
    RelativDimmen:
        filename: relativdimmen.py
        min_to_max_duration: 2.5  # in 2.5s wird von min bis max gedimmt
        step: 2.5
        watch_item:
            - eg.StripeOben.R.RelativDimmen

    Items sind:
    Code:
    - eg.StripeOben.R
    - eg.StripeOben.R.RelativDimmen

    Die Logik:
    Code:
    #!/usr/bin/env python3
    # relativdimmen.py
    # Watch the DPT3.007 item (list)
    
    #from lib.item import Items
    #items = Items.get_instance()
    
    logger.warning('[Relativ Dimmen] Start')
    
    min=0
    max=100
    
    input_val =  trigger['value']
    try:
        input_item=  items.return_item(trigger['source'])
        target_item= input_item.return_parent()
        start      =  input_val[1]
        increase   =  input_val[0]  
    except:
        logger.error("This logic must be triggered by an Item of type list with DPT3.007")
    
    
    min_to_max_duration =  2.5  #  logic.min_to_max_duration
    step                =  2.5   #  logic.step
    
    time_delta=  min_to_max_duration / ( (max-min)/step  ) # e.g. 2s / ((100-0)/ 1)  = 0.02
    
    
    logger.warning('[Relativ Dimmen] Start {} Increase {}'.format(start,increase))
    
    if start:
        if increase:
            target_item.fade(max, step, time_delta)
            logger.warning('[Relativ Dimmen] To {} Step {}, TimeDelta {}'.format(max, step, time_delta))
        else: # decrease
            target_item.fade(min, step, time_delta)
            logger.warning('[Relativ Dimmen] To {} Step {}, TimeDelta {}'.format(min, step, time_delta))
    else:
        logger.info('[Relativ Dimmen] Stoppe Fading')
        target_item._fading=False
    Gruß,
    Hendrik
    Zuletzt geändert von bmx; 09.01.2021, 14:49.

    #2
    Geht das nicht direkt mit der Funktion fade eines Items? Also so:

    Code:
            # value[0]: 0 = ab, 1 = auf
            # value[1]: 0 = Stopp, 1 = bewegen
            dimmen:
                type: list
                knx_dpt: 3
                enforce_updates: yes
                on_update:
                    - .fader = sh...Dimmwert()
                    - .fader = sh..fader.fade(value[0] * 255, 5, 0.2) if value[1] == 1 else -1
                fader:
                    type: num
                    on_change: ...Dimmwert = value if value != -1 else None

    Kommentar


      #3
      Hallo Cannon,

      wahrscheinlich schon. Aber ich stehe mit der eval-Syntax auf Kriegsfuß - mir fällt es sogar schwer dein Beispiel nachzuvollziehen.

      Gruß,
      Hendrik

      Kommentar


        #4
        Zitat von henfri Beitrag anzeigen
        wahrscheinlich schon. Aber ich stehe mit der eval-Syntax auf Kriegsfuß - mir fällt es sogar schwer dein Beispiel nachzuvollziehen.
        Ich dachte eigentich ich hätte da was übersehen. ;-)

        Das Dimmen bezieht sich hier auf den Druck auf einen Tastsensor. Sprich vom KNX kommt der Dimmbefehl. Im Item dimmen wird der Wert eines anderes Items (der Dimmwert) in das Item fader geschrieben. Das Item fader wird dann entweder auf 0 oder 255 gedimmt mit Schrittweite 5 und einem Zeitdelte von 0.2 Sekunden. Sobald der Taster losgelassen wird, stoppt der Dimmbefehl. Das item fader wird auf -1 gesetzt und das dimmen ist beendet.

        Kommentar


          #5
          Zitat von henfri Beitrag anzeigen
          Aber ich stehe mit der eval-Syntax auf Kriegsfu
          Damit sagst Du, dass Du mit Python Syntax auf dem Kriegsfuss stehst?
          Viele Grüße
          Martin

          There is no cloud. It's only someone else's computer.

          Kommentar


            #6
            Zitat von Cannon Beitrag anzeigen

            Ich dachte eigentich ich hätte da was übersehen. ;-)
            Nee, ich glaube nicht. Klingt plausibel.

            Aber ich stehe mit der eval-Syntax auf Kriegsfu
            Damit sagst Du, dass Du mit Python Syntax auf dem Kriegsfuss stehst?
            Nein, nur mit einem Teil derer - wie ich schrieb.

            Kommentar

            Lädt...
            X