summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/home/ham/automation
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2022-06-06 21:07:52 +0200
committermakefu <github@syntax-fehler.de>2022-06-06 21:07:52 +0200
commit2047429a2e858c438c5b81508910ae9d195e0301 (patch)
treea2cc73bcbf0ad796b2e7d2ae4c85093c72e84ac2 /makefu/2configs/home/ham/automation
parent54869b752d3f5724679f84ed6f0896a03c578ab5 (diff)
ma ham: reenabel giesskanne
Diffstat (limited to 'makefu/2configs/home/ham/automation')
-rw-r--r--makefu/2configs/home/ham/automation/check-in.nix13
-rw-r--r--makefu/2configs/home/ham/automation/flurlicht.nix85
-rw-r--r--makefu/2configs/home/ham/automation/giesskanne.nix45
-rw-r--r--makefu/2configs/home/ham/automation/urlaub.nix26
4 files changed, 95 insertions, 74 deletions
diff --git a/makefu/2configs/home/ham/automation/check-in.nix b/makefu/2configs/home/ham/automation/check-in.nix
index 21040b409..3a7ebe9ac 100644
--- a/makefu/2configs/home/ham/automation/check-in.nix
+++ b/makefu/2configs/home/ham/automation/check-in.nix
@@ -3,7 +3,7 @@ let
light = "light.arbeitszimmer_onebutton_led";
at_work = "input_boolean.felix_at_work";
lib = import ../lib;
- say = lib.say.living_room;
+ say = lib.say.office;
in
{
services.home-assistant.config.input_boolean.felix_at_work.name = "Felix auf Arbeit";
@@ -37,7 +37,16 @@ in
{ service = "homeassistant.turn_on";
entity_id = at_work;
}
- ] ++ (say "Willkommen auf Arbeit");
+ ] ++ (say "Willkommen auf Arbeit") ++
+ [
+ { service = "media_player.play_media";
+ data = {
+ media_content_id = "https://radio.lassul.us/radio.mp3";
+ media_content_type = "music";
+ };
+ target.entity_id = "media_player.office";
+ }
+ ];
}
{
conditions = {
diff --git a/makefu/2configs/home/ham/automation/flurlicht.nix b/makefu/2configs/home/ham/automation/flurlicht.nix
index c26f7e3e0..aa62ab9e4 100644
--- a/makefu/2configs/home/ham/automation/flurlicht.nix
+++ b/makefu/2configs/home/ham/automation/flurlicht.nix
@@ -1,56 +1,57 @@
let
- licht = [ "light.flur_statuslight" "light.wohnzimmer_status_led" ];
- kehrwoche_color = [ 204 0 255 ]; # pink
- nachtlicht_color = [ 255 190 0 ]; # ein dunkles rot
+ nachtlicht = [ "light.flur_statuslight" "light.wohnzimmer_status_led" ];
+
+ # flurlicht an
+ lightcond = name: conditions: rgb_color: brightness:
+ {
+ inherit conditions;
+ sequence = {
+ service = "light.turn_on";
+ target.entity_id = nachtlicht;
+ data = {
+ inherit rgb_color brightness;
+ };
+ };
+ };
in
{
services.home-assistant.config.automation =
[
- { alias = "Nachtlicht im Flur an";
- trigger = {
- platform = "sun";
- event = "sunset";
- };
- action =
- [
- {
- service = "light.turn_on";
- target.entity_id = licht;
- data = {
- brightness = 87;
- rgb_color = nachtlicht_color;
- #effect = "None";
- };
+ { alias = "Nachtlicht trigger";
+ trigger = [
+ { platform = "sun"; event = "sunset"; }
+ { platform = "sun"; event = "sunrise"; }
+ { platform = "state"; entity_id = [
+ "calendar.kehrwoche_kehrwoche"
+ "binary_sensor.badezimmer_fenster_contact"
+ "binary_sensor.dusche_fenster_contact"
+ ];
}
];
- }
- { alias = "Nachtlicht in Flur aus, Kehrwoche an";
- trigger = {
- platform = "sun";
- event = "sunrise";
- };
action =
[
{ choose = [
- {
- conditions = {
- condition = "state";
- entity_id = "calendar.kehrwoche_kehrwoche";
- state = "on";
- };
- sequence = {
- service = "light.turn_on";
- target.entity_id = licht;
- data = {
- brightness = 190;
- rgb_color = kehrwoche_color; # pink
- };
- };
- }];
+ (lightcond "Badezimmer Fenster Auf"
+ { condition = "state"; entity_id = "binary_sensor.badezimmer_fenster_contact"; state = "on"; }
+ [ 64 207 255 ] 255 # helblau
+ )
+ (lightcond "Duschenster auf"
+ { condition = "state"; entity_id = "binary_sensor.dusche_fenster_contact"; state = "on"; }
+ [ 64 207 255 ] 255 # helblau
+ )
+ (lightcond "Nachtlicht"
+ { condition = "state"; entity_id = "sun.sun"; state = "below_horizon"; }
+ [ 255 190 0 ] 90 # red
+ )
+ (lightcond "Kehrwoche"
+ { condition = "state"; entity_id = "calendar.kehrwoche_kehrwoche"; state = "on"; }
+ [ 204 0 255 ] 128 # pink
+ )
+ ];
default = {
- service = "light.turn_off";
- entity_id = licht;
- };
+ service = "light.turn_off";
+ entity_id = nachtlicht;
+ };
}
];
}
diff --git a/makefu/2configs/home/ham/automation/giesskanne.nix b/makefu/2configs/home/ham/automation/giesskanne.nix
index b11fd9d52..400e553e8 100644
--- a/makefu/2configs/home/ham/automation/giesskanne.nix
+++ b/makefu/2configs/home/ham/automation/giesskanne.nix
@@ -7,8 +7,10 @@ let
light = "light.espcam_02_light";
seconds = 90; # default shutoff to protect the LED from burning out
};
- seconds = 70; # time for giesskanne
+ seconds = 60*5; # time for giesskanne - 5 minutes
pump = "switch.arbeitszimmer_giesskanne_relay";
+ light = "switch.terrasse_plug_relay";
+
# sensor = "sensor.statistics_for_sensor_crafting_brotbox_soil_moisture";
in
{
@@ -26,56 +28,51 @@ in
[
##### brotbox
- { alias = "Water the plant for ${toString seconds} seconds";
+ { alias = "Water the plant for ${toString seconds} seconds and turn on the light";
trigger = [
{ # trigger at 23:15 no matter what
# TODO: retry or run only if switch.wasser is available
- platform = "time";
- at = "23:15:00";
+ platform = "sun";
+ event = "sunrise";
}
];
action =
[
- { # take a snapshot before watering
- service = "homeassistant.turn_on";
- entity_id = [ cam.light ];
- }
- { # TODO: we could also create a recording with camera.record
- service = "camera.snapshot";
- data = {
- entity_id = cam.camera;
- # TODO: create /var/lib/hass/cam/ - now being done manually
- filename = "/var/lib/hass/cam/${cam.name}_{{ now().strftime('%Y%m%d-%H%M%S') }}.jpg";
- };
- }
{ # now turn on the pumping services
# i do not start hte pump and light before the snapshot because i do
# not know how long it takes (do not want to water the plants for too long)
service = "homeassistant.turn_on";
- entity_id = [ pump ];
+ entity_id = [ pump light ];
}
{ delay.seconds = seconds; }
{
service = "homeassistant.turn_off";
entity_id = [ pump cam.light ];
}
+ { # TODO: we could also create a recording with camera.record
+ service = "camera.snapshot";
+ data = {
+ entity_id = cam.camera;
+ # TODO: create /var/lib/hass/cam/ - now being done manually
+ filename = "/var/lib/hass/cam/${cam.name}_{{ now().strftime('%Y%m%d-%H%M%S') }}.jpg";
+ };
+ }
];
}
- { alias = "Always turn off the light after ${toString (cam.seconds)}s";
+ { alias = "Turn off the light at sunset";
trigger = [
{
- platform = "state";
- entity_id = cam.light;
- to = "on";
- for.seconds = cam.seconds;
+ platform = "sun";
+ event = "sunset";
+ # offset = "+02:00:00";
}
];
action =
[
{
service = "homeassistant.turn_off";
- entity_id = [ pump cam.light ];
+ entity_id = [ light ];
}
];
}
@@ -93,7 +90,7 @@ in
[
{
service = "homeassistant.turn_off";
- entity_id = [ pump cam.light ];
+ entity_id = [ pump ];
}
];
}
diff --git a/makefu/2configs/home/ham/automation/urlaub.nix b/makefu/2configs/home/ham/automation/urlaub.nix
index 50294514c..c11c589cf 100644
--- a/makefu/2configs/home/ham/automation/urlaub.nix
+++ b/makefu/2configs/home/ham/automation/urlaub.nix
@@ -7,12 +7,26 @@ let
schranklicht = "light.wohnzimmer_schrank_osram";
weihnachtslicht = "light.wohnzimmer_fenster_lichterkette_licht";
fernsehlicht = "light.wled";
+
+ all_lights = [
+ schranklicht weihnachtslicht fernsehlicht
+ # extra lights to also turn off
+ # wohnzimmer
+ "light.wohnzimmer_komode_osram"
+ "light.wohnzimmer_stehlampe_osram"
+ # arbeitszimmer
+ "light.wled_4"
+ "light.arbeitszimmer_schrank_dimmer"
+ "light.arbeitszimmer_pflanzenlicht"
+ ];
+
final_off = "00:37";
- turn_on = entity_id: at:
- { alias = "Turn on ${entity_id} at ${at}";
+ turn_on = entity_id: offset:
+ # negative offset => before sunset
+ { alias = "Turn on ${entity_id} at sunset ${offset}";
trigger = [
- { platform = "time"; inherit at; }
+ { platform = "sun"; event = "sunset"; inherit offset; }
];
action =
[
@@ -25,9 +39,9 @@ in
{
automation =
[
- (turn_on schranklicht "17:30")
- (turn_on weihnachtslicht "17:30")
- (turn_on fernsehlicht "19:00")
+ (turn_on schranklicht "-00:30:00")
+ #(turn_on weihnachtslicht "-00:30:00")
+ (turn_on fernsehlicht "-00:00:00")
{ alias = "Always turn off the urlaub lights at ${final_off}";
trigger = [