stockholm/makefu/2configs/home/ham/automation/giesskanne.nix

103 lines
2.8 KiB
Nix

# uses:
# switch.crafting_giesskanne_relay
let
cam = {
name = "chilicam";
camera = "camera.espcam_02";
light = "light.espcam_02_light";
seconds = 90; # default shutoff to protect the LED from burning out
};
seconds = 70; # time for giesskanne
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 ];
}
];
}
];
};
}