Add BMB rotary knob files
This commit is contained in:
parent
9c81d33af6
commit
499005c498
|
@ -0,0 +1,101 @@
|
||||||
|
alias: "!Background - Kitchen Brightness + Max/100 Setting"
|
||||||
|
description: ""
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_number.kitchen_rgb_brightness
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
alias: When Helper, Kitchen RGB Brightness value has changed
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_boolean.kitchen_rgb_toggle
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
alias: When Kitchen RGB Toggle has changed
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_boolean.toggle_kitchen_rgb_100
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_boolean.toggle_kitchen_rgb_top
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_boolean.toggle_kitchen_rgb_bottom
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
condition: []
|
||||||
|
action:
|
||||||
|
- delay:
|
||||||
|
hours: 0
|
||||||
|
minutes: 0
|
||||||
|
seconds: 0
|
||||||
|
milliseconds: 600
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_100
|
||||||
|
state: "off"
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.kitchen_rgb_toggle
|
||||||
|
state: "on"
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_top
|
||||||
|
state: "on"
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
brightness: "{{ states('input_number.kitchen_rgb_brightness') }}"
|
||||||
|
target:
|
||||||
|
entity_id: light.kitchen_rgb_top_light
|
||||||
|
alias: Call Service - Read Helper value, change top RGB light value
|
||||||
|
alias: IF Top Toggle ON, read Helper value, change light value
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_bottom
|
||||||
|
state: "on"
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
brightness: "{{ states('input_number.kitchen_rgb_brightness') }}"
|
||||||
|
target:
|
||||||
|
entity_id: light.kitchen_rgb_bottom_light
|
||||||
|
alias: >-
|
||||||
|
Call Service - Read Helper value, change bottom RGB light
|
||||||
|
value
|
||||||
|
alias: IF Bottom Toggle ON, read Helper value, change light value
|
||||||
|
alias: >-
|
||||||
|
IF RGB Toggle is ON, read brightness value, check TOP/BOT toggle,
|
||||||
|
change light values
|
||||||
|
else:
|
||||||
|
- service: light.turn_off
|
||||||
|
data:
|
||||||
|
transition: 3
|
||||||
|
target:
|
||||||
|
entity_id:
|
||||||
|
- light.kitchen_rgb_top_light
|
||||||
|
- light.kitchen_rgb_bottom_light
|
||||||
|
alias: Make sure Max/100 Toggle is OFF
|
||||||
|
else:
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_100
|
||||||
|
state: "on"
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
transition: 2
|
||||||
|
kelvin: 6500
|
||||||
|
brightness: 255
|
||||||
|
target:
|
||||||
|
entity_id:
|
||||||
|
- light.kitchen_rgb_top_light
|
||||||
|
- light.kitchen_rgb_bottom_light
|
||||||
|
mode: single
|
|
@ -0,0 +1,226 @@
|
||||||
|
type: vertical-stack
|
||||||
|
cards:
|
||||||
|
- type: horizontal-stack
|
||||||
|
cards:
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
layout: vertical
|
||||||
|
icon: phu:magentatv
|
||||||
|
icon_color: |
|
||||||
|
{% if states('input_number.kitchen_rgb_mode') | int == 0 %}
|
||||||
|
0, 0 ,0 , 1
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 1 %}
|
||||||
|
{{ states('input_text.kitchen_kelvin_to_rgb') }}
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 2 %}
|
||||||
|
{{ states('input_text.kitchen_kelvin_to_rgb') }}
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 3 %}
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value') }}
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 4 %}
|
||||||
|
{{ states('input_number.kitchen_rgb_brightness') | int }}, {{ states('input_number.kitchen_rgb_brightness') | int }}, {{ states('input_number.kitchen_rgb_brightness') | int }}, 1
|
||||||
|
{% else %}
|
||||||
|
255,0,0,1
|
||||||
|
{% endif %}
|
||||||
|
fill_container: true
|
||||||
|
primary: Mode
|
||||||
|
tap_action:
|
||||||
|
action: none
|
||||||
|
badge_icon: ''
|
||||||
|
multiline_secondary: true
|
||||||
|
secondary: |
|
||||||
|
{% if states('input_number.kitchen_rgb_mode') | int == 0 %}
|
||||||
|
0 (OFF)
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 1 %}
|
||||||
|
1 (Kelvin)
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 2 %}
|
||||||
|
3 (Kelvin Brightness)
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 3 %}
|
||||||
|
3 (RGB)
|
||||||
|
{% elif states('input_number.kitchen_rgb_mode') | int == 4 %}
|
||||||
|
4 (RGB Brightness)
|
||||||
|
{% else %}
|
||||||
|
error
|
||||||
|
{% endif %}
|
||||||
|
hold_action:
|
||||||
|
action: none
|
||||||
|
double_tap_action:
|
||||||
|
action: none
|
||||||
|
card_mod:
|
||||||
|
style:
|
||||||
|
mushroom-shape-icon$: |
|
||||||
|
.shape {
|
||||||
|
|
||||||
|
--shape-animation: spin 20s linear infinite;
|
||||||
|
--shape-color: rgba(0,0,0,.07);
|
||||||
|
--icon-symbol-size: 90px;
|
||||||
|
--icon-size: 89px;
|
||||||
|
background: none
|
||||||
|
-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 50px), #000 0);
|
||||||
|
}
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
layout: vertical
|
||||||
|
icon: phu:magentatv
|
||||||
|
icon_color: '{{ states(''input_text.kitchen_kelvin_to_rgb'')}}'
|
||||||
|
fill_container: true
|
||||||
|
primary: '{{ states("input_number.kitchen_rgb_temperature")}}'
|
||||||
|
tap_action:
|
||||||
|
action: none
|
||||||
|
badge_icon: ''
|
||||||
|
multiline_secondary: true
|
||||||
|
secondary: Kelvin
|
||||||
|
hold_action:
|
||||||
|
action: none
|
||||||
|
double_tap_action:
|
||||||
|
action: none
|
||||||
|
card_mod:
|
||||||
|
style:
|
||||||
|
mushroom-shape-icon$: |
|
||||||
|
.shape {
|
||||||
|
|
||||||
|
--shape-animation: spin 20s linear infinite;
|
||||||
|
--shape-color: rgba(0,0,0,.07);
|
||||||
|
--icon-symbol-size: 90px;
|
||||||
|
--icon-size: 89px;
|
||||||
|
background: none
|
||||||
|
-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 50px), #000 0);
|
||||||
|
}
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
layout: vertical
|
||||||
|
icon: phu:magentatv
|
||||||
|
icon_color: '{{ states(''input_text.kitchen_rgb_color_value'')}}'
|
||||||
|
fill_container: true
|
||||||
|
primary: '{{ states(''input_text.kitchen_rgb_color_value'')}}'
|
||||||
|
tap_action:
|
||||||
|
action: none
|
||||||
|
badge_icon: ''
|
||||||
|
multiline_secondary: true
|
||||||
|
secondary: RGB ({{ states('input_number.kitchen_rgb_track') | float | int }})
|
||||||
|
hold_action:
|
||||||
|
action: none
|
||||||
|
double_tap_action:
|
||||||
|
action: none
|
||||||
|
card_mod:
|
||||||
|
style:
|
||||||
|
mushroom-shape-icon$: |
|
||||||
|
.shape {
|
||||||
|
|
||||||
|
--shape-animation: spin 20s linear infinite;
|
||||||
|
--shape-color: rgba(0,0,0,.07);
|
||||||
|
--icon-symbol-size: 90px;
|
||||||
|
--icon-size: 89px;
|
||||||
|
background: none;
|
||||||
|
-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 50px), #000 0);
|
||||||
|
}
|
||||||
|
- type: custom:mushroom-template-card
|
||||||
|
layout: vertical
|
||||||
|
icon: phu:magentatv
|
||||||
|
icon_color: >
|
||||||
|
{{ states('input_number.kitchen_rgb_brightness') | int }}, {{
|
||||||
|
states('input_number.kitchen_rgb_brightness') | int }}, {{
|
||||||
|
states('input_number.kitchen_rgb_brightness') | int }}
|
||||||
|
fill_container: true
|
||||||
|
primary: >-
|
||||||
|
{{ (states("input_number.kitchen_rgb_brightness") | int / 255 * 100) |
|
||||||
|
round(0) }}%
|
||||||
|
tap_action:
|
||||||
|
action: none
|
||||||
|
badge_icon: ''
|
||||||
|
multiline_secondary: true
|
||||||
|
secondary: >-
|
||||||
|
Brightness ({{ states('input_number.kitchen_rgb_brightness') | float |
|
||||||
|
int }})
|
||||||
|
hold_action:
|
||||||
|
action: none
|
||||||
|
double_tap_action:
|
||||||
|
action: none
|
||||||
|
card_mod:
|
||||||
|
style:
|
||||||
|
mushroom-shape-icon$: |
|
||||||
|
.shape {
|
||||||
|
|
||||||
|
--shape-animation: spin 20s linear infinite;
|
||||||
|
--shape-color: rgba(0,0,0,.07);
|
||||||
|
--icon-symbol-size: 90px;
|
||||||
|
--icon-size: 89px;
|
||||||
|
background: none
|
||||||
|
-webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 50px), #000 0);
|
||||||
|
}
|
||||||
|
- type: custom:my-slider-v2
|
||||||
|
entity: input_number.kitchen_rgb_temperature
|
||||||
|
styles:
|
||||||
|
card:
|
||||||
|
- height: 50px
|
||||||
|
container:
|
||||||
|
- width: 100%
|
||||||
|
- height: 100%
|
||||||
|
- position: relative
|
||||||
|
- overflow: hidden
|
||||||
|
- border-radius: 0px
|
||||||
|
track:
|
||||||
|
- width: 100%
|
||||||
|
- height: 100%
|
||||||
|
- position: relative
|
||||||
|
- background: rgba(235,167,5,.7)
|
||||||
|
progress:
|
||||||
|
- height: 100%
|
||||||
|
- background: rgba(255,234,182,.9)
|
||||||
|
- position: absolute
|
||||||
|
- width: 0.00%
|
||||||
|
thumb:
|
||||||
|
- height: 100%
|
||||||
|
- background: white
|
||||||
|
- position: absolute
|
||||||
|
- right: '-5px'
|
||||||
|
- width: 10px
|
||||||
|
- type: custom:my-slider-v2
|
||||||
|
entity: input_number.kitchen_rgb_track
|
||||||
|
styles:
|
||||||
|
card:
|
||||||
|
- height: 50px
|
||||||
|
container:
|
||||||
|
- width: 100%
|
||||||
|
- height: 100%
|
||||||
|
- position: relative
|
||||||
|
- overflow: hidden
|
||||||
|
- border-radius: 0px
|
||||||
|
track:
|
||||||
|
- width: 100%
|
||||||
|
- height: 100%
|
||||||
|
- position: relative
|
||||||
|
- background: rgba(255,0,0,.3)
|
||||||
|
progress:
|
||||||
|
- height: 100%
|
||||||
|
- background: rgba(0,0,255,.4)
|
||||||
|
- position: absolute
|
||||||
|
- width: 0.00%
|
||||||
|
thumb:
|
||||||
|
- height: 100%
|
||||||
|
- background: rgba(0,255,0,.7)
|
||||||
|
- position: absolute
|
||||||
|
- right: '-5px'
|
||||||
|
- width: 10px
|
||||||
|
- type: custom:my-slider-v2
|
||||||
|
entity: input_number.kitchen_rgb_brightness
|
||||||
|
styles:
|
||||||
|
card:
|
||||||
|
- height: 50px
|
||||||
|
container:
|
||||||
|
- width: 100%
|
||||||
|
- height: 100%
|
||||||
|
- position: relative
|
||||||
|
- overflow: hidden
|
||||||
|
- border-radius: 0px
|
||||||
|
track:
|
||||||
|
- width: 100%
|
||||||
|
- height: 100%
|
||||||
|
- position: relative
|
||||||
|
- background: rgba(100,100,100,.3)
|
||||||
|
progress:
|
||||||
|
- height: 100%
|
||||||
|
- background: rgba(255,255,255,.8)
|
||||||
|
- position: absolute
|
||||||
|
- width: 0.00%
|
||||||
|
thumb:
|
||||||
|
- height: 100%
|
||||||
|
- background: white
|
||||||
|
- position: absolute
|
||||||
|
- right: '-5px'
|
||||||
|
- width: 10px
|
|
@ -0,0 +1,26 @@
|
||||||
|
These need to be put in to Home Assistant as helpers so the script can both
|
||||||
|
read the values for calculations and write the new value to them. Then,
|
||||||
|
these helpers will be used with other automations to control RGBCW lights
|
||||||
|
separately from the main knob control automation.
|
||||||
|
|
||||||
|
I chose to use helpers this way because it allows me to sync other automations
|
||||||
|
I have and make sure everything is reading the same values, if I want them to.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-----input.number helpers-----
|
||||||
|
|
||||||
|
input_number.kitchen_rgb_mode (set range=0-4)
|
||||||
|
input_number.kitchen_rgb_temperature (set range=2000-6500)
|
||||||
|
input_number.kitchen_rgb_brightness (set range=0-255)
|
||||||
|
input_number.kitchen_rgb_track (set range=0-1530)
|
||||||
|
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
------input.text helpers------
|
||||||
|
|
||||||
|
input_text.kitchen_rgb_color_value (will store RGB value like, "255,231,69")
|
||||||
|
|
||||||
|
------------------------------
|
|
@ -0,0 +1,47 @@
|
||||||
|
alias: "!Background - Kitchen - Kelvin Changer"
|
||||||
|
description: ""
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_number.kitchen_rgb_temperature
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
enabled: true
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_number.kitchen_rgb_mode
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
condition: []
|
||||||
|
action:
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ states('input_number.kitchen_rgb_mode') | int == 1 }}"
|
||||||
|
alias: IF Mode 1 = Kelvin
|
||||||
|
enabled: true
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_top
|
||||||
|
state: "on"
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
kelvin: "{{ states('input_number.kitchen_rgb_temperature') }}"
|
||||||
|
target:
|
||||||
|
entity_id: light.kitchen_rgb_top_light
|
||||||
|
alias: IF Top Toggle ON
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_bottom
|
||||||
|
state: "on"
|
||||||
|
alias: IF Bottom Toggle ON
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
kelvin: "{{ states('input_number.kitchen_rgb_temperature') }}"
|
||||||
|
target:
|
||||||
|
entity_id: light.kitchen_rgb_bottom_light
|
||||||
|
alias: IF Bottom Toggle ON
|
||||||
|
alias: Do shit
|
||||||
|
mode: single
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,104 @@
|
||||||
|
alias: "!Background - Kitchen - RGB Changer"
|
||||||
|
description: ""
|
||||||
|
trigger:
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_boolean.kitchen_rgb_toggle
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_boolean.toggle_kitchen_rgb_top
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_boolean.toggle_kitchen_rgb_bottom
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_number.kitchen_rgb_mode
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
- platform: state
|
||||||
|
entity_id:
|
||||||
|
- input_text.kitchen_rgb_color_value
|
||||||
|
from: null
|
||||||
|
to: null
|
||||||
|
condition: []
|
||||||
|
action:
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: "{{ states('input_number.kitchen_rgb_mode') | int == 3 }}"
|
||||||
|
alias: IF Mode 3 = RGB
|
||||||
|
enabled: true
|
||||||
|
then:
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_top
|
||||||
|
state: "on"
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
rgb_color:
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[0]
|
||||||
|
| int }}
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[1]
|
||||||
|
| int }}
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[2]
|
||||||
|
| int }}
|
||||||
|
transition: 0
|
||||||
|
target:
|
||||||
|
entity_id: light.kitchen_rgb_top_light
|
||||||
|
- if:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_bottom
|
||||||
|
state: "on"
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
rgb_color:
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[0]
|
||||||
|
| int }}
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[1]
|
||||||
|
| int }}
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[2]
|
||||||
|
| int }}
|
||||||
|
transition: 0
|
||||||
|
target:
|
||||||
|
entity_id: light.kitchen_rgb_bottom_light
|
||||||
|
- if:
|
||||||
|
- condition: and
|
||||||
|
conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_top
|
||||||
|
state: "off"
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.toggle_kitchen_rgb_bottom
|
||||||
|
state: "off"
|
||||||
|
then:
|
||||||
|
- service: light.turn_on
|
||||||
|
data:
|
||||||
|
transition: 3
|
||||||
|
rgb_color:
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[0]
|
||||||
|
| int }}
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[1]
|
||||||
|
| int }}
|
||||||
|
- >-
|
||||||
|
{{ states('input_text.kitchen_rgb_color_value').split(',')[2]
|
||||||
|
| int }}
|
||||||
|
target:
|
||||||
|
entity_id:
|
||||||
|
- light.kitchen_rgb_bottom_light
|
||||||
|
- light.kitchen_rgb_top_light
|
||||||
|
mode: single
|
Loading…
Reference in New Issue