# 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 ];
          }
        ];
      }
    ];
  };
}
