summaryrefslogtreecommitdiffstats
path: root/krebs/2configs/shack/glados/multi/wasser.nix
diff options
context:
space:
mode:
Diffstat (limited to 'krebs/2configs/shack/glados/multi/wasser.nix')
-rw-r--r--krebs/2configs/shack/glados/multi/wasser.nix159
1 files changed, 103 insertions, 56 deletions
diff --git a/krebs/2configs/shack/glados/multi/wasser.nix b/krebs/2configs/shack/glados/multi/wasser.nix
index 578bb075..9ca5e450 100644
--- a/krebs/2configs/shack/glados/multi/wasser.nix
+++ b/krebs/2configs/shack/glados/multi/wasser.nix
@@ -1,66 +1,113 @@
+# uses:
+# switch.crafting_giesskanne_relay
let
- tasmota_plug = name: topic:
- { platform = "mqtt";
- inherit name;
- state_topic = "sonoff/stat/${topic}/POWER1";
- command_topic = "sonoff/cmnd/${topic}/POWER1";
- availability_topic = "sonoff/tele/${topic}/LWT";
- payload_on= "ON";
- payload_off= "OFF";
- payload_available= "Online";
- payload_not_available= "Offline";
- retain = false;
- qos = 1;
- };
+ glados = import ../lib;
seconds = 20;
+ wasser = "switch.crafting_giesskanne_relay";
+ brotbox = {
+ minutes = 10;
+ pump = "switch.crafting_brotbox_pumpe";
+ sensor = "sensor.statistics_for_sensor_crafting_brotbox_soil_moisture";
+ };
in
{
- switch = [
- (tasmota_plug "Wasser" "plug")
- ];
- automation =
- [
- { alias = "Water the plant for ${toString seconds} seconds";
- trigger = [
- { # trigger at 20:00 no matter what
- # TODO: retry or run only if switch.wasser is available
- platform = "time";
- at = "20:00:00";
- }
- ];
- action =
- [
- {
- service = "homeassistant.turn_on";
- entity_id = [
- "switch.wasser"
- ];
- }
- { delay.seconds = seconds; }
- {
- service = "homeassistant.turn_off";
- entity_id = [
- "switch.wasser"
- ];
- }
- ];
- }
- { alias = "Always turn off water after ${toString (seconds * 2)}seconds";
- trigger = [
+ 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 = "Brotbox: water for ${toString brotbox.minutes} minutes every hour";
+ # trigger =
+ # { # Trigger once every hour at :42
+ # platform = "time_pattern";
+ # minutes = 42;
+ # };
+ # condition = {
+ # condition = "numeric_state";
+ # entity_id = brotbox.sensor;
+ # value_template = "{{ state_attr('${brotbox.sensor}', 'median') }}";
+ # below = 75;
+ # };
+ # action =
+ # [
+ # {
+ # service = "homeassistant.turn_on";
+ # entity_id = brotbox.pump;
+ # }
+ # { delay.minutes = brotbox.minutes; }
+ # {
+ # service = "homeassistant.turn_off";
+ # entity_id = brotbox.pump ;
+ # }
+ # ];
+ #}
+ { alias = "Brotbox: Always turn off water after ${toString (brotbox.minutes * 2)} minutes";
+ trigger =
{
platform = "state";
- entity_id = "switch.wasser";
+ entity_id = brotbox.pump;
to = "on";
- for.seconds = seconds*2;
- }
- ];
- action =
- [
+ for.minutes = brotbox.minutes*2;
+ };
+ action =
{
service = "homeassistant.turn_off";
- entity_id = [ "switch.wasser" ];
- }
- ];
- }
- ];
+ entity_id = brotbox.pump;
+ };
+ }
+
+ ##### Kaffeemaschine
+ { alias = "Water the plant for ${toString seconds} seconds";
+ trigger = [
+ { # trigger at 20:00 no matter what
+ # TODO: retry or run only if switch.wasser is available
+ platform = "time";
+ at = "20:00:00";
+ }
+ ];
+ action =
+ [
+ {
+ service = "homeassistant.turn_on";
+ entity_id = [
+ wasser
+ ];
+ }
+ { delay.seconds = seconds; }
+ {
+ service = "homeassistant.turn_off";
+ entity_id = [
+ wasser
+ ];
+ }
+ ];
+ }
+ { alias = "Always turn off water after ${toString (seconds * 2)}seconds";
+ trigger = [
+ {
+ platform = "state";
+ entity_id = wasser;
+ to = "on";
+ for.seconds = seconds*2;
+ }
+ ];
+ action =
+ [
+ {
+ service = "homeassistant.turn_off";
+ entity_id = [ wasser ];
+ }
+ ];
+ }
+ ];
+ };
}