fix nuc stuff
This commit is contained in:
149
modules/nixos/homeassistant/automations/lightswitch/default.nix
Normal file
149
modules/nixos/homeassistant/automations/lightswitch/default.nix
Normal file
@@ -0,0 +1,149 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
namespace,
|
||||
...
|
||||
}:
|
||||
with lib;
|
||||
let
|
||||
inherit (lib.${namespace}) mkOpt;
|
||||
cfg = config.${namespace}.services.home-assistant.automation;
|
||||
|
||||
automationToYaml = lscfg: ''
|
||||
- id: '${toString lscfg.id}'
|
||||
alias: ${lscfg.alias}
|
||||
description: '${lscfg.description}'
|
||||
triggers:
|
||||
- device_id: ${lscfg.mqttDeviceId}
|
||||
domain: mqtt
|
||||
id: on press
|
||||
subtype: on_press
|
||||
trigger: device
|
||||
type: action
|
||||
- device_id: ${lscfg.mqttDeviceId}
|
||||
domain: mqtt
|
||||
id: off press
|
||||
subtype: off_press
|
||||
trigger: device
|
||||
type: action
|
||||
- device_id: ${lscfg.mqttDeviceId}
|
||||
domain: mqtt
|
||||
id: up press
|
||||
subtype: up_press
|
||||
trigger: device
|
||||
type: action
|
||||
- device_id: ${lscfg.mqttDeviceId}
|
||||
domain: mqtt
|
||||
id: down press
|
||||
subtype: down_press
|
||||
trigger: device
|
||||
type: action
|
||||
- device_id: ${lscfg.mqttDeviceId}
|
||||
domain: mqtt
|
||||
id: on hold
|
||||
subtype: on_hold
|
||||
trigger: device
|
||||
type: action
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- on press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
data:
|
||||
brightness_pct: ${toString lscfg.brightnessPercent}
|
||||
kelvin: ${toString lscfg.lightTemperature}
|
||||
transition: ${toString lscfg.transitionTime}
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id:
|
||||
- ${lscfg.lightEntityId}
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- off press
|
||||
sequence:
|
||||
- action: light.turn_off
|
||||
data:
|
||||
transition: ${toString lscfg.transitionTime}
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id:
|
||||
- ${lscfg.lightEntityId}
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- up press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
data:
|
||||
brightness_step_pct: ${toString lscfg.brightnessStepPercent}
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id: ${lscfg.lightEntityId}
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- down press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
data:
|
||||
brightness_step_pct: ${toString (-lscfg.brightnessStepPercent)}
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id: ${lscfg.lightEntityId}
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- on hold
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
data:
|
||||
brightness_pct: 100
|
||||
rgb_color:
|
||||
- 255
|
||||
- 0
|
||||
- 0
|
||||
transition: 0
|
||||
metadata: {}
|
||||
target:
|
||||
entity_id:
|
||||
- ${lscfg.lightEntityId}
|
||||
mode: single
|
||||
'';
|
||||
|
||||
lightswitchAutomations = concatStringsSep "\n" (
|
||||
mapAttrsToList (_: automationToYaml) cfg.lightswitch
|
||||
);
|
||||
in
|
||||
{
|
||||
options.${namespace}.services.home-assistant.automation = {
|
||||
lightswitch = mkOpt (types.attrsOf (
|
||||
types.submodule {
|
||||
options = {
|
||||
id = mkOpt types.int 0 "Automation Id";
|
||||
alias = mkOpt types.str "" "Alias/Friendly Name";
|
||||
description = mkOpt types.str "" "Automation Description";
|
||||
mqttDeviceId = mkOpt types.str "" "mqtt device id of the sitch";
|
||||
deviceAction = mkOpt types.str "" "device action";
|
||||
lightEntityId = mkOpt types.str "" "home assistant entity id for the lights";
|
||||
transitionTime = mkOpt types.int 2 "light transition time in seconds";
|
||||
brightnessPercent = mkOpt types.int 100 "brightness percentage when turned on";
|
||||
lightTemperature = mkOpt types.int 6000 "light temperature when turned on";
|
||||
brightnessStepPercent = mkOpt types.int 10 "dimmer step in brightness percent";
|
||||
};
|
||||
}
|
||||
)) { } "lightswitch automations";
|
||||
};
|
||||
|
||||
config = lib.mkIf config.${namespace}.services.home-assistant.enable {
|
||||
environment.etc."hass/lightswitch-automations.yaml" = {
|
||||
text = lightswitchAutomations;
|
||||
user = "hass";
|
||||
group = "hass";
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user