# Provides:
#   timer
#   automation
#   script

# Needs:
#  sensor.zigbee_btn1_click
#  notify.telegrambot
let
  button = "sensor.zigbee_btn2_click";
in {
  timer.kurzzeitwecker =
  {
    name = "Zigbee Kurzzeitwecker";
    duration = 300;
  };
    script.add_5_minutes_to_kurzzeitwecker =
    {
        alias = "Add 5 minutes to kurzzeitwecker";
        sequence = [
          { service = "timer.pause";
          entity_id = "timer.kurzzeitwecker";
        }
        { service = "timer.start";
          data_template = {
            entity_id = "timer.kurzzeitwecker";
            duration = ''
              {% set r = state_attr('timer.kurzzeitwecker', 'remaining') ~ '-0000' %}
              {% set t = strptime(r, '%H:%M:%S.%f%z') %}
              {{ (as_timestamp(t) + 300) | timestamp_custom('%H:%M:%S', false) }}
            '';
        };
      }
    ];
  };
  automation =
  [
    {
      alias = "Start Timer 5min";
      trigger = {
        platform = "state";
        entity_id = button;
        to =  "single";
      };
      condition =
          { condition = "state";
            entity_id = "timer.kurzzeitwecker";
            state =  "idle";
          };

      action = [
        { service = "timer.start";
          entity_id =  "timer.kurzzeitwecker";
          data.duration = "00:05:00";
        }
        {
          service = "notify.telegrambot";
          data.message = "Timer gestartet {{state_attr('timer.kurzzeitwecker', 'remaining') }}, verbleibend ";
        }
      ];
    }
    {
      alias = "Add Timer 5min";
      trigger = {
        platform = "state";
        entity_id = button;
        to =  "single";
      };
      condition =
          { condition = "state";
            entity_id = "timer.kurzzeitwecker";
            state =  "active";
          };

      action = [
        { service = "homeassistant.turn_on";
          entity_id =  "script.add_5_minutes_to_kurzzeitwecker";
        }
        {
          service = "notify.telegrambot";
          data.message = ''Timer um 5 minuten verlängert, {{ state_attr('timer.kurzzeitwecker', 'remaining') | truncate(9,True," ") }} verbleibend '';
        }
      ];
    }
    {
      alias = "Stop timer on double click";
      trigger = [
        {
          platform = "state";
          entity_id = button;
          to =  "double";
        }
        {
          platform = "state";
          entity_id = button;
          to =  "triple";
        }
      ];
      condition =
      {
        condition = "state";
        entity_id = "timer.kurzzeitwecker";
        state =  "active";
      };

      action = [
        {
          service = "timer.cancel";
          entity_id =  "timer.kurzzeitwecker";
        }
        {
          service = "notify.telegrambot";
          data.message = "Timer gestoppt, abgebrochen";
        }
      ];
    }
    {
      alias = "Timer Finished";
      trigger = {
        platform = "event";
        event_type = "timer.finished";
        event_data.entity_id = "timer.kurzzeitwecker";
      };
      action = [
        {
          service = "notify.telegrambot";
          data.message = "Timer beendet";
        }
      ];
    }
  ];
}