Files
2026-07-08 10:43:39 -04:00

154 lines
6.5 KiB
YAML

blueprint:
name: dimmer_control_4_magic_cube_and_other_things - 2023-12-07
author: SirGoodenough
domain: script
homeassistant:
min_version: 2023.8.0
source_url: https://github.com/SirGoodenough/HA_Blueprints/blob/master/Scripts/dimmer_control_4_magic_cube.yaml
description: "This script was invented to be used with my Magic Cube Blueprints.
I released it as a standalone Script Blueprint because I saw others struggling
with how so convert cube rotation to light dimming in other places.\n\nTo use
this blueprint, install it from the source in the normal way. After that add your
unique name for the Script, and add an icon and change the entity_id if desired.
You should only need to run the blueprint once, as you will be calling the unique
name/entity you added above to use the code. This script has 2 inputs in the Blueprint
screen to set the sensitivity of the rotation action and the minimum bbrightness
level for your lights. If the rotation is too sensitive the lights will change
from dim to bright in too short of a rotation so make it less sensitive. If the
lights flicker at low brightness, raise the minimum brightness level to stop it.
The data is sent to the generated script to control the action live at each use.
You only need to ececute this blueprint generator script if you wish to change
in input values or create another dimmer script.\n\nThis requires you call this
script wth 2 data values. One is a positive or negative number between 360 and
-360 that in the original, represents the input angle from the cube movement.
The other data point is the entity of the light or light group that you are trying
to control.\n***NOTE:*** the trigger variable below will be different for Z2M
and ZHA and others. Look at my documentation for that cube integration help if
you need it.\n\n## \U0001F5FFNotice\U0001F46E\U0001F3FF‍♂️:\n* Copies of the original
Blueprint that were converted via the 'Take Control' feature or other means are
officially not supported by me.\n\n* I may or may not be able to support you when
you have a problem after you make changes to my code, as some of the code is no
longer mine.\n\n* I & my license also require attribution as a link back to the
original should you use this code in your own creation.\n\n* [Here is a link to
my license & the original github post](https://github.com/SirGoodenough/HA_Blueprints?tab=License-1-ov-file)
expected to be followed & referenced as attribution should you use this code elsewhere.\n\n
\ Sample call / use of this script for ZHA:\n ```yaml\n - action: script.cube_dimmer_control_bp\n
\ data:\n angle: '{{ trigger.event.data.args.relative_degrees | default(0.1)
| float(0.2) }}'\n light: light.grp_studio\n ```\n\n Sample call /
use of this script for Z2M:\n ```yaml\n - action: script.cube_dimmer_control_bp\n
\ data:\n angle: '{{ trigger.payload_json.action_angle | default(0.1)
| float(0.2) }}'\n light: light.grp_kitch\n ```\n"
input:
sensi:
name: Sensitivity of the cube rotational motion.
description: 'This sets how ''fast'' the changes happen compared to how far
you move the cube. Higher percentage is faster, lower is slower.
I have found that 40% is a good number, but you can adjust as desired.
'
default: 40
selector:
number:
min: 1.0
max: 200.0
step: 1.0
mode: box
min_b:
name: Minimum Brighness
description: 'This sets the lowest brightness it will set before it turns off.
Some bulbs react poorly below a certain percent, you can adjust that here.
I have found that 10% is a good number, but you can adjust as desired.
'
default: 10
selector:
number:
min: 5.0
max: 90.0
step: 1.0
mode: slider
transition_i:
name: Transition Input
description: Seconds to take to change light one level to another
default: []
selector:
number:
min: 0.0
max: 1800.0
step: 0.5
mode: slider
fields:
angle:
name: Angle to represent new brightness
description: ' This is the new angle to be used in the calculation for Brightness'
required: true
example: '-120.7'
default: -120.7
selector:
number:
min: -360
max: 360
step: 0.1
mode: box
light:
name: Light entity to control
description: Add the light entity you want to control here
required: true
example: light.grp_studio
default: light.grp_studio
selector:
entity:
multiple: false
filter:
domain: light
transition:
name: Transition Field
description: Seconds to take to change light one level to another
required: false
example: '4'
selector:
number:
min: 0
max: 1800
step: 0.5
variables:
sensi_var: !input sensi
sens_d: '{{ sensi_var / 100 | default( 0.4 ) }}'
min_b_var: !input min_b
bright_p: "{% set step_size = angle * sens_d %}\n {# Get brightness as a percent.
#}\n{% set cb = (state_attr( light, 'brightness') | float(10) / 255.0) * 100.0
%} {% set new_brightness = cb | int(10) + step_size %} {% if new_brightness <
5 %}\n {# If it gets really low set to 0. Adjust if needed for your lights. #}\n
\ 0\n{% elif new_brightness <= min_b_var %}\n {# If it's not quite 0, set to
a minimum working brightness. #}\n {{ min_b_var }}\n{% elif 91 <= new_brightness
< (90 + step_size) %}\n {# If it's almost full brightness, set to 100%. #}\n
\ 100\n{% else %}\n {# Send actual calculated value. #}\n{{ new_brightness }}
{% endif %}"
trans_i: !input transition_i
transition_var: "{% if is_number(transition | default('none')) %}\n {{ transition
}}\n{% elif is_number(trans_i | default('none')) %}\n {{ trans_i }}\n{% else
%}\n none\n{% endif %}"
sequence:
- if:
- alias: turn the light & set brightness
condition: template
value_template: '{{ is_number(transition_var) }}'
then:
- alias: Transition number IS available
action: light.turn_on
data:
entity_id: '{{ light }}'
brightness_pct: '{{ bright_p }}'
transition: '{{ transition_var }}'
else:
- alias: NO transition number available
action: light.turn_on
data:
entity_id: '{{ light }}'
brightness_pct: '{{ bright_p }}'
icon: mdi:lightbulb-on-50
mode: queued
max: 10