Merge remote-tracking branch 'gum/master'

This commit is contained in:
lassulus 2020-12-30 12:59:53 +01:00
commit 053044834c
8 changed files with 280 additions and 36 deletions

View File

@ -0,0 +1,102 @@
# uses:
# switch.crafting_giesskanne_relay
let
cam = {
name = "chilicam";
camera = "camera.espcam_02";
light = "light.espcam_02_light";
seconds = 60; # default shutoff to protect the LED from burning out
};
seconds = 6;
pump = "switch.arbeitszimmer_giesskanne_relay";
# sensor = "sensor.statistics_for_sensor_crafting_brotbox_soil_moisture";
in
{
services.home-assistant.config =
{
#sensor = map ( entity_id: {
# platform = "statistics";
# name = "Statistics for ${entity_id}";
# inherit entity_id;
# max_age.minutes = "60";
# sampling_size = 1000;
# }) [ "sensor.crafting_brotbox_soil_moisture" ];
automation =
[
##### brotbox
{ alias = "Water the plant for ${toString seconds} seconds";
trigger = [
{ # trigger at 23:15 no matter what
# TODO: retry or run only if switch.wasser is available
platform = "time";
at = "23:15:00";
}
];
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 ];
}
{ delay.seconds = seconds; }
{
service = "homeassistant.turn_off";
entity_id = [ pump cam.light ];
}
];
}
{ alias = "Always turn off the light after ${toString (cam.seconds)}s";
trigger = [
{
platform = "state";
entity_id = cam.light;
to = "on";
for.seconds = cam.seconds;
}
];
action =
[
{
service = "homeassistant.turn_off";
entity_id = [ pump cam.light ];
}
];
}
{ alias = "Always turn off water after ${toString (seconds * 2)}s";
trigger = [
{
platform = "state";
entity_id = pump;
to = "on";
for.seconds = seconds*2;
}
];
action =
[
{
service = "homeassistant.turn_off";
entity_id = [ pump cam.light ];
}
];
}
];
};
}

View File

@ -1,3 +1,9 @@
# light.wohnzimmerbeleuchtung
# light.wohnzimmer_deko
# light.arbeitszimmerbeleuchtung
# light.arbeitszimmer_deko
# light.schlafzimmerbeleuchtung
let
toggle = light: btn:
{
@ -9,7 +15,8 @@ let
};
action = {
service = "light.toggle";
entity = light;
data.entity_id = light;
data.transition = 0;
};
};
turn_off_all = btn:
@ -22,12 +29,16 @@ let
};
action = {
service = "light.turn_off";
entity = "light.alle_lichter";
entity_id = "all";
};
};
in {
services.home-assistant.config.automation = [
(toggle "light.wohnzimmer_lichter" "btn3")
(turn_off_all "btn3")
(toggle "light.arbeitszimmerbeleuchtung" "arbeitszimmer_btn1")
(toggle "light.schlafzimmerbeleuchtung" "schlafzimmer_btn2")
(toggle "light.wohnzimmerbeleuchtung" "wohnzimmer_btn3")
(turn_off_all "arbeitszimmer_btn1")
(turn_off_all "schlafzimmer_btn2")
(turn_off_all "wohnzimmer_btn3")
];
}

View File

@ -0,0 +1,44 @@
# uses:
# light.wohnzimmer_schrank_osram
# light.wohnzimmer_fernseher_led_strip
# "all" lights
let
schranklicht = "light.wohnzimmer_schrank_osram";
fernsehlicht = "light.wohnzimmer_fernseher_led_strip";
final_off = "01:00";
turn_on = entity_id: at:
{ alias = "Turn on ${entity_id} at ${at}";
trigger = [
{ platform = "time"; inherit at; }
];
action =
[
{ service = "light.turn_on"; inherit entity_id; }
];
};
in
{
services.home-assistant.config =
{
automation =
[
(turn_on schranklicht "17:30")
(turn_on fernsehlicht "19:00")
{ alias = "Always turn off the urlaub lights at ${final_off}";
trigger = [
{ platform = "time"; at = final_off; }
];
action =
[
{
service = "light.turn_off";
entity_id = [ schranklicht fernsehlicht ];
}
];
}
];
};
}

View File

