From 34b220961fffac0629c66a876d169e58ded9a0df Mon Sep 17 00:00:00 2001 From: makefu Date: Wed, 18 Nov 2020 20:50:43 +0100 Subject: [PATCH] ma bureautomation: move to 20.09 style imports --- .../automation/bureau-shutdown.nix | 159 +++++++++--------- .../automation/hass-restart.nix | 65 +++---- .../bureautomation/automation/nachtlicht.nix | 71 ++++---- .../automation/schlechteluft.nix | 130 +++++++------- .../bureautomation/binary_sensor/buttons.nix | 9 +- .../bureautomation/binary_sensor/motion.nix | 27 +-- 2configs/bureautomation/camera/comic.nix | 23 +-- 2configs/bureautomation/camera/stuttgart.nix | 42 ++--- .../bureautomation/camera/verkehrskamera.nix | 31 ++-- 2configs/bureautomation/default.nix | 92 +++++----- .../bureautomation/device_tracker/openwrt.nix | 29 ++-- 2configs/bureautomation/light/buzzer.nix | 12 +- 2configs/bureautomation/light/statuslight.nix | 14 +- 2configs/bureautomation/multi/10h_timers.nix | 16 +- 2configs/bureautomation/multi/README.md | 3 - 2configs/bureautomation/multi/aramark.nix | 21 ++- .../bureautomation/multi/daily-standup.nix | 83 ++++----- 2configs/bureautomation/multi/frosch.nix | 158 ++++++++--------- 2configs/bureautomation/multi/matrix.nix | 106 ++++++------ 2configs/bureautomation/multi/mittagessen.nix | 93 +++++----- 2configs/bureautomation/person/team.nix | 147 ++++++++-------- .../bureautomation/script/multi_blink.nix | 73 ++++---- 2configs/bureautomation/sensor/airquality.nix | 21 ++- 2configs/bureautomation/sensor/espeasy.nix | 12 +- 2configs/bureautomation/sensor/influxdb.nix | 18 -- 2configs/bureautomation/sensor/outside.nix | 54 +++--- .../sensor/tasmota_firmware.nix | 5 +- 2configs/bureautomation/switch/rfbridge.nix | 16 +- .../bureautomation/switch/tasmota_switch.nix | 17 +- 29 files changed, 795 insertions(+), 752 deletions(-) delete mode 100644 2configs/bureautomation/multi/README.md delete mode 100644 2configs/bureautomation/sensor/influxdb.nix diff --git a/2configs/bureautomation/automation/bureau-shutdown.nix b/2configs/bureautomation/automation/bureau-shutdown.nix index b9aa710..f4c10ad 100644 --- a/2configs/bureautomation/automation/bureau-shutdown.nix +++ b/2configs/bureautomation/automation/bureau-shutdown.nix @@ -1,84 +1,87 @@ -[ - { alias = "Turn on Fernseher on group home"; - trigger = { - platform = "state"; - entity_id = "group.team"; - from = "not_home"; - to = "home"; - for.seconds = 30; - }; - action = [ - { - service = "homeassistant.turn_on"; - entity_id = [ - "switch.fernseher" - "switch.feuer" - ]; - } - { - service = "media_player.kodi_call_method"; - data = { - entity_id = "media_player.kodi"; - method = "Player.Open"; - item.partymode = "music"; - }; - } - { - service = "notify.telegrambot"; - data = { - title = "Bureau Startup"; - message = "Das Büro wurde eröffnet"; - }; - } - ]; - } - { alias = "Turn off Fernseher after last in group left"; - trigger = [ - { # trigger when movement was detected at the time +{ + services.home-assistant.config.automation = + [ + { alias = "Turn on Fernseher on group home"; + trigger = { platform = "state"; entity_id = "group.team"; - from = "home"; - to = "not_home"; - } - { # trigger at 18:00 no matter what - # to avoid 'everybody left before 18:00:00' - platform = "time"; - at = "18:00:00"; - } - ]; - action = [ - { - service = "homeassistant.turn_off"; - entity_id = [ - "switch.fernseher" - "switch.feuer" - "light.status_felix" - "light.status_daniel" - ]; - } - { - service = "notify.telegrambot"; - data_template = { - title = "Bureau Shutdown"; - message = "All devices are turned off due to {{ trigger.platform }}"; - }; - } - ]; - condition = - { condition = "and"; - conditions = [ + from = "not_home"; + to = "home"; + for.seconds = 30; + }; + action = [ { - condition = "time"; - before = "06:30:00"; #only turn off between 6:30 and 18:00 - after = "18:00:00"; - # weekday = [ "mon" "tue" "wed" "thu" "fri" ]; + service = "homeassistant.turn_on"; + entity_id = [ + "switch.fernseher" + "switch.feuer" + ]; } - { # if anybody is still there - condition = "state"; - entity_id = "group.team"; - state = "not_home"; + { + service = "media_player.kodi_call_method"; + data = { + entity_id = "media_player.kodi"; + method = "Player.Open"; + item.partymode = "music"; + }; + } + { + service = "notify.telegrambot"; + data = { + title = "Bureau Startup"; + message = "Das Büro wurde eröffnet"; + }; } ]; - }; - } -] + } + { alias = "Turn off Fernseher after last in group left"; + trigger = [ + { # trigger when movement was detected at the time + platform = "state"; + entity_id = "group.team"; + from = "home"; + to = "not_home"; + } + { # trigger at 18:00 no matter what + # to avoid 'everybody left before 18:00:00' + platform = "time"; + at = "18:00:00"; + } + ]; + action = [ + { + service = "homeassistant.turn_off"; + entity_id = [ + "switch.fernseher" + "switch.feuer" + "light.status_felix" + "light.status_daniel" + ]; + } + { + service = "notify.telegrambot"; + data_template = { + title = "Bureau Shutdown"; + message = "All devices are turned off due to {{ trigger.platform }}"; + }; + } + ]; + condition = + { condition = "and"; + conditions = [ + { + condition = "time"; + before = "06:30:00"; #only turn off between 6:30 and 18:00 + after = "18:00:00"; + # weekday = [ "mon" "tue" "wed" "thu" "fri" ]; + } + { # if anybody is still there + condition = "state"; + entity_id = "group.team"; + state = "not_home"; + } + ]; + }; + } + ]; +} diff --git a/2configs/bureautomation/automation/hass-restart.nix b/2configs/bureautomation/automation/hass-restart.nix index be16f69..3b3ce05 100644 --- a/2configs/bureautomation/automation/hass-restart.nix +++ b/2configs/bureautomation/automation/hass-restart.nix @@ -1,31 +1,34 @@ -[ - { alias = "State on HA start-up"; - trigger = { - platform = "homeassistant"; - event = "start"; - }; - action = [ - # Startup State - { service = "mqtt.publish"; - data = { - topic = "/bam/sonoffs/cmnd/state"; - payload = ""; - }; - } - # Firmware Version - { service = "mqtt.publish"; - data = { - topic = "/bam/sonoffs/cmnd/status"; - payload = "2"; - }; - } - # Will trigger restart of all devices! - #{ service = "mqtt.publish"; - # data = { - # topic = "sonoffs/cmnd/SetOption59"; # configure sending state on power change - # payload = "1"; - # }; - #} - ]; - } -] +{ + services.home-assistant.config.automation = + [ + { alias = "State on HA start-up"; + trigger = { + platform = "homeassistant"; + event = "start"; + }; + action = [ + # Startup State + { service = "mqtt.publish"; + data = { + topic = "/bam/sonoffs/cmnd/state"; + payload = ""; + }; + } + # Firmware Version + { service = "mqtt.publish"; + data = { + topic = "/bam/sonoffs/cmnd/status"; + payload = "2"; + }; + } + # Will trigger restart of all devices! + #{ service = "mqtt.publish"; + # data = { + # topic = "sonoffs/cmnd/SetOption59"; # configure sending state on power change + # payload = "1"; + # }; + #} + ]; + } + ]; +} diff --git a/2configs/bureautomation/automation/nachtlicht.nix b/2configs/bureautomation/automation/nachtlicht.nix index ec6fa20..ade8941 100644 --- a/2configs/bureautomation/automation/nachtlicht.nix +++ b/2configs/bureautomation/automation/nachtlicht.nix @@ -1,35 +1,38 @@ -[ - # TODO: trigger if it is before dusk and somebody arives but nachtlichter are - # off from last day - # TODO: do not have nachtlicht turned on at night - { - alias = "Turn on Nachtlicht at dusk"; # when it gets dim - trigger = - { platform = "numeric_state"; - entity_id = "sun.sun"; - value_template = "{{ state.attributes.elevation }}"; - below = 10; +{ + services.home-assistant.config.automation = + [ + # TODO: trigger if it is before dusk and somebody arives but nachtlichter are + # off from last day + # TODO: do not have nachtlicht turned on at night + { + alias = "Turn on Nachtlicht at dusk"; # when it gets dim + trigger = + { platform = "numeric_state"; + entity_id = "sun.sun"; + value_template = "{{ state.attributes.elevation }}"; + below = 10; - }; - action = - { service = "homeassistant.turn_on"; - entity_id = [ "group.nachtlicht" ]; - }; - } - { - alias = "Turn off Nachtlicht at dawn"; - trigger = - { platform = "sun"; - event = "sunrise"; - offset = "01:30:00"; # on dawn - }; - # TODO: when somebody is still in the buero - # condition = - #{ - #}; - action = - { service = "homeassistant.turn_off"; - entity_id = [ "group.nachtlicht" ]; - }; - } -] + }; + action = + { service = "homeassistant.turn_on"; + entity_id = [ "group.nachtlicht" ]; + }; + } + { + alias = "Turn off Nachtlicht at dawn"; + trigger = + { platform = "sun"; + event = "sunrise"; + offset = "01:30:00"; # on dawn + }; + # TODO: when somebody is still in the buero + # condition = + #{ + #}; + action = + { service = "homeassistant.turn_off"; + entity_id = [ "group.nachtlicht" ]; + }; + } + ]; +} diff --git a/2configs/bureautomation/automation/schlechteluft.nix b/2configs/bureautomation/automation/schlechteluft.nix index 3703347..ea1d445 100644 --- a/2configs/bureautomation/automation/schlechteluft.nix +++ b/2configs/bureautomation/automation/schlechteluft.nix @@ -1,71 +1,75 @@ let long_threshold = 30; -in [ - { - alias = "Bad Air Alarm 60 seconds"; - trigger = - { platform = "numeric_state"; - entity_id = "sensor.air_quality"; - above = 1523; - for.seconds = 60; - }; - condition = { - condition = "and"; - conditions = [ - { condition = "state"; - entity_id = "group.team"; - state = "home"; - } - { condition = "time"; - after = "06:00:00"; - before = "20:00:00"; +in +{ + services.home-assistant.config.automation = + [ + { + alias = "Bad Air Alarm 60 seconds"; + trigger = + { platform = "numeric_state"; + entity_id = "sensor.air_quality"; + above = 1523; + for.seconds = 60; + }; + condition = { + condition = "and"; + conditions = [ + { condition = "state"; + entity_id = "group.team"; + state = "home"; + } + { condition = "time"; + after = "06:00:00"; + before = "20:00:00"; + } + ]; + }; + + action = [ + { service = "homeassistant.turn_on"; + entity_id = [ + "script.schlechteluft" + ]; } ]; - }; - - action = [ - { service = "homeassistant.turn_on"; - entity_id = [ - "script.schlechteluft" + } + { + alias = "Bad Air Alarm ${toString long_threshold} Minutes"; + trigger = + { platform = "numeric_state"; + entity_id = "sensor.air_quality"; + above = 1523; + for.minutes = long_threshold; + }; + condition = { + condition = "and"; + conditions = [ + { condition = "state"; + entity_id = "group.team"; + state = "home"; + } + { condition = "time"; + after = "06:00:00"; + before = "20:00:00"; + } ]; - } - ]; - } - { - alias = "Bad Air Alarm ${toString long_threshold} Minutes"; - trigger = - { platform = "numeric_state"; - entity_id = "sensor.air_quality"; - above = 1523; - for.minutes = long_threshold; - }; - condition = { - condition = "and"; - conditions = [ - { condition = "state"; - entity_id = "group.team"; - state = "home"; + }; + + action = [ + { service = "homeassistant.turn_on"; + entity_id = [ + "script.schlechteluft" + ]; } - { condition = "time"; - after = "06:00:00"; - before = "20:00:00"; + { service = "tts.google_say"; + entity_id = "media_player.mpd"; + data_template = { + message = "BEEP BEEP - Die luft ist schon ${toString long_threshold} Minuten schlecht! Student Nummer {{ range(1,500) | random }}, öffne ein Fenster."; + language = "de"; + }; } ]; - }; - - action = [ - { service = "homeassistant.turn_on"; - entity_id = [ - "script.schlechteluft" - ]; - } - { service = "tts.google_say"; - entity_id = "media_player.mpd"; - data_template = { - message = "BEEP BEEP - Die luft ist schon ${toString long_threshold} Minuten schlecht! Student Nummer {{ range(1,500) | random }}, öffne ein Fenster."; - language = "de"; - }; - } - ]; - } -] + } + ]; +} diff --git a/2configs/bureautomation/binary_sensor/buttons.nix b/2configs/bureautomation/binary_sensor/buttons.nix index e23c4a3..20590a6 100644 --- a/2configs/bureautomation/binary_sensor/buttons.nix +++ b/2configs/bureautomation/binary_sensor/buttons.nix @@ -12,6 +12,9 @@ let # expire_after = "5"; #expire after 5 seconds qos = 1; }; -in [ - (tasmota_button "RedButton" "redbutton") -] +in { + services.home-assistant.config.binary_sensor = + [ + (tasmota_button "RedButton" "redbutton") + ]; +} diff --git a/2configs/bureautomation/binary_sensor/motion.nix b/2configs/bureautomation/binary_sensor/motion.nix index ad8fab0..0c5a808 100644 --- a/2configs/bureautomation/binary_sensor/motion.nix +++ b/2configs/bureautomation/binary_sensor/motion.nix @@ -1,12 +1,15 @@ -[ - { platform = "mqtt"; - device_class = "motion"; - name = "Motion"; - state_topic = "/bam/easy2/movement/Switch"; - payload_on = "1"; - payload_off = "0"; - availability_topic = "/bam/easy2/tele/LWT"; - payload_available = "Online"; - payload_not_available = "Offline"; - } -] +{ + services.home-assistant.config.binary_sensor = + [ + { platform = "mqtt"; + device_class = "motion"; + name = "Motion"; + state_topic = "/bam/easy2/movement/Switch"; + payload_on = "1"; + payload_off = "0"; + availability_topic = "/bam/easy2/tele/LWT"; + payload_available = "Online"; + payload_not_available = "Offline"; + } + ]; +} diff --git a/2configs/bureautomation/camera/comic.nix b/2configs/bureautomation/camera/comic.nix index a523d03..ae24760 100644 --- a/2configs/bureautomation/camera/comic.nix +++ b/2configs/bureautomation/camera/comic.nix @@ -1,10 +1,13 @@ -[ - { name = "Poorly Drawn Lines"; - platform = "generic"; - still_image_url = http://127.0.0.1:8123/local/lines.png ; - } - { name = "XKCD"; - platform = "generic"; - still_image_url = http://127.0.0.1:8123/local/xkcd.png ; - } -] +{ + services.home-assistant.config.camera = + [ + { name = "Poorly Drawn Lines"; + platform = "generic"; + still_image_url = http://127.0.0.1:8123/local/lines.png ; + } + { name = "XKCD"; + platform = "generic"; + still_image_url = http://127.0.0.1:8123/local/xkcd.png ; + } + ]; +} diff --git a/2configs/bureautomation/camera/stuttgart.nix b/2configs/bureautomation/camera/stuttgart.nix index 78cbeb3..0badcb2 100644 --- a/2configs/bureautomation/camera/stuttgart.nix +++ b/2configs/bureautomation/camera/stuttgart.nix @@ -5,22 +5,26 @@ let inherit name still_image_url; platform = "generic"; }; -in [ - ( cam "Max-Eyth-See" https://www.wav-stuttgart.de/webcam/_/webcam1.jpg ) - ( cam "Wilhelma" http://webcam.wilhelma.de/webcam02/webcam02.jpg ) - ( cam "Marktplatz" https://webcam.stuttgart.de/wcam007/current.jpg ) - ( cam "Schoch Areal" https://webcam.stuttgart.de/wcam004/current.jpg ) - ( cam "Leuze" https://webcam.stuttgart.de/wcam005/current.jpg ) - ( cam "Straße Wilhelma" https://webcam.stuttgart.de/wcam006/current.jpg ) - ( cam "Fernsehturm 1" http://webcam.fernsehturmstuttgart.com/current.jpg ) - ( cam "Fernsehturm 2" http://webcam.fernsehturmstuttgart.com/current2.jpg ) - ( cam "Feuerbach Lemberg" http://www.regio7.de/handy/current.jpg ) - ( cam "Flughafen Stuttgart 1" http://webcam.flughafen-stuttgart.de/Flughafen_Stuttgart_Webcam2.jpg ) - ( cam "Flughafen Stuttgart 2" http://webcam.flughafen-stuttgart.de/Flughafen_Stuttgart_Webcam5.jpg ) - ( cam "Flughafen Stuttgart 3" http://webcam.flughafen-stuttgart.de/Flughafen_Stuttgart_Webcam7.jpg ) - ( cam "S21 1" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Turm-03/s21-turm03.jpg ) - ( cam "S21 2" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Turm-02/s21-turm-02.jpg ) - ( cam "S21 3" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Turm-01/s21-turm-01.jpg ) - ( cam "S21 4" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Jaegerstrasse-Nordkopf/s21-jaegerstrassse-nordkopf.jpg ) - ( cam "S21 5" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Bahndirektion-Nord/S21-Bundesbahndirektion-Nord.jpg ) -] +in +{ + services.home-assistant.config.camera = + [ + ( cam "Max-Eyth-See" https://www.wav-stuttgart.de/webcam/_/webcam1.jpg ) + ( cam "Wilhelma" http://webcam.wilhelma.de/webcam02/webcam02.jpg ) + ( cam "Marktplatz" https://webcam.stuttgart.de/wcam007/current.jpg ) + ( cam "Schoch Areal" https://webcam.stuttgart.de/wcam004/current.jpg ) + ( cam "Leuze" https://webcam.stuttgart.de/wcam005/current.jpg ) + ( cam "Straße Wilhelma" https://webcam.stuttgart.de/wcam006/current.jpg ) + ( cam "Fernsehturm 1" http://webcam.fernsehturmstuttgart.com/current.jpg ) + ( cam "Fernsehturm 2" http://webcam.fernsehturmstuttgart.com/current2.jpg ) + ( cam "Feuerbach Lemberg" http://www.regio7.de/handy/current.jpg ) + ( cam "Flughafen Stuttgart 1" http://webcam.flughafen-stuttgart.de/Flughafen_Stuttgart_Webcam2.jpg ) + ( cam "Flughafen Stuttgart 2" http://webcam.flughafen-stuttgart.de/Flughafen_Stuttgart_Webcam5.jpg ) + ( cam "Flughafen Stuttgart 3" http://webcam.flughafen-stuttgart.de/Flughafen_Stuttgart_Webcam7.jpg ) + ( cam "S21 1" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Turm-03/s21-turm03.jpg ) + ( cam "S21 2" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Turm-02/s21-turm-02.jpg ) + ( cam "S21 3" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Turm-01/s21-turm-01.jpg ) + ( cam "S21 4" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Jaegerstrasse-Nordkopf/s21-jaegerstrassse-nordkopf.jpg ) + ( cam "S21 5" http://webcam-bahnprojekt-stuttgart-ulm.de/S21-Bahndirektion-Nord/S21-Bundesbahndirektion-Nord.jpg ) + ]; +} diff --git a/2configs/bureautomation/camera/verkehrskamera.nix b/2configs/bureautomation/camera/verkehrskamera.nix index f2dfdcd..f09dc94 100644 --- a/2configs/bureautomation/camera/verkehrskamera.nix +++ b/2configs/bureautomation/camera/verkehrskamera.nix @@ -1,14 +1,17 @@ -[ - { name = "Baumarkt"; - platform = "generic"; - still_image_url = http://t4915209254324-p80-c0-h6jv2afnujcoftrcstsafb45kdrqv4buy.webdirect.mdex.de/oneshotimage ;# baumarkt - } - { name = "Autobahn Heilbronn"; - platform = "generic"; - still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K10 ; - } - { name = "Autobahn Singen"; - platform = "generic"; - still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K11 ; - } -] +{ + services.home-assistant.config.camera = + [ + { name = "Baumarkt"; + platform = "generic"; + still_image_url = http://t4915209254324-p80-c0-h6jv2afnujcoftrcstsafb45kdrqv4buy.webdirect.mdex.de/oneshotimage ;# baumarkt + } + { name = "Autobahn Heilbronn"; + platform = "generic"; + still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K10 ; + } + { name = "Autobahn Singen"; + platform = "generic"; + still_image_url = https://api.svz-bw.de/v2/verkehrskameras/kameras/K11 ; + } + ]; +} diff --git a/2configs/bureautomation/default.nix b/2configs/bureautomation/default.nix index cd598f0..7e8b6a4 100644 --- a/2configs/bureautomation/default.nix +++ b/2configs/bureautomation/default.nix @@ -1,20 +1,51 @@ { config, pkgs, lib, ... }: let kodi-host = "192.168.8.11"; - ten_hours = import ./multi/10h_timers.nix { inherit lib; }; # provides: timer automation script - mittagessen = import ./multi/mittagessen.nix { inherit lib; }; # provides: automation script - matrix = import ./multi/matrix.nix { inherit lib; }; # provides: matrix automation - frosch = import ./multi/frosch.nix { inherit lib; }; # provides: sensor binary_sensor switch light script automation - aramark = import ./multi/aramark.nix { inherit lib; }; # provides: sensor binary_sensor - standup = import ./multi/daily-standup.nix { inherit lib; }; # provides: automation script in { imports = [ ./ota.nix ./comic-updater.nix ./puppy-proxy.nix + + # hass config + ## complex configs + ./multi/daily-standup.nix + ./multi/aramark.nix + ./multi/matrix.nix + ./multi/frosch.nix + ./multi/mittagessen.nix + ./multi/10h_timers.nix + + ./switch/tasmota_switch.nix + ./switch/rfbridge.nix + + ./light/statuslight.nix + ./light/buzzer.nix + + ./script/multi_blink.nix + + ./binary_sensor/buttons.nix + ./binary_sensor/motion.nix + + # ./sensor/pollen.nix requires dwd_pollen + ./sensor/espeasy.nix + ./sensor/airquality.nix + ./sensor/outside.nix + ./sensor/tasmota_firmware.nix + + ./camera/verkehrskamera.nix + ./camera/comic.nix + ./camera/stuttgart.nix + ./automation/bureau-shutdown.nix + ./automation/nachtlicht.nix + ./automation/schlechteluft.nix + ./automation/hass-restart.nix + ./device_tracker/openwrt.nix + ./person/team.nix ]; networking.firewall.allowedTCPPorts = [ 8123 ]; state = [ "/var/lib/hass/known_devices.yaml" ]; + services.home-assistant = { enable = true; autoExtraComponents = true; @@ -51,7 +82,6 @@ in { source = "hass"; }; }; - matrix = matrix.matrix; mqtt = { discovery = true; discovery_prefix = "homeassistant"; @@ -73,13 +103,6 @@ in { retain = true; }; }; - switch = (import ./switch/tasmota_switch.nix) - ++ frosch.switch - ++ (import ./switch/rfbridge.nix); - light = (import ./light/statuslight.nix) - ++ (import ./light/buzzer.nix) - ++ frosch.light; - timer = ten_hours.timer; notify = [ { platform = "kodi"; @@ -93,7 +116,7 @@ in { (builtins.fromJSON (builtins.readFile )).allowed_chat_ids 0; } - ] ++ matrix.notify; + ]; media_player = [ { platform = "kodi"; host = kodi-host; @@ -102,37 +125,10 @@ in { host = "127.0.0.1"; } ]; - script = lib.fold lib.recursiveUpdate {} [ - ((import ./script/multi_blink.nix) {inherit lib;}) - frosch.script - ten_hours.script - mittagessen.script - # standup.script - ]; - binary_sensor = - (import ./binary_sensor/buttons.nix) - ++ (import ./binary_sensor/motion.nix) - ++ frosch.binary_sensor - ++ aramark.binary_sensor; - sensor = [] - ++ [{ platform = "version"; }] # pyhaversion - # ++ (import ./sensor/pollen.nix) - ++ (import ./sensor/espeasy.nix) - ++ (import ./sensor/airquality.nix) - ++ ((import ./sensor/outside.nix) {inherit lib;}) - ++ (import ./sensor/influxdb.nix) - ++ (import ./sensor/tasmota_firmware.nix) - ++ frosch.sensor - ++ aramark.sensor; + sensor = [{ platform = "version"; }]; # pyhaversion - camera = - (import ./camera/verkehrskamera.nix) - ++ (import ./camera/comic.nix) - ++ (import ./camera/stuttgart.nix); - person = - (import ./person/team.nix ); frontend = { }; http = { @@ -263,16 +259,6 @@ in { # feedreader.urls = [ "http://www.heise.de/security/rss/news-atom.xml" ]; # we don't use imports because the expressions do not merge in # home-assistant - automation = (import ./automation/bureau-shutdown.nix) - ++ (import ./automation/nachtlicht.nix) - ++ (import ./automation/schlechteluft.nix) - ++ (import ./automation/hass-restart.nix) - ++ ten_hours.automation - ++ matrix.automation - # ++ standup.automation - ++ frosch.automation - ++ mittagessen.automation; - device_tracker = (import ./device_tracker/openwrt.nix ); }; }; } diff --git a/2configs/bureautomation/device_tracker/openwrt.nix b/2configs/bureautomation/device_tracker/openwrt.nix index 5de2164..6b01441 100644 --- a/2configs/bureautomation/device_tracker/openwrt.nix +++ b/2configs/bureautomation/device_tracker/openwrt.nix @@ -1,16 +1,19 @@ # requires `opkg install luci-mod-rpc` on router # see https://www.home-assistant.io/components/luci/ -[ - { platform = "luci"; - host = "192.168.8.1"; - username = "root"; - password = import ; - interval_seconds = 30; # instead of 12seconds - consider_home = 300; # 5 minutes timeout - new_device_defaults = { - track_new_devices = true; - hide_if_away = false; - }; - } -] +{ + services.home-assistant.config.device_tracker = + [ + { platform = "luci"; + host = "192.168.8.1"; + username = "root"; + password = import ; + interval_seconds = 30; # instead of 12seconds + consider_home = 300; # 5 minutes timeout + new_device_defaults = { + track_new_devices = true; + hide_if_away = false; + }; + } + ]; +} diff --git a/2configs/bureautomation/light/buzzer.nix b/2configs/bureautomation/light/buzzer.nix index 2067e47..bc2ba4e 100644 --- a/2configs/bureautomation/light/buzzer.nix +++ b/2configs/bureautomation/light/buzzer.nix @@ -21,8 +21,10 @@ let optimistic = false; qos = 0; }; -in -[ -# (tasmota_pwm "RedButton LED" "redbutton" 1 1023) #LED PWM1 - (tasmota_pwm "RedButton Buzzer" "redbutton" 2 512) #buzzer PWM2 -] +in { + services.home-assistant.config.light = + [ + # (tasmota_pwm "RedButton LED" "redbutton" 1 1023) #LED PWM1 + (tasmota_pwm "RedButton Buzzer" "redbutton" 2 512) #buzzer PWM2 + ]; +} diff --git a/2configs/bureautomation/light/statuslight.nix b/2configs/bureautomation/light/statuslight.nix index c9d3017..de65a23 100644 --- a/2configs/bureautomation/light/statuslight.nix +++ b/2configs/bureautomation/light/statuslight.nix @@ -48,9 +48,11 @@ let 12 # fire pattern ]; }; -in -[ - (tasmota_rgb "Status Felix" "status1") - (tasmota_rgb "Status Daniel" "status2") - (tasmota_rgb "Buslicht" "buslicht") -] +in { + services.home-assistant.config.light = + [ + (tasmota_rgb "Status Felix" "status1") + (tasmota_rgb "Status Daniel" "status2") + (tasmota_rgb "Buslicht" "buslicht") + ]; +} diff --git a/2configs/bureautomation/multi/10h_timers.nix b/2configs/bureautomation/multi/10h_timers.nix index a30fb28..6edcde4 100644 --- a/2configs/bureautomation/multi/10h_timers.nix +++ b/2configs/bureautomation/multi/10h_timers.nix @@ -198,11 +198,13 @@ let ]; in { - timer =lib.fold lib.recursiveUpdate {} - (map tmr_10h persons); - automation = (lib.flatten (map automation_10h persons)); - script = lib.fold lib.recursiveUpdate {} ( - (map announce_user persons) ++ - (map zu_lange_user persons) - ); + services.home-assistant.config = { + timer =lib.fold lib.recursiveUpdate {} + (map tmr_10h persons); + automation = (lib.flatten (map automation_10h persons)); + script = lib.fold lib.recursiveUpdate {} ( + (map announce_user persons) ++ + (map zu_lange_user persons) + ); + }; } diff --git a/2configs/bureautomation/multi/README.md b/2configs/bureautomation/multi/README.md deleted file mode 100644 index baad87f..0000000 --- a/2configs/bureautomation/multi/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Combination Folder -files return a dictionary of different types used in home-assistant instead of -a single thing. diff --git a/2configs/bureautomation/multi/aramark.nix b/2configs/bureautomation/multi/aramark.nix index ebe2cde..45fadb0 100644 --- a/2configs/bureautomation/multi/aramark.nix +++ b/2configs/bureautomation/multi/aramark.nix @@ -12,13 +12,16 @@ let ((aramark "${menue}/price" "${menue} Preis") // { unit_of_measurement = "€"; }) ]; in -{ - sensor = (aramark_menue "Menü 1") - ++ (aramark_menue "Menü 2") - ++ (aramark_menue "Mercato") - ++ (aramark_menue "Aktion"); - binary_sensor = - [ - ((aramark "pommes" "Pommes" ) // { payload_on = "True"; payload_off = "False"; }) - ]; + { + services.home-assistant.config = + { + sensor = (aramark_menue "Menü 1") + ++ (aramark_menue "Menü 2") + ++ (aramark_menue "Mercato") + ++ (aramark_menue "Aktion"); + binary_sensor = + [ + ((aramark "pommes" "Pommes" ) // { payload_on = "True"; payload_off = "False"; }) + ]; + }; } diff --git a/2configs/bureautomation/multi/daily-standup.nix b/2configs/bureautomation/multi/daily-standup.nix index 38fb22c..063def1 100644 --- a/2configs/bureautomation/multi/daily-standup.nix +++ b/2configs/bureautomation/multi/daily-standup.nix @@ -1,4 +1,4 @@ -{ lib }: +{lib, ... }: let random_daily_text = ''{{ [ "Es ist so weit, es ist Standup Zeit!", @@ -9,46 +9,49 @@ let "Morgens, halb elf in Deutschland - das Standupchen" ] | random }}''; in { - script = - { "random_daily" = { - alias = "Random Daily Introduction"; + services.home-assistant.config = + { + script = + { "random_daily" = { + alias = "Random Daily Introduction"; - sequence = [ - { service = "media_player.play_media"; - data = { - entity_id = "media_player.mpd"; - media_content_type = "playlist"; - media_content_id = "ansage"; - }; - } - { delay.seconds = 5; } - { service = "tts.google_say"; - entity_id = "media_player.mpd"; - data_template = { - message = random_daily_text; - language = "de"; - }; - } - ]; - }; - }; - automation = [ - { - alias = "Daily Standup"; - trigger = { - platform = "time"; - at = "10:35:00"; + sequence = [ + { service = "media_player.play_media"; + data = { + entity_id = "media_player.mpd"; + media_content_type = "playlist"; + media_content_id = "ansage"; + }; + } + { delay.seconds = 5; } + { service = "tts.google_say"; + entity_id = "media_player.mpd"; + data_template = { + message = random_daily_text; + language = "de"; + }; + } + ]; }; - action = - [ - { service = "homeassistant.turn_on"; - entity_id = [ - "script.blitz_10s" - "script.random_daily" - ]; - } - ]; + }; + automation = [ + { + alias = "Daily Standup"; + trigger = { + platform = "time"; + at = "10:35:00"; + }; + action = + [ + { service = "homeassistant.turn_on"; + entity_id = [ + "script.blitz_10s" + "script.random_daily" + ]; + } + ]; - } - ]; + } + ]; + }; } diff --git a/2configs/bureautomation/multi/frosch.nix b/2configs/bureautomation/multi/frosch.nix index 816539d..61606d4 100644 --- a/2configs/bureautomation/multi/frosch.nix +++ b/2configs/bureautomation/multi/frosch.nix @@ -1,4 +1,4 @@ -{ lib }: +{lib, ... }: # needs: binary_sensor.pommes # notify.matrix_notify let @@ -17,83 +17,87 @@ let "Der Weltmarktpreis von Pommes ist durch verschiedene Weltkrisen leider so hoch, dass Aramark den Verkaufspreis verdoppeln musste.", "Vorfreude, schönste Freude, Freude bei Aramark. Pommes in die Schale rein, alle Kunden werden glücklich sein.", "In 15 Minuten ist es wieder so weit, es ist Pommes Zeit!"] | random }}''; -in { - sensor = [ - { platform = "mqtt"; - name = "frosch brightness"; - device_class = "illuminance"; - state_topic = "/bam/frosch/sensor/brightness/state"; - availability_topic = "/bam/frosch/status"; - payload_available = "online"; - payload_not_available = "offline"; - } - ]; - binary_sensor = [ - { platform = "mqtt"; - name = "frosch auge"; - state_topic = "/bam/frosch/binary_sensor/froschauge/state"; - availability_topic = "/bam/frosch/status"; - payload_available = "online"; - payload_not_available = "offline"; - } - ]; - switch = [ - { platform = "mqtt"; - name = "frosch blasen"; - state_topic = "/bam/frosch/switch/blasen/state"; - command_topic = "/bam/frosch/switch/blasen/command"; - availability_topic = "/bam/frosch/status"; - payload_available = "online"; - payload_not_available = "offline"; - } - ]; - light = []; - automation = [ - { alias = "Pommeszeit"; - trigger = { - platform = "time"; - at = "11:00:00"; +in +{ + services.home-assistant.config = + { + sensor = [ + { platform = "mqtt"; + name = "frosch brightness"; + device_class = "illuminance"; + state_topic = "/bam/frosch/sensor/brightness/state"; + availability_topic = "/bam/frosch/status"; + payload_available = "online"; + payload_not_available = "offline"; + } + ]; + binary_sensor = [ + { platform = "mqtt"; + name = "frosch auge"; + state_topic = "/bam/frosch/binary_sensor/froschauge/state"; + availability_topic = "/bam/frosch/status"; + payload_available = "online"; + payload_not_available = "offline"; + } + ]; + switch = [ + { platform = "mqtt"; + name = "frosch blasen"; + state_topic = "/bam/frosch/switch/blasen/state"; + command_topic = "/bam/frosch/switch/blasen/command"; + availability_topic = "/bam/frosch/status"; + payload_available = "online"; + payload_not_available = "offline"; + } + ]; + light = []; + automation = [ + { alias = "Pommeszeit"; + trigger = { + platform = "time"; + at = "11:00:00"; + }; + condition = { + condition = "state"; + entity_id = "binary_sensor.pommes"; # from multi/aramark.nix + state = "on"; + }; + action = [ + { service = "homeassistant.turn_on"; + entity_id = [ + "script.pommes_announce" + "script.seifenblasen_30s" # from script/multi_blink.nix + ]; + } + ]; + } + ]; + script = { + pommes_announce = { + alias = "Random Pommes announce"; + sequence = [ + { + service = "media_player.play_media"; + data = { + entity_id = "media_player.mpd"; + media_content_type = "playlist"; + media_content_id = "ansage"; + }; + } + { delay.seconds = 5; } + { + service = "tts.google_say"; + entity_id = "media_player.mpd"; + data_template = { + message = random_pommes; + language = "de"; + }; + } + { service = "notify.matrix_notify"; + data_template.message = random_pommes; + } + ]; }; - condition = { - condition = "state"; - entity_id = "binary_sensor.pommes"; # from multi/aramark.nix - state = "on"; - }; - action = [ - { service = "homeassistant.turn_on"; - entity_id = [ - "script.pommes_announce" - "script.seifenblasen_30s" # from script/multi_blink.nix - ]; - } - ]; - } - ]; - script = { - pommes_announce = { - alias = "Random Pommes announce"; - sequence = [ - { - service = "media_player.play_media"; - data = { - entity_id = "media_player.mpd"; - media_content_type = "playlist"; - media_content_id = "ansage"; - }; - } - { delay.seconds = 5; } - { - service = "tts.google_say"; - entity_id = "media_player.mpd"; - data_template = { - message = random_pommes; - language = "de"; - }; - } - { service = "notify.matrix_notify"; - data_template.message = random_pommes; - } - ]; }; }; } diff --git a/2configs/bureautomation/multi/matrix.nix b/2configs/bureautomation/multi/matrix.nix index 4fcfe8d..b9b8fc4 100644 --- a/2configs/bureautomation/multi/matrix.nix +++ b/2configs/bureautomation/multi/matrix.nix @@ -8,58 +8,62 @@ # name: my_command let mom_room = "!kTQjvTQvfVsvfEtmth:thales.citadel.team"; -in { - matrix = +in +{ + services.home-assistant.config = { - # secrets: - # homeserver, username, password - homeserver = "https://ext01.citadel.team"; - rooms = [ - mom_room + matrix = + { + # secrets: + # homeserver, username, password + homeserver = "https://ext01.citadel.team"; + rooms = [ + mom_room + ]; + commands = [ + { + # alternative: expression for regexp + word = "version"; + name = "version"; + } + { + word = "luftqualität"; + name = "luftqualitaet"; + } ]; - commands = [ - { - # alternative: expression for regexp - word = "version"; - name = "version"; - } - { - word = "luftqualität"; - name = "luftqualitaet"; - } - ]; - } // (builtins.fromJSON (builtins.readFile - )); - automation = [ - { - alias = "React to !version"; - trigger = { - platform = "event"; - event_type = "matrix_command"; - event_data.command = "version"; - }; - action = { - service = "notify.matrix_notify"; - data_template.message = "Running home-assistant {{states.sensor.current_version.state}}"; - }; - } - { - alias = "React to !luftqualität"; - trigger = { - platform = "event"; - event_type = "matrix_command"; - event_data.command = "luftqualitaet"; - }; - action = { - service = "notify.matrix_notify"; - data_template.message = ''Temp: {{states.sensor.notizen_temperature.state_with_unit | replace (" ","")}}, Hum:{{states.sensor.notizen_humidity.state_with_unit | replace (" ","")}}, airquality:{{states.sensor.air_quality.state_with_unit}}''; - }; - } + } // (builtins.fromJSON (builtins.readFile + )); + automation = [ + { + alias = "React to !version"; + trigger = { + platform = "event"; + event_type = "matrix_command"; + event_data.command = "version"; + }; + action = { + service = "notify.matrix_notify"; + data_template.message = "Running home-assistant {{states.sensor.current_version.state}}"; + }; + } + { + alias = "React to !luftqualität"; + trigger = { + platform = "event"; + event_type = "matrix_command"; + event_data.command = "luftqualitaet"; + }; + action = { + service = "notify.matrix_notify"; + data_template.message = ''Temp: {{states.sensor.notizen_temperature.state_with_unit | replace (" ","")}}, Hum:{{states.sensor.notizen_humidity.state_with_unit | replace (" ","")}}, airquality:{{states.sensor.air_quality.state_with_unit}}''; + }; + } - ]; - notify = [{ - name = "matrix_notify"; - platform = "matrix"; - default_room = mom_room; - }]; + ]; + notify = [{ + name = "matrix_notify"; + platform = "matrix"; + default_room = mom_room; + }]; + }; } diff --git a/2configs/bureautomation/multi/mittagessen.nix b/2configs/bureautomation/multi/mittagessen.nix index 2a9993e..52ec99a 100644 --- a/2configs/bureautomation/multi/mittagessen.nix +++ b/2configs/bureautomation/multi/mittagessen.nix @@ -38,52 +38,55 @@ let "Jetzt nur noch kurz die Mail fertig schreiben und schon kann es los gehen.", "Es ist 13 Uhr und die Mittagspause ist bald vorbei .... Kleiner Scherz, es ist erst 12:30, aber Ihr hättet auch nicht wirklich etwas verpasst.", "Hallo, es ist nun 12 Uhr 30! Dies entspricht der Essenszeit aller Büroinsassen. Bitte begebt euch zur Aramark Essensausgabe um euren menschlichen Bedürfnissen nachzukommen."] | random }}''; -in { - automation = [ - { alias = "Mittagessen"; - trigger = { - platform = "time"; - at = "12:30:00"; +in +{ + services.home-assistant.config = { + automation = [ + { alias = "Mittagessen"; + trigger = { + platform = "time"; + at = "12:30:00"; + }; + action = [ + { service = "homeassistant.turn_on"; + entity_id = [ + "script.mittagessen_announce" + "script.blitz_10s" + "script.mittagessenlicht" + ]; + } + ]; + } + ]; + script = { + mittagessenlicht = (flash_entity { + entity = "switch.bauarbeiterlampe"; + alias = "Bauarbeiterlampe Mittagessenlicht"; + delay = 1000; + count = 5; + }); + mittagessen_announce = { + alias = "Random Mittagessen announce"; + sequence = [ + { + service = "media_player.play_media"; + data = { + entity_id = "media_player.mpd"; + media_content_type = "playlist"; + media_content_id = "ansage"; + }; + } + { delay.seconds = 5; } + { + service = "tts.google_say"; + entity_id = "media_player.mpd"; + data_template = { + message = random_mittagessen; + language = "de"; + }; + } + ]; }; - action = [ - { service = "homeassistant.turn_on"; - entity_id = [ - "script.mittagessen_announce" - "script.blitz_10s" - "script.mittagessenlicht" - ]; - } - ]; - } - ]; - script = { - mittagessenlicht = (flash_entity { - entity = "switch.bauarbeiterlampe"; - alias = "Bauarbeiterlampe Mittagessenlicht"; - delay = 1000; - count = 5; - }); - mittagessen_announce = { - alias = "Random Mittagessen announce"; - sequence = [ - { - service = "media_player.play_media"; - data = { - entity_id = "media_player.mpd"; - media_content_type = "playlist"; - media_content_id = "ansage"; - }; - } - { delay.seconds = 5; } - { - service = "tts.google_say"; - entity_id = "media_player.mpd"; - data_template = { - message = random_mittagessen; - language = "de"; - }; - } - ]; }; }; } diff --git a/2configs/bureautomation/person/team.nix b/2configs/bureautomation/person/team.nix index 2a15aba..124e855 100644 --- a/2configs/bureautomation/person/team.nix +++ b/2configs/bureautomation/person/team.nix @@ -1,72 +1,75 @@ -[ - { name = "Thorsten"; - id = 1; - device_trackers = [ - "device_tracker.thorsten_phone" - #"device_tracker.thorsten_arbeitphone" - ]; - } - { name = "Felix"; - id = 2; - device_trackers = [ - "device_tracker.felix_phone" - "device_tracker.felix_laptop" - ]; - } - { name = "Ecki"; - id = 3; - device_trackers = [ - "device_tracker.ecki_phone" - "device_tracker.ecki_tablet" - ]; - } - { name = "Daniel"; - id = 4; - device_trackers = [ - "device_tracker.daniel_phone" - ]; - } - { name = "Thierry"; - id = 5; - device_trackers = [ - "device_tracker.thierry_phone" - ]; - } - { name = "Frank"; - id = 6; - device_trackers = [ - "device_tracker.frank_phone" - ]; - } - { name = "Carsten"; - id = 7; - device_trackers = [ - "device_tracker.carsten_phone" - ]; - } - { name = "Emeka"; - id = 8; - device_trackers = [ - "device_tracker.emeka_phone" - ]; - } - { name = "Sabine"; - id = 9; - device_trackers = [ - "device_tracker.sabine_phone" - ]; - } - { name = "Tobias"; - id = 10; - device_trackers = [ - "device_tracker.tobias_phone" - ]; - } - { name = "Tancrede"; - id = 11; - device_trackers = [ - "device_tracker.tancrede_phone" - "device_tracker.tancrede_laptop" - ]; - } -] +{ + services.home-assistant.config.person = + [ + { name = "Thorsten"; + id = 1; + device_trackers = [ + "device_tracker.thorsten_phone" + #"device_tracker.thorsten_arbeitphone" + ]; + } + { name = "Felix"; + id = 2; + device_trackers = [ + "device_tracker.felix_phone" + "device_tracker.felix_laptop" + ]; + } + { name = "Ecki"; + id = 3; + device_trackers = [ + "device_tracker.ecki_phone" + "device_tracker.ecki_tablet" + ]; + } + { name = "Daniel"; + id = 4; + device_trackers = [ + "device_tracker.daniel_phone" + ]; + } + { name = "Thierry"; + id = 5; + device_trackers = [ + "device_tracker.thierry_phone" + ]; + } + { name = "Frank"; + id = 6; + device_trackers = [ + "device_tracker.frank_phone" + ]; + } + { name = "Carsten"; + id = 7; + device_trackers = [ + "device_tracker.carsten_phone" + ]; + } + { name = "Emeka"; + id = 8; + device_trackers = [ + "device_tracker.emeka_phone" + ]; + } + { name = "Sabine"; + id = 9; + device_trackers = [ + "device_tracker.sabine_phone" + ]; + } + { name = "Tobias"; + id = 10; + device_trackers = [ + "device_tracker.tobias_phone" + ]; + } + { name = "Tancrede"; + id = 11; + device_trackers = [ + "device_tracker.tancrede_phone" + "device_tracker.tancrede_laptop" + ]; + } + ]; +} diff --git a/2configs/bureautomation/script/multi_blink.nix b/2configs/bureautomation/script/multi_blink.nix index e6acdc3..753918f 100644 --- a/2configs/bureautomation/script/multi_blink.nix +++ b/2configs/bureautomation/script/multi_blink.nix @@ -19,39 +19,42 @@ let ) count); }; in { - buzz_red_led = (flash_entity { - entity = "light.redbutton_buzzer"; - alias = "Red Button Buzz"; - count = 4; - }); - buzz_red_led_fast = (flash_entity { - entity = "light.redbutton_buzzer"; - delay = 250; - count = 2; - alias = "Red Button Buzz fast"; - }); - blitz_10s = (flash_entity { - entity = "switch.blitzdings"; - delay = 10000; - count = 1; - alias = "blitz for 10 seconds"; - }); - blasen_10s = (flash_entity { - entity = "switch.frosch_blasen"; - delay = 10000; - count = 1; - alias = "blasen for 10 seconds"; - }); - blasen_30s = (flash_entity { - entity = "switch.frosch_blasen"; - delay = 30000; - count = 1; - alias = "blasen for 30 seconds"; - }); - schlechteluft = (flash_entity { - entity = "switch.bauarbeiterlampe"; - alias = "Schlechte Luft Lampe 5 secs"; - delay = 5000; - count = 1; - }); + services.home-assistant.config.script = + { + buzz_red_led = (flash_entity { + entity = "light.redbutton_buzzer"; + alias = "Red Button Buzz"; + count = 4; + }); + buzz_red_led_fast = (flash_entity { + entity = "light.redbutton_buzzer"; + delay = 250; + count = 2; + alias = "Red Button Buzz fast"; + }); + blitz_10s = (flash_entity { + entity = "switch.blitzdings"; + delay = 10000; + count = 1; + alias = "blitz for 10 seconds"; + }); + blasen_10s = (flash_entity { + entity = "switch.frosch_blasen"; + delay = 10000; + count = 1; + alias = "blasen for 10 seconds"; + }); + blasen_30s = (flash_entity { + entity = "switch.frosch_blasen"; + delay = 30000; + count = 1; + alias = "blasen for 30 seconds"; + }); + schlechteluft = (flash_entity { + entity = "switch.bauarbeiterlampe"; + alias = "Schlechte Luft Lampe 5 secs"; + delay = 5000; + count = 1; + }); + }; } diff --git a/2configs/bureautomation/sensor/airquality.nix b/2configs/bureautomation/sensor/airquality.nix index 217fa95..7d95c3c 100644 --- a/2configs/bureautomation/sensor/airquality.nix +++ b/2configs/bureautomation/sensor/airquality.nix @@ -1,9 +1,12 @@ -[ - # coming from 2configs/stats/telegraf/ - { platform = "mqtt"; - name = "Air Quality"; - state_topic = "/telegraf/wbob/airquality"; - value_template = "{{ value_json.fields.value }}"; - unit_of_measurement = "VOC"; - } -] +{ + services.home-assistant.config.sensor = + [ + # coming from 2configs/stats/telegraf/ + { platform = "mqtt"; + name = "Air Quality"; + state_topic = "/telegraf/wbob/airquality"; + value_template = "{{ value_json.fields.value }}"; + unit_of_measurement = "VOC"; + } + ]; +} diff --git a/2configs/bureautomation/sensor/espeasy.nix b/2configs/bureautomation/sensor/espeasy.nix index 4b78ee8..c68f39f 100644 --- a/2configs/bureautomation/sensor/espeasy.nix +++ b/2configs/bureautomation/sensor/espeasy.nix @@ -24,8 +24,10 @@ let payload_available = "Online"; payload_not_available = "Offline"; }; -in -(espeasy_dht22 "easy1") ++ -(espeasy_dht22 "easy2") ++ [ - (espeasy_ds18 "easy3" ) -] +in { + services.home-assistant.config.sensor = + (espeasy_dht22 "easy1") ++ + (espeasy_dht22 "easy2") ++ [ + (espeasy_ds18 "easy3" ) + ]; +} diff --git a/2configs/bureautomation/sensor/influxdb.nix b/2configs/bureautomation/sensor/influxdb.nix deleted file mode 100644 index 820a56c..0000000 --- a/2configs/bureautomation/sensor/influxdb.nix +++ /dev/null @@ -1,18 +0,0 @@ -[ - #{ platform = "influxdb"; - # queries = [ - # { name = "mean value of feinstaub P1"; - # where = '' "node" = 'esp8266-1355142' ''; - # measurement = "feinstaub"; - # database = "telegraf"; - # field = "P1"; - # } - # { name = "mean value of feinstaub P2"; - # where = '' "node" = 'esp8266-1355142' ''; - # measurement = "feinstaub"; - # database = "telegraf"; - # field = "P2"; - # } - # ]; - #} -] diff --git a/2configs/bureautomation/sensor/outside.nix b/2configs/bureautomation/sensor/outside.nix index 596473f..b5d25ec 100644 --- a/2configs/bureautomation/sensor/outside.nix +++ b/2configs/bureautomation/sensor/outside.nix @@ -1,25 +1,29 @@ -{lib,...}: [ - { platform = "darksky"; - api_key = lib.removeSuffix "\n" - (builtins.readFile ); - language = "de"; - monitored_conditions = [ - "summary" "icon" - "nearest_storm_distance" "precip_probability" - "precip_intensity" - "temperature" # "temperature_high" "temperature_low" - "apparent_temperature" - "hourly_summary" # next 24 hours text - "humidity" - "pressure" - "uv_index" - ]; - units = "si" ; - scan_interval = "00:30:00"; - } - { platform = "luftdaten"; - name = "Ditzingen"; - sensorid = "5341"; - monitored_conditions = [ "P1" "P2" ]; - } - ] +{lib,...}: +{ + services.home-assistant.config.sensor = + [ + { platform = "darksky"; + api_key = lib.removeSuffix "\n" + (builtins.readFile ); + language = "de"; + monitored_conditions = [ + "summary" "icon" + "nearest_storm_distance" "precip_probability" + "precip_intensity" + "temperature" # "temperature_high" "temperature_low" + "apparent_temperature" + "hourly_summary" # next 24 hours text + "humidity" + "pressure" + "uv_index" + ]; + units = "si" ; + scan_interval = "00:30:00"; + } + { platform = "luftdaten"; + name = "Ditzingen"; + sensorid = "5341"; + monitored_conditions = [ "P1" "P2" ]; + } + ]; +} diff --git a/2configs/bureautomation/sensor/tasmota_firmware.nix b/2configs/bureautomation/sensor/tasmota_firmware.nix index 1a4738e..f5f063d 100644 --- a/2configs/bureautomation/sensor/tasmota_firmware.nix +++ b/2configs/bureautomation/sensor/tasmota_firmware.nix @@ -9,8 +9,11 @@ let payload_not_available= "Offline"; }; in +{ + services.home-assistant.config.sensor = map tasmota_firmware [ "plug" "plug2" "plug3" "plug4" "plug5" "status1" "status2" "buslicht" "rfbridge" - ] + ]; +} diff --git a/2configs/bureautomation/switch/rfbridge.nix b/2configs/bureautomation/switch/rfbridge.nix index 1336549..9b9de77 100644 --- a/2configs/bureautomation/switch/rfbridge.nix +++ b/2configs/bureautomation/switch/rfbridge.nix @@ -8,10 +8,12 @@ let payload_available= "Online"; payload_not_available= "Offline"; }; -in -[ - (bridge "Nachtlicht A" "#414551" "#414554") - (bridge "Nachtlicht B" "#415151" "#415154") - (bridge "Nachtlicht C" "#415451" "#415454") - (bridge "Nachtlicht D" "#41551F" "#415514") -] +in { + services.home-assistant.config.switch = + [ + (bridge "Nachtlicht A" "#414551" "#414554") + (bridge "Nachtlicht B" "#415151" "#415154") + (bridge "Nachtlicht C" "#415451" "#415454") + (bridge "Nachtlicht D" "#41551F" "#415514") + ]; +} diff --git a/2configs/bureautomation/switch/tasmota_switch.nix b/2configs/bureautomation/switch/tasmota_switch.nix index 115bae0..6c5f6b8 100644 --- a/2configs/bureautomation/switch/tasmota_switch.nix +++ b/2configs/bureautomation/switch/tasmota_switch.nix @@ -13,10 +13,13 @@ let retain = false; qos = 1; }; -in [ - (tasmota_plug "Bauarbeiterlampe" "plug") - (tasmota_plug "Blitzdings" "plug2") - (tasmota_plug "Fernseher" "plug3") - (tasmota_plug "Feuer" "plug4") - (tasmota_plug "Blaulicht" "plug5") -] +in { + services.home-assistant.config.switch = + [ + (tasmota_plug "Bauarbeiterlampe" "plug") + (tasmota_plug "Blitzdings" "plug2") + (tasmota_plug "Fernseher" "plug3") + (tasmota_plug "Feuer" "plug4") + (tasmota_plug "Blaulicht" "plug5") + ]; +}