Last active
December 16, 2024 13:56
-
-
Save farmio/bc23cc2a1a81408751947309408ff164 to your computer and use it in GitHub Desktop.
KNX - relative dimming for lights blueprint
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
blueprint: | |
name: KNX - relative dimming for lights | |
description: Control Home Assistant light entities from KNX switching and relative dimming (DPT 3.007) telegrams. | |
homeassistant: | |
# `knx.telegram` trigger and `enabled` templates require Home Assistant 2024.6.0 | |
min_version: "2024.6.0" | |
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' | |
default: null | |
dimm_address: | |
name: Relative dimming address | |
description: > | |
Group address for dimming the lights. DPT 3.007 | |
Example: '1/2/4' | |
default: null | |
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_variables: | |
_switch_address: !input switch_address | |
_dimm_address: !input dimm_address | |
trigger: | |
- platform: knx.telegram | |
destination: !input switch_address | |
group_value_read: false | |
group_value_response: false | |
id: "switch" | |
enabled: "{{ _switch_address != None }}" | |
- platform: knx.telegram | |
destination: !input dimm_address | |
group_value_read: false | |
group_value_response: false | |
id: "dimm" | |
enabled: "{{ _dimm_address != None }}" | |
action: | |
- choose: | |
# TURN ON | |
- conditions: | |
condition: and | |
conditions: | |
- condition: trigger | |
id: "switch" | |
- "{{ trigger.payload == 1 }}" | |
sequence: | |
- service: light.turn_on | |
target: !input target_lights | |
# TURN OFF | |
- conditions: | |
condition: and | |
conditions: | |
- condition: trigger | |
id: "switch" | |
- "{{ trigger.payload == 0 }}" | |
sequence: | |
- service: light.turn_off | |
target: !input target_lights | |
# DIMM UP | |
- conditions: | |
condition: and | |
conditions: | |
- condition: trigger | |
id: "dimm" | |
- "{{ 9 <= trigger.payload <= 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.payload <= 7 }}" | |
sequence: | |
- repeat: | |
count: '{{ dimm_steps }}' | |
sequence: | |
- service: light.turn_on | |
target: !input target_lights | |
data: | |
brightness_step: '{{ -dimm_step }}' | |
- delay: | |
milliseconds: '{{ dimm_delay }}' |
@CyberChris79 Hi 👋! IMO turn on value should be handled by the actuator - most provide configurations for that.
The intention of this blueprint is to provide a reference for the usage of Knx actions and triggers - for other blueprint creators. So I don't plan to add any features to it.
Feel free to fork it and modify to your needs.
Or have a look for existing forks - maybe the thing you are looking was already done by someone else.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi,
thank you for this blueprint code.
It works great for me. I am using an MDT KNX Wall Switch with an HUE ceiling light.
I could set those paramters for my claims.
Is it possible to add one more slider for an inital value?
Right now i switch on and off on a plus and a minus button with a short tap and same with dimming the light, but with long taps.
I would like to switch on the light everytime to 100% by Default. Right now it turns on by default with the last value
Cheers
Christian