stockholm/makefu/2configs/home/ham/automation/check-in.nix
2022-09-23 23:41:30 +02:00

134 lines
3.8 KiB
Nix

let
button = "binary_sensor.arbeitszimmer_onebutton_button";
light = "light.arbeitszimmer_onebutton_led";
at_work = "input_boolean.felix_at_work";
lib = import ../lib;
say = lib.say.office;
in
{
services.home-assistant.config.input_boolean.felix_at_work.name = "Felix auf Arbeit";
services.home-assistant.config.timer.felix_at_work = {
name = "Felix auf Arbeit Timer";
duration = "10:00:00";
};
services.home-assistant.config.sensor = [
{
platform = "history_stats";
name = "Felix at work today";
entity_id = "input_boolean.felix_at_work";
state = "on";
type = "time";
start = "{{ now().replace(hour=0, minute=0, second=0) }}";
end = "{{ now() }}";
}
];
services.home-assistant.config.script.start_office_radio.sequence =
[
{ service = "media_player.play_media";
data = {
media_content_id = "http://radio.lassul.us:8000/radio.mp3";
media_content_type = "music";
};
target.entity_id = "media_player.office";
}
];
services.home-assistant.config.automation =
[
{ alias = "Zu lange Felix!";
trigger =
{ platform = "event";
event_type = "timer.finished";
event_data.entity_id = "timer.felix_at_work";
};
condition =
{
condition = "state";
entity_id = at_work;
state = "off";
};
action = (say "Felix, die zehn Stunden sind um, aufhören jetzt");
}
{ alias = "Turn off at work sensor";
trigger = [
{ platform = "time"; at = "00:00:00"; }
];
condition =
{
condition = "state";
entity_id = at_work;
state = "off";
};
action =
[
# felix forgot to stamp out ...
{
service = "homeassistant.turn_off";
entity_id = [ at_work ];
}
];
}
{ alias = "Push Check-in Button Felix with button";
trigger = [
{
platform = "state";
entity_id = button;
to = "on";
for.seconds = 1;
}
];
condition = [
];
action =
[
{ choose = [
{
conditions = {
condition = "state";
entity_id = at_work;
state = "off";
};
sequence = [
{ service = "light.turn_on";
target.entity_id = light;
data.brightness = 200;
}
{ service = "homeassistant.turn_on";
entity_id = at_work;
}
{ service = "timer.start";
entity_id = [ "timer.felix_at_work" ] ;
}
] ++ (say (builtins.readFile ./welcome.txt.j2)) ++
[
{ service = "script.start_office_radio"; }
];
}
{
conditions = {
condition = "state";
entity_id = at_work;
state = "on";
};
sequence = [
{ service = "light.turn_off";
target.entity_id = light;
}
{ service = "homeassistant.turn_off";
entity_id = at_work;
}
] ++ (say (builtins.readFile ./bye.txt.j2)) ++
[
{ service = "timer.stop";
entity_id = [ "timer.felix_at_work" ] ;
}
];
}
];
}
];
}
];
}