Skip to content

Instantly share code, notes, and snippets.

@farmio
Last active April 3, 2024 18:51
Show Gist options
  • Star 14 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save farmio/bc23cc2a1a81408751947309408ff164 to your computer and use it in GitHub Desktop.
Save farmio/bc23cc2a1a81408751947309408ff164 to your computer and use it in GitHub Desktop.
KNX - relative dimming for lights blueprint
blueprint:
name: KNX - relative dimming for lights
description: Controll Home Assistant Light entities from KNX switching and relative dimming (DPT 3.007) telegrams.
domain: automation
input:
target_lights:
name: Light
description: The lights that shall be controled.
selector:
target:
entity:
domain: light
switch_address:
name: Switch group address
description: >
Group address for switching the lights on and off. DPT 1
Example: '1/2/3'
dimm_address:
name: Relative dimming address
description: >
Group address for dimming the lights. DPT 3.007
Example: '1/2/4'
dimm_time:
name: Dimm time
description: Time dimming from 0 to 100% shall take.
selector:
number:
min: 1
max: 20
step: 0.1
unit_of_measurement: seconds
mode: slider
default: 4
dimm_steps:
name: Dimm steps
description: Steps used to dimm from 0 to 100%.
selector:
number:
min: 2
max: 100
step: 1
unit_of_measurement: steps
mode: slider
default: 20
# no matched condition stops repeat sequence to stop dimming (dimm 0)
mode: restart
max_exceeded: silent
variables:
_dimm_time: !input dimm_time
_dimm_steps: !input dimm_steps
dimm_time: "{{ _dimm_time|float }}"
dimm_steps: "{{ _dimm_steps|int }}"
dimm_step: "{{ (255 / dimm_steps) | round(0, 'ceil') }}"
dimm_delay: "{{ dimm_time * 1000 / dimm_steps }}"
trigger:
- platform: homeassistant
event: start
id: "initialize"
- platform: event
event_type: automation_reloaded
id: "initialize"
# when KNX integration was reloaded
- platform: event
event_type: service_registered
event_data:
domain: knx
service: event_register
id: "initialize"
- platform: event
event_type: knx_event
event_data:
destination: !input switch_address
telegramtype: GroupValueWrite
id: "switch"
- platform: event
event_type: knx_event
event_data:
destination: !input dimm_address
telegramtype: GroupValueWrite
id: "dimm"
action:
- choose:
# TURN ON
- conditions:
condition: and
conditions:
- condition: trigger
id: "switch"
- "{{ trigger.event.data.data == 1 }}"
sequence:
- service: light.turn_on
target: !input target_lights
# TURN OFF
- conditions:
condition: and
conditions:
- condition: trigger
id: "switch"
- "{{ trigger.event.data.data == 0 }}"
sequence:
- service: light.turn_off
target: !input target_lights
# DIMM UP
- conditions:
condition: and
conditions:
- condition: trigger
id: "dimm"
- "{{ 9 <= trigger.event.data.data <= 15 }}"
sequence:
- repeat:
count: '{{ dimm_steps }}'
sequence:
- service: light.turn_on
target: !input target_lights
data:
brightness_step: '{{ dimm_step }}'
- delay:
milliseconds: '{{ dimm_delay }}'
# DIMM DOWN
- conditions:
condition: and
conditions:
- condition: trigger
id: "dimm"
- "{{ 1 <= trigger.event.data.data <= 7 }}"
sequence:
- repeat:
count: '{{ dimm_steps }}'
sequence:
- service: light.turn_on
target: !input target_lights
data:
brightness_step: '{{ -dimm_step }}'
- delay:
milliseconds: '{{ dimm_delay }}'
# INITIALIZE
- conditions:
condition: trigger
id: "initialize"
sequence:
- service: knx.event_register
data:
address: !input switch_address
- service: knx.event_register
data:
address: !input dimm_address
@farmio
Copy link
Author

farmio commented Jan 5, 2022

@kruzgix Hi 👋!
Areas should work properly now.
The blueprint also keeps working when the KNX integration was reloaded.

@Reteip10
Copy link

Hi, it works well, but how does it work with the state adress?
I don't get that.
Or do you need to expose it seperatly?
Thanks in advance.

@farmio
Copy link
Author

farmio commented Apr 10, 2023

@Reteip10 right, use expose. This blueprint only has one-way communication.
Or fork the blueprint and add it 😉

@DanielWeeber
Copy link

What about controlling color_temp for tunable white bulbs? Did you happen to implement it before?

@farmio
Copy link
Author

farmio commented Oct 8, 2023

I guess it would work the same way as brightness - so you may just fork it and add the options you need for your installation.

@DanielWeeber
Copy link

hm, but color_temp only accepts mirads as input, not steps. I think we need to convert it somehow.

@farmio
Copy link
Author

farmio commented Oct 8, 2023

Depends on the actuator, I guess. The ones I know support DPT 3 color temp dimming, just like brightness.
And HA supports Kelvin too, so no need to deal with Mireds afaic.

@DanielWeeber
Copy link

Yeah, kelvin should be fine for Phillips Finance white

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment