summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/home/ham/automation
diff options
context:
space:
mode:
Diffstat (limited to 'makefu/2configs/home/ham/automation')
-rw-r--r--makefu/2configs/home/ham/automation/buttonboard.nix4
-rw-r--r--makefu/2configs/home/ham/automation/bye.txt.j22
-rw-r--r--makefu/2configs/home/ham/automation/check-in.nix77
-rw-r--r--makefu/2configs/home/ham/automation/daily_speedtext.nix17
-rw-r--r--makefu/2configs/home/ham/automation/fenster_auf.nix55
-rw-r--r--makefu/2configs/home/ham/automation/firetv_restart.nix22
-rw-r--r--makefu/2configs/home/ham/automation/flurlicht.nix12
-rw-r--r--makefu/2configs/home/ham/automation/shutdown_button.nix11
-rw-r--r--makefu/2configs/home/ham/automation/urlaub.nix7
-rw-r--r--makefu/2configs/home/ham/automation/welcome.txt.j245
10 files changed, 212 insertions, 40 deletions
diff --git a/makefu/2configs/home/ham/automation/buttonboard.nix b/makefu/2configs/home/ham/automation/buttonboard.nix
new file mode 100644
index 00000000..533311fc
--- /dev/null
+++ b/makefu/2configs/home/ham/automation/buttonboard.nix
@@ -0,0 +1,4 @@
+# good, bad radio
+# stop
+# start radio
+# lauter, leister
diff --git a/makefu/2configs/home/ham/automation/bye.txt.j2 b/makefu/2configs/home/ham/automation/bye.txt.j2
new file mode 100644
index 00000000..8a5ba725
--- /dev/null
+++ b/makefu/2configs/home/ham/automation/bye.txt.j2
@@ -0,0 +1,2 @@
+Endlich ist Pappa fertig mit arbeit!
+Heute hast du {{ states("sensor.felix_at_work_today") |round(1) }} Stunden gearbeitet.
diff --git a/makefu/2configs/home/ham/automation/check-in.nix b/makefu/2configs/home/ham/automation/check-in.nix
index d589a697..db051757 100644
--- a/makefu/2configs/home/ham/automation/check-in.nix
+++ b/makefu/2configs/home/ham/automation/check-in.nix
@@ -7,6 +7,21 @@ let
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";
@@ -19,13 +34,41 @@ in
];
services.home-assistant.config.automation =
[
- { 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";
- }
+ { 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 = [
{
@@ -54,15 +97,12 @@ in
{ service = "homeassistant.turn_on";
entity_id = at_work;
}
- ] ++ (say "Willkommen auf Arbeit") ++
- [
- { 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";
+ { service = "timer.start";
+ entity_id = [ "timer.felix_at_work" ] ;
}
+ ] ++ (say (builtins.readFile ./welcome.txt.j2)) ++
+ [
+ { service = "script.start_office_radio"; }
];
}
{
@@ -78,7 +118,12 @@ in
{ service = "homeassistant.turn_off";
entity_id = at_work;
}
- ] ++ (say "Endlich ist Pappa fertig mit arbeit!");
+ ] ++ (say (builtins.readFile ./bye.txt.j2)) ++
+ [
+ { service = "timer.stop";
+ entity_id = [ "timer.felix_at_work" ] ;
+ }
+ ];
}
];
}
diff --git a/makefu/2configs/home/ham/automation/daily_speedtext.nix b/makefu/2configs/home/ham/automation/daily_speedtext.nix
new file mode 100644
index 00000000..70d59f6e
--- /dev/null
+++ b/makefu/2configs/home/ham/automation/daily_speedtext.nix
@@ -0,0 +1,17 @@
+{
+ services.home-assistant.config.automation =
+ [
+ {
+ trigger = [
+ { platform = "time"; at = "03:21"; }
+ ];
+ action =
+ [
+ {
+ service = "speedtestdotnet.speedtest";
+ }
+ ];
+ }
+ ];
+
+}
diff --git a/makefu/2configs/home/ham/automation/fenster_auf.nix b/makefu/2configs/home/ham/automation/fenster_auf.nix
index fa2052be..b3682fe0 100644
--- a/makefu/2configs/home/ham/automation/fenster_auf.nix
+++ b/makefu/2configs/home/ham/automation/fenster_auf.nix
@@ -4,6 +4,11 @@
# binary_sensor.badezimmer_fenster_contact
# binary_sensor.dusche_fenster_contact
let
+ hlib = import ../lib;
+ say = hlib.say.office;
+ draussen = "sensor.wohnzimmer_temp_temperature";
+ draussen_diff = "sensor.unterschied_draussen_drinnen";
+ draussen_heiss = 23;
min = 20;
fenster_offen = name: entity:
{ alias = "${name} seit ${toString min} Minuten offen";
@@ -16,10 +21,6 @@ let
}
];
condition = [
- { condition = "state";
- entity_id = "input_boolean.ist_sommer";
- state = "off";
- }
];
action =
[
@@ -67,6 +68,17 @@ let
};
in {
services.home-assistant.config = {
+ template = [
+ { sensor = {
+ name = "Unterschied Draussen Drinnen";
+ unit_of_measurement = "°C";
+ state = ''
+ {% set inside = states("${draussen}") | float | round(2) -%}
+ {% set outside = states("sensor.dark_sky_temperature") | float | round(2) -%}
+ {{ ((outside - inside) | round(1) )}}'';
+ };
+ }
+ ];
sensor = [
{ platform = "season"; type = "meteorological";}
];
@@ -86,6 +98,41 @@ in {
(fenster_offen "Badezimmerfenster" "binary_sensor.badezimmer_fenster_contact")
(fenster_offen "Duschfenster" "binary_sensor.dusche_fenster_contact")
+
+ { alias = "Draussen ist wieder kaelter";
+ trigger = [
+ {
+ platform = "numeric_state";
+ entity_id = draussen_diff;
+ below = 0;
+ for.minutes = 20;
+ }
+ ];
+ condition = [
+ { condition = "numeric_state";
+ entity_id = draussen;
+ above = draussen_heiss;
+ }
+ ];
+ action = (say "Draussen ist es endlich kühler, jetzt kann man die Fenster auf machen");
+ }
+ { alias = "Draussen ist zu warm";
+ trigger = [
+ {
+ platform = "numeric_state";
+ entity_id = draussen_diff;
+ above = 0;
+ for.minutes = 20;
+ }
+ ];
+ condition = [
+ { condition = "numeric_state";
+ entity_id = draussen;
+ above = draussen_heiss;
+ }
+ ];
+ action = (say "Draussen wird es jetzt zu warm, besser das fenster schliessen");
+ }
];
};
}
diff --git a/makefu/2configs/home/ham/automation/firetv_restart.nix b/makefu/2configs/home/ham/automation/firetv_restart.nix
index 12e0e845..01d1ba6e 100644
--- a/makefu/2configs/home/ham/automation/firetv_restart.nix
+++ b/makefu/2configs/home/ham/automation/firetv_restart.nix
@@ -20,17 +20,17 @@ in
action = [
(cmd "reboot")
(sec 90) # go to my music because apparently select_source does not seem to always work
- (cmd "HOME")
- (sec 2)
- (cmd "DOWN")
- (sec 2)
- (cmd "DOWN")
- (sec 2)
- (cmd "ENTER")
- (sec 4)
- (cmd "RIGHT")
- (sec 2)
- (cmd "RIGHT")
+ #(cmd "HOME")
+ #(sec 2)
+ #(cmd "DOWN")
+ #(sec 2)
+ #(cmd "DOWN")
+ #(sec 2)
+ #(cmd "ENTER")
+ #(sec 4)
+ #(cmd "RIGHT")
+ #(sec 2)
+ #(cmd "RIGHT")
];
}
];
diff --git a/makefu/2configs/home/ham/automation/flurlicht.nix b/makefu/2configs/home/ham/automation/flurlicht.nix
index aa62ab9e..bb487710 100644
--- a/makefu/2configs/home/ham/automation/flurlicht.nix
+++ b/makefu/2configs/home/ham/automation/flurlicht.nix
@@ -32,12 +32,16 @@ in
[
{ choose = [
(lightcond "Badezimmer Fenster Auf"
- { condition = "state"; entity_id = "binary_sensor.badezimmer_fenster_contact"; state = "on"; }
- [ 64 207 255 ] 255 # helblau
+ [ { condition = "state"; entity_id = "binary_sensor.badezimmer_fenster_contact"; state = "on"; }
+ { condition = "state"; entity_id = "input_boolean.ist_sommer"; state = "off"; }
+
+ ]
+ [ 64 207 255 ] 128 # hellblau
)
(lightcond "Duschenster auf"
- { condition = "state"; entity_id = "binary_sensor.dusche_fenster_contact"; state = "on"; }
- [ 64 207 255 ] 255 # helblau
+ [ { condition = "state"; entity_id = "binary_sensor.dusche_fenster_contact"; state = "on"; }
+ { condition = "state"; entity_id = "input_boolean.ist_sommer"; state = "off"; } ]
+ [ 64 207 255 ] 128 # hellblau
)
(lightcond "Nachtlicht"
{ condition = "state"; entity_id = "sun.sun"; state = "below_horizon"; }
diff --git a/makefu/2configs/home/ham/automation/shutdown_button.nix b/makefu/2configs/home/ham/automation/shutdown_button.nix
index 4c12be27..ec1a2556 100644
--- a/makefu/2configs/home/ham/automation/shutdown_button.nix
+++ b/makefu/2configs/home/ham/automation/shutdown_button.nix
@@ -1,5 +1,8 @@
let
btn = "sensor.arbeitszimmer_btn1_action";
+ lib = import ../lib;
+ say = lib.say.living_room;
+
all_lights = [
# Wohnzimmer
"light.wled"
@@ -21,6 +24,8 @@ let
all_media_player = [
"media_player.living_room"
"media_player.office"
+ "media_player.bedroom"
+
];
in {
services.home-assistant.config.automation =
@@ -30,13 +35,13 @@ in {
{
platform = "state";
entity_id = btn;
- to = "on";
+ to = "single";
}
];
condition = [ ];
- action = [
+ action = (say "Alles Aus" )++ [
{
- service = "home_assistant.turn_off";
+ service = "light.turn_off";
target.entity_id = all_lights;
}
{ service = "media_player.media_stop";
diff --git a/makefu/2configs/home/ham/automation/urlaub.nix b/makefu/2configs/home/ham/automation/urlaub.nix
index c11c589c..7f47c9da 100644
--- a/makefu/2configs/home/ham/automation/urlaub.nix
+++ b/makefu/2configs/home/ham/automation/urlaub.nix
@@ -4,7 +4,10 @@
# "all" lights
let
- schranklicht = "light.wohnzimmer_schrank_osram";
+ schranklicht = [
+ "light.wohnzimmer_schrank_osram"
+ "light.wohnzimmer_komode_osram"
+ ];
weihnachtslicht = "light.wohnzimmer_fenster_lichterkette_licht";
fernsehlicht = "light.wled";
@@ -24,7 +27,7 @@ let
turn_on = entity_id: offset:
# negative offset => before sunset
- { alias = "Turn on ${entity_id} at sunset ${offset}";
+ { alias = "Turn on ${toString entity_id} at sunset ${offset}";
trigger = [
{ platform = "sun"; event = "sunset"; inherit offset; }
];
diff --git a/makefu/2configs/home/ham/automation/welcome.txt.j2 b/makefu/2configs/home/ham/automation/welcome.txt.j2
new file mode 100644
index 00000000..76091b86
--- /dev/null
+++ b/makefu/2configs/home/ham/automation/welcome.txt.j2
@@ -0,0 +1,45 @@
+{% set arbeit_heute = is_state("binary_sensor.arbeitstag","on") -%}
+{% set weekday = ['Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag','Sonntag'][now().weekday()] -%}
+{% set is_friday = now().weekday() == 4 %}
+
+{% if not arbeit_heute %}
+Heute ist {{ weekday }}, du solltest gar nicht arbeiten!
+{% else %}
+Willkommen auf Arbeit Felix.
+{% endif -%}
+Das aktuell gewählte Projekt ist {{ states("sensor.felix_project") }}.
+
+{% set inside = states("sensor.wohnzimmer_temp_temperature") | float | round(2) -%}
+{% set outside = states("sensor.dark_sky_temperature") | float | round(2) -%}
+{% set arbeit_morgen = is_state("binary_sensor.arbeitstag_morgen","on") -%}
+
+Die Wetteraussichten: {{ states("sensor.dark_sky_hourly_summary") | replace(".","")}} bei {{ states("sensor.dark_sky_temperature") }} Grad mit {{ states("sensor.dark_sky_humidity") | round(0) }}% Luftfeuchtigkeit.
+{% if states("calendar.abfall_papiermuell") == "on" %}
+Heute ist Papiermuell, bring noch schnell dein Papier raus
+{% endif %}
+{% if states("calendar.abfall_restmuell") == "on" %}
+Ausserdem ist heute Restmuell.
+{% endif -%}
+
+{% if ( outside < inside ) and ( outside > 18 ) %}
+Draussen ist es gerade {{ ((inside - outside) | round(1) )}} gerade kühler
+{% endif -%}
+
+{% set current_count = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_count") %}
+{% for i in range(current_count) %}
+{% set idx = i + 1 %}
+ {% set headline = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_headline") %}
+ {% set description = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_description") %}
+ {% set level = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_level") %}
+ {% set time_start = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_start") %}
+ {% set time_end = state_attr("sensor.dwd_weather_warnings_current_warning_level", "warning_" ~ idx ~ "_end") %}
+Wetterwarnung {{idx}}: {{ headline }} Stufe {{level}} von {{ time_start.strftime("%H:%M") ~ " bis " ~ time_end.strftime("%H:%M") }} Uhr
+
+{{ description }}
+{% endfor %}
+
+{% if is_friday %}
+Endlich ist Freitag!
+{% elif not arbeit_morgen %}
+Morgen ist Feiertag, also nicht versehentlich arbeiten
+{% endif -%}