72 lines
1.8 KiB
Nix
72 lines
1.8 KiB
Nix
# 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";
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
}
|