diff options
| author | makefu <github@syntax-fehler.de> | 2019-09-06 01:07:20 +0200 | 
|---|---|---|
| committer | makefu <github@syntax-fehler.de> | 2019-09-06 01:08:32 +0200 | 
| commit | fce2c4275caf7df064fb13a4280291a9aefaef1f (patch) | |
| tree | b74e266f9b3776ff5b01e45ef68778fc1119bc61 | |
| parent | 39b1e08ad1358cc54527e9b87cb5fbc01349b62e (diff) | |
shack/glados: init shackopen and auto watering
| -rw-r--r-- | krebs/2configs/shack/glados/default.nix | 12 | ||||
| -rw-r--r-- | krebs/2configs/shack/glados/multi/shackopen.nix | 23 | ||||
| -rw-r--r-- | krebs/2configs/shack/glados/multi/wasser.nix | 65 | ||||
| -rw-r--r-- | krebs/2configs/shack/glados/sensors/power.nix | 2 | 
4 files changed, 99 insertions, 3 deletions
| diff --git a/krebs/2configs/shack/glados/default.nix b/krebs/2configs/shack/glados/default.nix index a984536bd..54e7aef5c 100644 --- a/krebs/2configs/shack/glados/default.nix +++ b/krebs/2configs/shack/glados/default.nix @@ -1,5 +1,7 @@  { config, pkgs, lib, ... }:  let +  shackopen = import ./multi/shackopen.nix; +  wasser = import ./multi/wasser.nix;  in {    services.nginx.virtualHosts."hass.shack".locations."/" = {      proxyPass = "http://localhost:8123"; @@ -81,17 +83,21 @@ in {            retain = true;          };        }; -      switch = []; +      switch = wasser.switch;        light =  [];        media_player = [          { platform = "mpd";            host = "lounge.mpd.shack";          }        ]; +        sensor =          [{ platform = "version"; }]          ++ (import ./sensors/hass.nix) -        ++ (import ./sensors/power.nix); +        ++ (import ./sensors/power.nix) +        ++ shackopen.sensor; + +      binary_sensor = shackopen.binary_sensor;        camera = []; @@ -123,7 +129,7 @@ in {        recorder = {};        sun = {}; -      automation = []; +      automation = wasser.automation;        device_tracker = [];      };    }; diff --git a/krebs/2configs/shack/glados/multi/shackopen.nix b/krebs/2configs/shack/glados/multi/shackopen.nix new file mode 100644 index 000000000..354405d06 --- /dev/null +++ b/krebs/2configs/shack/glados/multi/shackopen.nix @@ -0,0 +1,23 @@ +{ +  binary_sensor = [ +    { platform = "mqtt"; +      name = "Portal Lock"; +      device_class = "door"; +      state_topic = "portal/gateway/status"; +      availability_topic = "portal/gateway/lwt"; +      payload_on = "open"; +      payload_off = "closed"; +      payload_available = "online"; +      payload_not_available = "offline"; +    } +  ]; +  sensor = [ +    { platform = "mqtt"; +      name = "Keyholder"; +      state_topic = "portal/gateway/keyholder"; +      availability_topic = "portal/gateway/lwt"; +      payload_available = "online"; +      payload_not_available = "offline"; +    } +  ]; +} diff --git a/krebs/2configs/shack/glados/multi/wasser.nix b/krebs/2configs/shack/glados/multi/wasser.nix new file mode 100644 index 000000000..a2c80851b --- /dev/null +++ b/krebs/2configs/shack/glados/multi/wasser.nix @@ -0,0 +1,65 @@ +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; +  }; +in +{ +  switch = [ +    (tasmota_plug "Wasser" "plug") +  ]; +  automation = +  [ +    { alias = "Water the plant for 10 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 = 10; } +        { +          service = "homeassistant.turn_off"; +          entity_id =  [ +            "switch.wasser" +          ]; +        } +      ]; +    } +    { alias = "Always turn off water after 15 seconds"; +      trigger = [ +        { +          platform = "state"; +          entity_id = "switch.wasser"; +          to = "on"; +          for.seconds = 15; +        } +      ]; +      action = +      [ +        { +          service = "homeassistant.turn_off"; +          entity_id =  [ "switch.wasser" ]; +        } +      ]; +    } +  ]; +} diff --git a/krebs/2configs/shack/glados/sensors/power.nix b/krebs/2configs/shack/glados/sensors/power.nix index 940888c7d..1aa250a19 100644 --- a/krebs/2configs/shack/glados/sensors/power.nix +++ b/krebs/2configs/shack/glados/sensors/power.nix @@ -2,6 +2,7 @@ let    power_x = name: phase:    { platform = "mqtt";      name = "${phase} ${name}"; +    # device_class = "power";      state_topic = "/power/total/${phase}/${name}";      availability_topic = "/power/lwt";      payload_available = "Online"; @@ -10,6 +11,7 @@ let    power_consumed =    { platform = "mqtt";      name = "Power Consumed"; +    #device_class = "power";      state_topic = "/power/total/consumed";      availability_topic = "/power/lwt";      payload_available = "Online"; | 
