From 60a492344bf224982978fd6765aaaadbaf4effc1 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Wed, 30 Dec 2020 11:02:21 +0100
Subject: [PATCH] ma ham: update config

---
 makefu/2configs/ham/automation/giesskanne.nix | 102 ++++++++++++++++++
 .../2configs/ham/automation/light_buttons.nix |  19 +++-
 makefu/2configs/ham/automation/urlaub.nix     |  44 ++++++++
 .../wohnzimmer_rf_fernbedienung.nix           |  61 +++++++++++
 makefu/2configs/ham/default.nix               |   9 +-
 makefu/2configs/ham/light/arbeitszimmer.nix   |  24 +++++
 makefu/2configs/ham/light/schlafzimmer.nix    |  33 +-----
 makefu/2configs/ham/light/wohnzimmer.nix      |  24 +++++
 8 files changed, 280 insertions(+), 36 deletions(-)
 create mode 100644 makefu/2configs/ham/automation/giesskanne.nix
 create mode 100644 makefu/2configs/ham/automation/urlaub.nix
 create mode 100644 makefu/2configs/ham/automation/wohnzimmer_rf_fernbedienung.nix
 create mode 100644 makefu/2configs/ham/light/arbeitszimmer.nix
 create mode 100644 makefu/2configs/ham/light/wohnzimmer.nix

diff --git a/makefu/2configs/ham/automation/giesskanne.nix b/makefu/2configs/ham/automation/giesskanne.nix
new file mode 100644
index 000000000..d89ea595b
--- /dev/null
+++ b/makefu/2configs/ham/automation/giesskanne.nix
@@ -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 ];
+          }
+        ];
+      }
+    ];
+  };
+}
diff --git a/makefu/2configs/ham/automation/light_buttons.nix b/makefu/2configs/ham/automation/light_buttons.nix
index 7b43027f1..32d134ecc 100644
--- a/makefu/2configs/ham/automation/light_buttons.nix
+++ b/makefu/2configs/ham/automation/light_buttons.nix
@@ -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")
   ];
 }
diff --git a/makefu/2configs/ham/automation/urlaub.nix b/makefu/2configs/ham/automation/urlaub.nix
new file mode 100644
index 000000000..a6b9be96f
--- /dev/null
+++ b/makefu/2configs/ham/automation/urlaub.nix
@@ -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 ];
+          }
+        ];
+      }
+    ];
+  };
+}
diff --git a/makefu/2configs/ham/automation/wohnzimmer_rf_fernbedienung.nix b/makefu/2configs/ham/automation/wohnzimmer_rf_fernbedienung.nix
new file mode 100644
index 000000000..f06094662
--- /dev/null
+++ b/makefu/2configs/ham/automation/wohnzimmer_rf_fernbedienung.nix
@@ -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
+}
diff --git a/makefu/2configs/ham/default.nix b/makefu/2configs/ham/default.nix
index 1cd06f6a5..d610fa5c1 100644
--- a/makefu/2configs/ham/default.nix
+++ b/makefu/2configs/ham/default.nix
@@ -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 = {
diff --git a/makefu/2configs/ham/light/arbeitszimmer.nix b/makefu/2configs/ham/light/arbeitszimmer.nix
new file mode 100644
index 000000000..bc60678b3
--- /dev/null
+++ b/makefu/2configs/ham/light/arbeitszimmer.nix
@@ -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;
+    }
+  ];
+}
diff --git a/makefu/2configs/ham/light/schlafzimmer.nix b/makefu/2configs/ham/light/schlafzimmer.nix
index 274fd60a3..e5370e3f8 100644
--- a/makefu/2configs/ham/light/schlafzimmer.nix
+++ b/makefu/2configs/ham/light/schlafzimmer.nix
@@ -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;
-    }
   ];
 }
diff --git a/makefu/2configs/ham/light/wohnzimmer.nix b/makefu/2configs/ham/light/wohnzimmer.nix
new file mode 100644
index 000000000..bc9c2778a
--- /dev/null
+++ b/makefu/2configs/ham/light/wohnzimmer.nix
@@ -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;
+    }
+  ];
+}