summaryrefslogtreecommitdiffstats
path: root/makefu/2configs/bureautomation/automation/philosophische-tuer.nix
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2021-03-17 20:03:16 +0100
committermakefu <github@syntax-fehler.de>2021-03-17 20:03:16 +0100
commit7351675feb9d1fca70d583d0fc6601137ea08a0f (patch)
tree16f6f3c5deeda5c15cd5122b83dbd650582ef794 /makefu/2configs/bureautomation/automation/philosophische-tuer.nix
parent53351c89441ed7843472b7292949180d491614b1 (diff)
ma bureautomation: prototype philosophische-tuer
Diffstat (limited to 'makefu/2configs/bureautomation/automation/philosophische-tuer.nix')
-rw-r--r--makefu/2configs/bureautomation/automation/philosophische-tuer.nix128
1 files changed, 59 insertions, 69 deletions
diff --git a/makefu/2configs/bureautomation/automation/philosophische-tuer.nix b/makefu/2configs/bureautomation/automation/philosophische-tuer.nix
index 9ccb81348..8c3fed6de 100644
--- a/makefu/2configs/bureautomation/automation/philosophische-tuer.nix
+++ b/makefu/2configs/bureautomation/automation/philosophische-tuer.nix
@@ -16,93 +16,83 @@ let
sha256 = "0bm0697fyf6s05c6yw6y25cyck04rlxj1dgazkq8mfqk6756v2bq";
};
samples = user: lib.mapAttrsToList
- (file: _: ''"${prefix}/${name}/${user}/${file}"'')
+ (file: _: ''"${prefix}/${user}/${file}"'')
(builtins.readDir (toString ( recordrepo+ "/recordings/${user}")));
random_tuerspruch = ''{{'' + (lib.concatStringsSep "," ((samples "Felix") ++ (samples "Sofia") ++ (samples "Markus"))) + ''| random}}''; # TODO read from derivation
in
{
- systemd.tmpfiles.rules = [
- "d ${audiodir} - hass hass - -"
- ];
-
systemd.services.copy-philosophische-tuersounds = {
description = "copy philosophische tuer";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Type = "oneshot";
- User = "hass";
- WorkingDirectory = audiodir;
ExecStart = pkgs.writeDash "update-samples" ''
- cp -vr ${recordrepo} ${audiodir}
+ rm -rf "${audiodir}"
+ cp -vr "${recordrepo}/recordings" "${audiodir}"
'';
};
};
-
- services.home-assistant.config.media_extractor = { };
- services.home-assistant.config.script."philosophische_tuer" = {
- alias = "Durchsage der philosophischen Tür";
- sequence = [
- { service = "media_player.play_media";
- data = {
- entity_id = "media_player.mpd";
- media_content_type = "playlist";
- media_content_id = "ansage";
+ services.home-assistant.config = {
+ media_extractor = { };
+ script."philosophische_tuer" = {
+ alias = "Durchsage der philosophischen Tür";
+ sequence = [
+ { service = "media_player.play_media";
+ data = {
+ entity_id = "media_player.mpd";
+ media_content_type = "playlist";
+ media_content_id = "ansage";
+ };
+ }
+ { delay.seconds = 5; }
+ { service = "media_extractor.play_media";
+ entity_id = "media_player.mpd";
+ data_template = {
+ media_content_id = random_tuerspruch;
+ media_content_type = "MUSIC";
+ };
+ }
+ ];
+ };
+ automation =
+ [
+ {
+ alias = "Tür offen seit ${toString short_threshold} sekunden";
+ trigger =
+ { platform = "state";
+ entity_id = sensor;
+ to = "on";
+ for.seconds = 60;
};
+ action = [
+ { service = "homeassistant.turn_on";
+ entity_id = "script.philosophische_tuer";
+ }
+ ];
}
- { delay.seconds = 5; }
- { service = "media_extractor.play_media";
- entity_id = "media_player.mpd";
- data_template = {
- media_content_id = random_tuerspruch;
- media_content_type = "MUSIC";
+ {
+ alias = "Tür offen seit ${toString long_threshold} minuten";
+ trigger =
+ { platform = "state";
+ entity_id = sensor;
+ to = "on";
+ for.minutes = long_threshold;
};
+
+ action = [
+ { service = "homeassistant.turn_on";
+ entity_id = "script.philosophische_tuer" ;
+ }
+ { service = "tts.google_say";
+ entity_id = "media_player.mpd";
+ data_template = {
+ message = "BEEP BOOP - Die Tür ist schon seit ${toString long_threshold} Minuten offen! Student Nummer {{ range(1,500) | random }}, bitte schliesse die Tür";
+ language = "de";
+ };
+ }
+ ];
}
];
};
- services.home-assistant.config.automation =
- [
- {
- alias = "Tür offen seit ${toString short_threshold} sekunden";
- trigger =
- { platform = "state";
- entity_id = sensor;
- to = "on";
- for.seconds = 60;
- };
- condition = { };
- action = [
- { service = "homeassistant.turn_on";
- entity_id = [
- "script.philosophische_tuer"
- ];
- }
- ];
- }
- {
- alias = "Tür offen seit ${toString long_threshold} minuten";
- trigger =
- { platform = "state";
- entity_id = sensor;
- to = "on";
- for.minutes = long_threshold;
- };
- condition = { };
-
- action = [
- { service = "homeassistant.turn_on";
- entity_id = [
- "script.philosophische_tuer"
- ];
- }
- { service = "tts.google_say";
- entity_id = "media_player.mpd";
- data_template = {
- message = "BEEP BOOP - Die Tür ist schon seit ${toString long_threshold} Minuten offen! Student Nummer {{ range(1,500) | random }}, bitte schliesse die Tür";
- language = "de";
- };
- }
- ];
- }
- ];
}