@ -0,0 +1,61 @@
# This module maps the RF433 Remote Control to zigbee and wifi lights
let
rf_turn_off = code: light:
{
alias = "Turn off ${light} via rf code ${code}";
trigger = {
platform = "event";
event_type = "esphome.rf_code_received";
event_data.code = code;
};
action = {
service = "light.turn_off";
data.entity_id = light;
};
};
rf_turn_on = code: light:
{
alias = "Turn on ${light} via rf code ${code}";
trigger = {
platform = "event";
event_type = "esphome.rf_code_received";
event_data.code = code;
};
action = {
service = "light.turn_on";
data.entity_id = light;
};
};
rf_toggle = code: light:
{
alias = "Toggle ${light} via rf code ${code}";
trigger = {
platform = "event";
event_type = "esphome.rf_code_received";
event_data.code = code;
};
action = {
service = "light.toggle";
data.entity_id = light;
};
};
in
{
services.home-assistant.config.automation = [
(rf_toggle "400551" "light.wohnzimmer_fernseher_led_strip") # A
(rf_toggle "401151" "light.wohnzimmer_stehlampe_osram") # B
(rf_toggle "401451" "light.wohnzimmer_komode_osram") # C
(rf_toggle "401511" "light.wohnzimmer_schrank_osram") # D
# OFF Lane
(rf_turn_off "400554" "all") # A
(rf_toggle "401154" "light.wohnzimmer_fenster_lichterkette_licht") # B
(rf_toggle "401454" "light.wohnzimmer_fernsehwand_led") # C
# (rf_toggle "401514" "") # D
];
# "400554" # A OFF
# "401154" # B OFF
# "401454" # C OFF
# "401514" # D OFF
}

View File

@ -17,7 +17,7 @@ in {
# ./multi/flurlicht.nix
./multi/kurzzeitwecker.nix
./multi/the_playlist.nix
./multi/fliegen-couter.nix
# ./multi/fliegen-couter.nix
./device_tracker/openwrt.nix
@ -27,8 +27,13 @@ in {
./automation/firetv_restart.nix
./automation/light_buttons.nix
./automation/wohnzimmer_rf_fernbedienung.nix
./automation/giesskanne.nix
./automation/urlaub.nix
./light/groups.nix
./light/arbeitszimmer.nix
./light/schlafzimmer.nix
./light/wohnzimmer.nix
];
services.home-assistant = {

View File

@ -0,0 +1,24 @@
let
arbeitszimmer_deko = [
"light.led_wand"
"light.box_led_status"
"light.arbeitszimmer_led1_led_strip" # LED-Kreis in cube
];
arbeitszimmerbeleuchtung = [
"light.arbeitszimmer_schrank_dimmer"
"light.arbeitszimmer_kerze" # arbeitszimmer_kerze
];
in {
services.home-assistant.config.light = [
{
platform = "group";
name = "Arbeitszimmerbeleuchtung";
entities = arbeitszimmerbeleuchtung;
}
{
platform = "group";
name = "Arbeitszimmer Deko";
entities = arbeitszimmer_deko;
}
];
}

View File

@ -1,41 +1,14 @@
let
arbeitszimmer_licht = [
"light.led_wand"
"light.arbeitszimmer_led1_led_strip" # LED-Kreis in cube
"light.arbeitszimmer_flur_osram_light"
"light.arbeitszimmer_schrank_dimmer_light"
"light.arbeitszimmer_schrank_osram_light"
];
wohnzimmer_licht = [
"light.wohnzimmer_fernseher_led_strip" # led um fernseher
"light.wohnzimmer_komode_osram_light"
"light.wohnzimmer_schrank_osram_light"
"light.wohnzimmer_stehlampe_osram_light"
];
schlafzimmer_licht = [
"light.schlafzimmer_komode_osram_light"
"light.schlafzimmer_komode_osram"
# "light.schlafzimmer_schrank_osram"
];
in {
services.home-assistant.config.light = [
{
platform = "group";
name = "Arbeitszimmer Lichter";
entities = arbeitszimmer_licht;
}
{
platform = "group";
name = "Wohnzimmer Lichter";
entities = wohnzimmer_licht;
}
{
platform = "group";
name = "Schlafzimmer Lichter";
name = "Schlafzimmerbeleuchtung";
entities = schlafzimmer_licht;
}
{
platform = "group";
name = "Alle Lichter";
entities = arbeitszimmer_licht ++ wohnzimmer_licht ++ schlafzimmer_licht;
}
];
}

View File

@ -0,0 +1,24 @@
let
wohnzimmerbeleuchtung = [
"light.wohnzimmer_komode_osram_light"
"light.wohnzimmer_schrank_osram_light"
];
wohnzimmer_deko = [
"light.wohnzimmer_fernseher_led_strip" # led um fernseher
"light.wohnzimmer_lichterkette_led_strip" # led um fernsehwand
"light.kinderzimmer_lichterkette_licht" # led um fenster
];
in {
services.home-assistant.config.light = [
{
platform = "group";
name = "Wohnzimmerbeleuchtung";
entities = wohnzimmerbeleuchtung;
}
{
platform = "group";
name = "Wohnzimmer Deko";
entities = wohnzimmer_deko;
}
];
}