ma ham: init tint remote control for arbeitszimmer
This commit is contained in:
parent
f66b93ab32
commit
ef48f536a3
@ -10,6 +10,8 @@ let
|
|||||||
"light.arbeitszimmer_pflanzenlicht"
|
"light.arbeitszimmer_pflanzenlicht"
|
||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
|
imports = [ ./tint_arbeitszimmer.nix ];
|
||||||
|
|
||||||
services.home-assistant.config.light = [
|
services.home-assistant.config.light = [
|
||||||
{
|
{
|
||||||
platform = "group";
|
platform = "group";
|
||||||
@ -27,16 +29,5 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
services.home-assistant.config.automation = [
|
services.home-assistant.config.automation = [
|
||||||
{
|
|
||||||
alias = "Toggle Arbeitszimmerbeleuchtung via Remote";
|
|
||||||
trigger = {
|
|
||||||
platform = "state";
|
|
||||||
entity_id = "sensor.arbeitszimmer_remote1_action";
|
|
||||||
};
|
|
||||||
action = {
|
|
||||||
service = "light.toggle";
|
|
||||||
data.entity_id = "light.arbeitszimmerbeleuchtung";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
278
makefu/2configs/home/ham/light/tint_arbeitszimmer.nix
Normal file
278
makefu/2configs/home/ham/light/tint_arbeitszimmer.nix
Normal file
@ -0,0 +1,278 @@
|
|||||||
|
{ lib, ...}:
|
||||||
|
|
||||||
|
let
|
||||||
|
# effect - color
|
||||||
|
# Solid Pattern - Hult
|
||||||
|
group_id_1 = 16388;
|
||||||
|
group_id_2 = 16389;
|
||||||
|
group_id_3 = 16390;
|
||||||
|
remote = "sensor.arbeitszimmer_remote1_action";
|
||||||
|
main_light_1 = "light.wled_4";
|
||||||
|
default_scene_1 = "Solid";
|
||||||
|
default_color_1 = "Default";
|
||||||
|
main_color_select_1 = "select.wled_color_palette_4";
|
||||||
|
light_group_1 = { entity_id = [ main_light_1 ];};
|
||||||
|
|
||||||
|
# contains only the actually changeable lights
|
||||||
|
light_group_2 = { entity_id = [
|
||||||
|
"light.arbeitszimmer_schrank_dimmer"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
light_group_3 = { entity_id = [ "light.arbeitszimmer_pflanzenlicht" ]; };
|
||||||
|
|
||||||
|
statecond = cond: { # cond must be a list
|
||||||
|
condition = "template";
|
||||||
|
value_template = "{{ trigger.to_state.attributes.action in ( " +
|
||||||
|
(lib.concatMapStringsSep "," (x: "'${x}'") cond) + ") }}";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
services.home-assistant.config.automation = [
|
||||||
|
{
|
||||||
|
alias = "Perform Actions with ${remote}";
|
||||||
|
mode = "queued";
|
||||||
|
max = 5;
|
||||||
|
max_exceeded = "silent";
|
||||||
|
trigger = {
|
||||||
|
platform = "state";
|
||||||
|
entity_id = remote;
|
||||||
|
};
|
||||||
|
condition = {
|
||||||
|
condition = "and";
|
||||||
|
conditions = [
|
||||||
|
{
|
||||||
|
condition = "template";
|
||||||
|
value_template = "{{ trigger.from_state.state != trigger.to_state.state }}";
|
||||||
|
}
|
||||||
|
( statecond [ "off" "on" "color_wheel"
|
||||||
|
"brightness_up_click" "brightness_down_click"
|
||||||
|
"color_temp" "color_temperature_move"
|
||||||
|
"brightness_step_down" "brightness_step_up" "brightness_down_hold" "brightness_down_release" "brightness_up_hold" "brightness_up_release"
|
||||||
|
"scene_3" "scene_1" "scene_2" # working sunset party
|
||||||
|
"scene_6" "scene_4" "scene_5" # night campfire romantic
|
||||||
|
])
|
||||||
|
];
|
||||||
|
};
|
||||||
|
action = [
|
||||||
|
{ service = "system_log.write";
|
||||||
|
data = {
|
||||||
|
level = "info";
|
||||||
|
message = "Tint Button pressed: {{ trigger.to_state.state }} Group: {{ trigger.to_state.attributes.action_group }} Length {{ input_working_scene_1 | length }}";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
choose = [
|
||||||
|
{ # light group 1
|
||||||
|
conditions = {
|
||||||
|
condition = "template";
|
||||||
|
value_template = "{{ trigger.to_state.attributes.action_group == ${toString group_id_1} }}";
|
||||||
|
};
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
choose = [
|
||||||
|
{
|
||||||
|
conditions = statecond [ "on" "off" ];
|
||||||
|
sequence = {
|
||||||
|
service = "light.turn_{{ trigger.to_state.state }}";
|
||||||
|
target = light_group_1;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "color_wheel" ];
|
||||||
|
sequence = {
|
||||||
|
data.xy_color = [
|
||||||
|
"{{ trigger.to_state.attributes.action_color.x | float }}"
|
||||||
|
"{{ trigger.to_state.attributes.action_color.y | float }}"
|
||||||
|
];
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_1;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "color_temp" ];
|
||||||
|
sequence = {
|
||||||
|
data.color_temp = "{{ trigger.to_state.attributes.action_color_temperature | float }}";
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_1;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "brightness_up_click" "brightness_down_click" ];
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
variables.factor = ''{% if trigger.to_state.state in ( "brightness_down_click") %} -12 {% else %} 12 {% endif %}'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
data.brightness_step_pct = "{{ factor | int }}";
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [
|
||||||
|
"scene_3" # working => previous scene
|
||||||
|
"scene_1" # sunset => default scene (solid)
|
||||||
|
"scene_2" # party => next scene
|
||||||
|
|
||||||
|
];
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
data.effect = ''
|
||||||
|
{% set options = state_attr("${main_light_1}","effect_list") -%}
|
||||||
|
{% set selection = options.index(state_attr("${main_light_1}","effect")) -%}
|
||||||
|
{% if trigger.to_state.attributes.action == "scene_2" -%}
|
||||||
|
{% if (selection + 1) >= options | length -%}
|
||||||
|
{{ options[0] }}
|
||||||
|
{% else -%}
|
||||||
|
{{ options[selection + 1] }}
|
||||||
|
{% endif %}
|
||||||
|
{% elif trigger.to_state.attributes.action == "scene_1" -%}
|
||||||
|
${default_scene_1}
|
||||||
|
{% elif trigger.to_state.attributes.action == "scene_3" -%}
|
||||||
|
{{ options[selection - 1] }}
|
||||||
|
{% endif -%}
|
||||||
|
'';
|
||||||
|
service = "light.turn_on";
|
||||||
|
target.entity_id = main_light_1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [
|
||||||
|
"scene_6" # night => previous color
|
||||||
|
"scene_4" # campfire => default Color (Default)
|
||||||
|
"scene_5" # romance => next color
|
||||||
|
|
||||||
|
];
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
data.option = ''
|
||||||
|
{% set options = state_attr("${main_color_select_1}","options") -%}
|
||||||
|
{% set selection = options.index(states("${main_color_select_1}")) -%}
|
||||||
|
{% if trigger.to_state.attributes.action == "scene_5" -%}
|
||||||
|
{% if (selection + 1) >= options | length -%}
|
||||||
|
{{ options[0] }}
|
||||||
|
{% else -%}
|
||||||
|
{{ options[selection + 1] }}
|
||||||
|
{% endif %}
|
||||||
|
{% elif trigger.to_state.attributes.action == "scene_4" -%}
|
||||||
|
${default_color_1}
|
||||||
|
{% elif trigger.to_state.attributes.action == "scene_6" -%}
|
||||||
|
{{ options[selection - 1] }}
|
||||||
|
{% endif -%}
|
||||||
|
'';
|
||||||
|
service = "select.select_option";
|
||||||
|
target.entity_id = main_color_select_1;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ # light group 2
|
||||||
|
conditions = {
|
||||||
|
condition = "template";
|
||||||
|
value_template = "{{ trigger.to_state.attributes.action_group == ${toString group_id_2} }}";
|
||||||
|
};
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
choose = [
|
||||||
|
{ conditions = statecond [ "on" "off" ];
|
||||||
|
sequence = {
|
||||||
|
service = "light.turn_{{ trigger.to_state.state }}";
|
||||||
|
target = light_group_2;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "color_wheel" ];
|
||||||
|
sequence = {
|
||||||
|
data.xy_color = [
|
||||||
|
"{{ trigger.to_state.attributes.action_color.x | float }}"
|
||||||
|
"{{ trigger.to_state.attributes.action_color.y | float }}"
|
||||||
|
];
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_2;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "color_temp" ];
|
||||||
|
sequence = {
|
||||||
|
data.color_temp = "{{ trigger.to_state.attributes.action_color_temperature | float }}";
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_2;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "brightness_up_click" "brightness_down_click" ];
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
variables.factor = ''{% if trigger.to_state.state in ( "brightness_down_click") %} -12 {% else %} 12 {% endif %}'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
data.brightness_step_pct = "{{ factor | int }}";
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_2;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
{ # light group 3
|
||||||
|
conditions = {
|
||||||
|
condition = "template";
|
||||||
|
value_template = "{{ trigger.to_state.attributes.action_group == ${toString group_id_3} }}";
|
||||||
|
};
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
choose = [
|
||||||
|
{ conditions = statecond [ "on" "off" ];
|
||||||
|
sequence = {
|
||||||
|
service = "light.turn_{{ trigger.to_state.state }}";
|
||||||
|
target = light_group_3;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "color_wheel" ];
|
||||||
|
sequence = {
|
||||||
|
data.xy_color = [
|
||||||
|
"{{ trigger.to_state.attributes.action_color.x | float }}"
|
||||||
|
"{{ trigger.to_state.attributes.action_color.y | float }}"
|
||||||
|
];
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_3;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "color_temperature_move" ];
|
||||||
|
sequence = {
|
||||||
|
data.color_temp = "{{ trigger.to_state.attributes.action_color_temperature | float }}";
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_3;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
conditions = statecond [ "brightness_up_click" "brightness_down_click" ];
|
||||||
|
sequence = [
|
||||||
|
{
|
||||||
|
variables.factor = ''{% if trigger.to_state.state in ( "brightness_down_click") %} -12 {% else %} 12 {% endif %}'';
|
||||||
|
}
|
||||||
|
{
|
||||||
|
data.brightness_step_pct = "{{ factor | int }}";
|
||||||
|
service = "light.turn_on";
|
||||||
|
target = light_group_3;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
@ -15,39 +15,34 @@
|
|||||||
# {% endif -%}
|
# {% endif -%}
|
||||||
|
|
||||||
let
|
let
|
||||||
# effect - color
|
# Solid Pattern
|
||||||
# Solid Pattern - Hult
|
# Hult
|
||||||
group_id_1 = 16388;
|
group_id_1 = 16388;
|
||||||
group_id_2 = 16389;
|
group_id_2 = 16389;
|
||||||
group_id_3 = 16390;
|
group_id_3 = 16390;
|
||||||
# main_light_1 = "light.wled";
|
remote = "sensor.schlafzimmer_remote1_action";
|
||||||
# default_scene_1 = "Solid";
|
main_light_1 = "light.wled";
|
||||||
# default_color_1 = "Default";
|
default_scene_1 = "Solid";
|
||||||
# main_color_select_1 = "select.wled_color_palette";
|
default_color_1 = "Default";
|
||||||
|
main_color_select_1 = "select.wled_color_palette";
|
||||||
|
light_group_1 = { entity_id = [ main_light_1 ];};
|
||||||
|
|
||||||
# contains only the actually changeable lights
|
# contains only the actually changeable lights
|
||||||
|
light_group_2 = { entity_id = [
|
||||||
|
"light.wohnzimmer_komode_osram"
|
||||||
|
"light.wohnzimmer_schrank_osram"
|
||||||
|
"light.wohnzimmer_fenster_lichterkette_licht"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
light_group_3 = { entity_id = [ "light.wohnzimmer_stehlampe_osram" ]; };
|
||||||
|
|
||||||
statecond = cond: { # cond must be a list
|
statecond = cond: { # cond must be a list
|
||||||
condition = "template";
|
condition = "template";
|
||||||
value_template = "{{ trigger.to_state.attributes.action in ( " +
|
value_template = "{{ trigger.to_state.attributes.action in ( " +
|
||||||
(lib.concatMapStringsSep "," (x: "'${x}'") cond) + ") }}";
|
(lib.concatMapStringsSep "," (x: "'${x}'") cond) + ") }}";
|
||||||
};
|
};
|
||||||
|
in {
|
||||||
# The remote manages WLED on ID1, and basic lights on ID2 and ID3
|
services.home-assistant.config.automation = [
|
||||||
tint_remote = { remote
|
|
||||||
, wled_name_1
|
|
||||||
, lights_2 ? []
|
|
||||||
, lights_3 ? []
|
|
||||||
, main_light_1 ? "light.${wled_name_1}"
|
|
||||||
, main_color_select_1 ? "select.${wled_name_1}_color_plaette"
|
|
||||||
, default_scene_1 ? "Solid"
|
|
||||||
, default_color_1 ? "Default"
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
light_group_1.entity_id = [ main_light_1 ];
|
|
||||||
light_group_2.entity_id = lights_2;
|
|
||||||
light_group_3.entity_id = lights_2;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
alias = "Perform Actions with ${remote}";
|
alias = "Perform Actions with ${remote}";
|
||||||
mode = "queued";
|
mode = "queued";
|
||||||
@ -295,15 +290,5 @@ let
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
;
|
|
||||||
in {
|
|
||||||
services.home-assistant.config.automation = [
|
|
||||||
(tint_remote {
|
|
||||||
remote = "sensor.schlafzimmer_remote1_action";
|
|
||||||
wled_name_1 = "wled";
|
|
||||||
lights_2 = [ "light.wohnzimmer_komode_osram" "light.wohnzimmer_schrank_osram" "light.wohnzimmer_fenster_lichterkette_licht" ];
|
|
||||||
lights_3 = [ "light.wohnzimmer_stehlampe_osram" ];
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,8 @@ let
|
|||||||
"light.kinderzimmer_lichterkette_licht" # led um fenster
|
"light.kinderzimmer_lichterkette_licht" # led um fenster
|
||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
|
imports = [ ./tint_wohnzimmer.nix ];
|
||||||
|
services.home-assistant.config.wled = {};
|
||||||
services.home-assistant.config.light = [
|
services.home-assistant.config.light = [
|
||||||
{
|
{
|
||||||
platform = "group";
|
platform = "group";
|
||||||
@ -22,3 +24,8 @@ in {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# trigger.to_state.attributes.action_group:
|
||||||
|
# 1: 18388
|
||||||
|
# 2: 18389
|
||||||
|
# 3: 18390
|
||||||
|
Loading…
Reference in New Issue
Block a user