# uses:
#  sensor.btn1_click
#  sensor.btn2_click
let
  hlib = import ../lib;
  fly_swat = for: btn: method: incr: {
    alias = "Increment ${method} for ${for}";
    trigger = {
      platform = "state";
      entity_id = "sensor.${btn}_click";
      to = method;
    };
    action = builtins.genList (cnt: {
      service = "counter.increment";
      data.entity_id = "counter.${for}_fliegen";
    }) incr;
  };
in
{
  services.home-assistant.config =
  {
    counter = {
      felix_fliegen = {};
      misa_fliegen = {};
    };
    automation = [
      (fly_swat "misa"  "btn1" "single" 1)
      (fly_swat "misa"  "btn1" "double" 2)
      (fly_swat "misa"  "btn1" "triple" 3)
      (fly_swat "felix"  "btn2" "single" 1)
      (fly_swat "felix"  "btn2" "double" 2)
      (fly_swat "felix"  "btn2" "triple" 3)
      {
        alias = "Send Fly Counter Update";
        trigger = [
          {
            platform = "state";
            entity_id = "counter.felix_fliegen";
          }
          {
            platform = "state";
            entity_id = "counter.misa_fliegen";
            #above = -1;
          }
        ];
        action = {
            service = "mqtt.publish";
            data_template = { # gauge-style
              payload = "{{ trigger.to_state.state }}";
              topic = "${hlib.prefix}/flycounter/{{ trigger.to_state.object_id }}";
            };
        };
      }
      {
        alias = "Reset Fly counters on midnight";
        trigger = {
          platform = "time";
          at = "01:00:00";
        };
        action = [
          { service = "counter.reset";
            data.entity_id = "counter.misa_fliegen";
          }
          { service = "counter.reset";
            data.entity_id = "counter.felix_fliegen";
          }
        ];
      }
    ];
  };
}