From 2c6cc5f340280524a626e3791686b590540e960d Mon Sep 17 00:00:00 2001 From: Malte Brandy Date: Fri, 11 Mar 2022 01:10:01 +0100 Subject: [PATCH] fix only_lights --- nixos/roles/home-assistant/default.nix | 12 ++++++------ nixos/roles/home-assistant/jinja.nix | 5 ++++- test.nix | 1 - 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/nixos/roles/home-assistant/default.nix b/nixos/roles/home-assistant/default.nix index 74d1a991..fe982743 100644 --- a/nixos/roles/home-assistant/default.nix +++ b/nixos/roles/home-assistant/default.nix @@ -34,7 +34,7 @@ flat = { title = "Wohnungsmodus"; name = "flat"; - options = {inherit active vacation only_lights;}; + options = {inherit active vacation;}; }; wohnzimmer = { title = "Wohnzimmermodus"; @@ -49,7 +49,7 @@ schlafzimmer = { title = "Schlafzimmermodus"; name = "schlafzimmer"; - options = {inherit empty heat active force_active;}; + options = {inherit empty heat active force_active only_lights;}; }; }; fenster = map (name: "binary_sensor.${name}") @@ -398,7 +398,7 @@ in { { service = "input_number.set_value"; target.entity_id = "input_number.target_temperature_wohnzimmer"; - data.value = jinja.if' (jinja.isState (util.modeSelectEntity modes.wohnzimmer) "empty") "18" "23"; + data.value = jinja.if' (jinja.isStates (util.modeSelectEntity modes.wohnzimmer) ["empty" "only_lights"]) "18" "23"; } ]; } @@ -409,7 +409,7 @@ in { { service = "input_number.set_value"; target.entity_id = "input_number.target_temperature_schlafzimmer"; - data.value = jinja.if' (jinja.isState (util.modeSelectEntity modes.schlafzimmer) "empty") "18" "20.5"; + data.value = jinja.if' (jinja.isStates (util.modeSelectEntity modes.schlafzimmer) ["empty" "only_lights"]) "18" "20.5"; } ]; } @@ -423,7 +423,7 @@ in { { service = jinja.if' (jinja.or - (jinja.isState (util.modeSelectEntity modes.wohnzimmer) "force_active") + (jinja.isStates (util.modeSelectEntity modes.wohnzimmer) ["force_active" "only_lights"]) (jinja.and (jinja.isState (util.modeSelectEntity modes.wohnzimmer) "active") "state_attr('sun.sun', 'elevation') < 6")) @@ -443,7 +443,7 @@ in { { service = jinja.if' (jinja.or - (jinja.isState (util.modeSelectEntity modes.schlafzimmer) "force_active") + (jinja.isStates (util.modeSelectEntity modes.schlafzimmer) ["force_active" "only_lights"]) (jinja.and (jinja.isState (util.modeSelectEntity modes.schlafzimmer) "active") "state_attr('sun.sun', 'elevation') < 6")) diff --git a/nixos/roles/home-assistant/jinja.nix b/nixos/roles/home-assistant/jinja.nix index 61661b14..8b0c4613 100644 --- a/nixos/roles/home-assistant/jinja.nix +++ b/nixos/roles/home-assistant/jinja.nix @@ -1,4 +1,6 @@ -lib: rec { +lib: let + inherit (builtins) foldl'; +in rec { case = default: attrs: '' {% if ${lib.concatStringsSep "\n{% elseif " (lib.mapAttrsToList (condition: result: "${condition} %}\n ${result}") attrs)} {% else %} @@ -9,4 +11,5 @@ lib: rec { or = lhs: rhs: "(${lhs} or ${rhs})"; and = lhs: rhs: "(${lhs} and ${rhs})"; isState = entity: state: "is_state('${entity}','${state}')"; + isStates = entity: states: foldl' or "false" (map (isState entity) states); } diff --git a/test.nix b/test.nix index 94ae689b..af6c3afe 100644 --- a/test.nix +++ b/test.nix @@ -3,7 +3,6 @@ let in { pre-commit-check = nix-pre-commit-hooks.run { src = ./.; - excludes = ["nix/.*" "hardware-configuration.nix"]; hooks = { hlint.enable = true; alejandra.enable = true;