diff options
Diffstat (limited to 'krebs/2configs/shack/glados/multi/wasser.nix')
-rw-r--r-- | krebs/2configs/shack/glados/multi/wasser.nix | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/krebs/2configs/shack/glados/multi/wasser.nix b/krebs/2configs/shack/glados/multi/wasser.nix new file mode 100644 index 00000000..9ca5e450 --- /dev/null +++ b/krebs/2configs/shack/glados/multi/wasser.nix @@ -0,0 +1,113 @@ +# uses: +# switch.crafting_giesskanne_relay +let + 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 +{ + 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 = brotbox.pump; + to = "on"; + for.minutes = brotbox.minutes*2; + }; + action = + { + service = "homeassistant.turn_off"; + 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 ]; + } + ]; + } + ]; + }; +} |