From 910686f65623aaccfcf55b91b538441bfbbec5d9 Mon Sep 17 00:00:00 2001 From: makefu Date: Mon, 24 Feb 2020 16:55:34 +0100 Subject: ma ham/esphome: init --- makefu/2configs/ham/multi/esphome.nix | 45 +++++++++ makefu/2configs/ham/multi/kurzzeitwecker.nix | 132 +++++++++++++++++++++++++++ 2 files changed, 177 insertions(+) create mode 100644 makefu/2configs/ham/multi/esphome.nix create mode 100644 makefu/2configs/ham/multi/kurzzeitwecker.nix (limited to 'makefu/2configs/ham/multi') diff --git a/makefu/2configs/ham/multi/esphome.nix b/makefu/2configs/ham/multi/esphome.nix new file mode 100644 index 000000000..8ca12d899 --- /dev/null +++ b/makefu/2configs/ham/multi/esphome.nix @@ -0,0 +1,45 @@ +# provides: +# switch +# automation +# binary_sensor +# sensor +# input_select +# timer +let + inherit (import ../lib) esphome; + sonoff_s20 = host: { + sensor = [ + (esphome.ip { inherit host;}) + (esphome.wifi { inherit host;}) + (esphome.temp { inherit host;}) + (esphome.hum { inherit host;}) + ]; + binary_sensor = [ + (esphome.btn { inherit host;}) + ]; + light = [ + (esphome.monoled { inherit host;}) + ]; + switch = [ + (esphome.relay { inherit host;}) + (esphome.restart { inherit host;}) + ]; + }; + dusche = sonoff_s20 "dusche_plug"; + schlafzimmer = sonoff_s20 "schlafzimmer_plug"; +in { + sensor = [ + (esphome.pressure {host = "dusche_plug";}) + ] + ++ dusche.sensor + ++ schlafzimmer.sensor; + binary_sensor = + dusche.binary_sensor + ++ schlafzimmer.binary_sensor; + light = + dusche.light + ++ schlafzimmer.light; + switch = + dusche.switch + ++ schlafzimmer.switch; +} diff --git a/makefu/2configs/ham/multi/kurzzeitwecker.nix b/makefu/2configs/ham/multi/kurzzeitwecker.nix new file mode 100644 index 000000000..03d0d5aac --- /dev/null +++ b/makefu/2configs/ham/multi/kurzzeitwecker.nix @@ -0,0 +1,132 @@ +# 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"; + } + ]; + } + ]; +} -- cgit v1.2.3 [cgit] Unable to lock slot /tmp/cgit/8c100000.lock: No such file or directory (2)