update hass components
This commit is contained in:
@@ -40,7 +40,7 @@ in
|
||||
vscode-extensions.yy0931.vscode-sqlite3-editor
|
||||
|
||||
# open-remote-ssh
|
||||
nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh
|
||||
# nix-vscode-extensions.open-vsx.jeanp413.open-remote-ssh
|
||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||
{
|
||||
name = "copilot-mcp";
|
||||
|
||||
236
modules/homeassistant/automations.yaml
Executable file
236
modules/homeassistant/automations.yaml
Executable file
@@ -0,0 +1,236 @@
|
||||
- id: '1740678838632'
|
||||
alias: Bedroom Light Switch
|
||||
description: ''
|
||||
triggers:
|
||||
- domain: mqtt
|
||||
device_id: 8b3a5a5b6faaba744c70ee940446a8af
|
||||
type: action
|
||||
subtype: on-press
|
||||
trigger: device
|
||||
id: on press
|
||||
- domain: mqtt
|
||||
device_id: 8b3a5a5b6faaba744c70ee940446a8af
|
||||
type: action
|
||||
subtype: off-press
|
||||
trigger: device
|
||||
id: off press
|
||||
- domain: mqtt
|
||||
device_id: 8b3a5a5b6faaba744c70ee940446a8af
|
||||
type: action
|
||||
subtype: up-press
|
||||
trigger: device
|
||||
id: up press
|
||||
- domain: mqtt
|
||||
device_id: 8b3a5a5b6faaba744c70ee940446a8af
|
||||
type: action
|
||||
subtype: down-press
|
||||
trigger: device
|
||||
id: down press
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- on press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 2
|
||||
brightness_pct: 100
|
||||
kelvin: 6004
|
||||
target:
|
||||
entity_id: light.bedroom_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- off press
|
||||
sequence:
|
||||
- action: light.turn_off
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 2
|
||||
target:
|
||||
entity_id: light.bedroom_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- up press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
brightness_step_pct: 10
|
||||
target:
|
||||
entity_id: light.bedroom_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- down press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
brightness_step_pct: -10
|
||||
target:
|
||||
entity_id: light.bedroom_lights
|
||||
mode: single
|
||||
- id: '1740697291423'
|
||||
alias: Living Rooom Lights
|
||||
description: ''
|
||||
triggers:
|
||||
- domain: mqtt
|
||||
device_id: b4fb325dfe68d4f80391417998f35843
|
||||
type: action
|
||||
subtype: on-press
|
||||
trigger: device
|
||||
id: on press
|
||||
- domain: mqtt
|
||||
device_id: b4fb325dfe68d4f80391417998f35843
|
||||
type: action
|
||||
subtype: off-press
|
||||
trigger: device
|
||||
id: off press
|
||||
- domain: mqtt
|
||||
device_id: b4fb325dfe68d4f80391417998f35843
|
||||
type: action
|
||||
subtype: up-press
|
||||
trigger: device
|
||||
id: up press
|
||||
- domain: mqtt
|
||||
device_id: b4fb325dfe68d4f80391417998f35843
|
||||
type: action
|
||||
subtype: down-press
|
||||
trigger: device
|
||||
id: down press
|
||||
- domain: mqtt
|
||||
device_id: b4fb325dfe68d4f80391417998f35843
|
||||
type: action
|
||||
subtype: on-hold
|
||||
trigger: device
|
||||
id: on-hold
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- on press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 2
|
||||
brightness_pct: 100
|
||||
kelvin: 6004
|
||||
target:
|
||||
entity_id:
|
||||
- light.living_room_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- off press
|
||||
sequence:
|
||||
- action: light.turn_off
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 2
|
||||
target:
|
||||
entity_id:
|
||||
- light.living_room_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- up press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
brightness_step_pct: 10
|
||||
target:
|
||||
entity_id: light.living_room_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- down press
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
brightness_step_pct: -10
|
||||
target:
|
||||
entity_id: light.living_room_light_1
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- on-hold
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 0
|
||||
brightness_pct: 100
|
||||
rgb_color:
|
||||
- 224
|
||||
- 27
|
||||
- 36
|
||||
target:
|
||||
entity_id: light.living_room_lights
|
||||
mode: single
|
||||
- id: '1741048414771'
|
||||
alias: Front Closet
|
||||
description: ''
|
||||
triggers:
|
||||
- type: present
|
||||
device_id: c6519ea1e715f397dbbf7b73452f9e49
|
||||
entity_id: c3a7b8892b8b372d2c40556e770ddc68
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
for:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
id: present
|
||||
- type: not_present
|
||||
device_id: c6519ea1e715f397dbbf7b73452f9e49
|
||||
entity_id: c3a7b8892b8b372d2c40556e770ddc68
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
for:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 5
|
||||
id: not
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- present
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 2
|
||||
brightness_pct: 100
|
||||
kelvin: 6010
|
||||
target:
|
||||
entity_id:
|
||||
- light.front_closet_light_1
|
||||
- light.front_closet_light_2
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- not
|
||||
sequence:
|
||||
- action: light.turn_off
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 2
|
||||
target:
|
||||
entity_id:
|
||||
- light.front_closet_light_1
|
||||
- light.front_closet_light_2
|
||||
mode: single
|
||||
576
modules/homeassistant/automations.yaml.ori
Executable file
576
modules/homeassistant/automations.yaml.ori
Executable file
@@ -0,0 +1,576 @@
|
||||
- id: '1692388103102'
|
||||
alias: Weekly Backup
|
||||
description: Create a full backup every Sunday at 3 am and store it on the NAS
|
||||
trigger:
|
||||
- platform: time
|
||||
at: 03:00:00
|
||||
condition:
|
||||
- condition: time
|
||||
weekday:
|
||||
- sun
|
||||
action:
|
||||
- service: hassio.backup_full
|
||||
data:
|
||||
compressed: true
|
||||
mode: single
|
||||
- id: '1692389901297'
|
||||
alias: Livingroom Lights
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: device
|
||||
domain: mqtt
|
||||
device_id: 37d42431de65199af00220b43dae04c1
|
||||
type: action
|
||||
subtype: on_press
|
||||
id: 'on'
|
||||
- platform: device
|
||||
domain: mqtt
|
||||
device_id: 37d42431de65199af00220b43dae04c1
|
||||
type: action
|
||||
subtype: off_press
|
||||
id: 'off'
|
||||
- platform: device
|
||||
domain: mqtt
|
||||
device_id: 37d42431de65199af00220b43dae04c1
|
||||
type: action
|
||||
subtype: up_press
|
||||
id: up
|
||||
- platform: device
|
||||
domain: mqtt
|
||||
device_id: 37d42431de65199af00220b43dae04c1
|
||||
type: action
|
||||
subtype: down_press
|
||||
id: down
|
||||
- platform: device
|
||||
domain: mqtt
|
||||
device_id: 37d42431de65199af00220b43dae04c1
|
||||
type: action
|
||||
subtype: on_hold
|
||||
id: hold
|
||||
condition: []
|
||||
action:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- 'on'
|
||||
sequence:
|
||||
- data:
|
||||
brightness_pct: 100
|
||||
color_temp_kelvin: 5000
|
||||
transition: 1
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
action: light.turn_on
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- 'off'
|
||||
sequence:
|
||||
- data:
|
||||
transition: 1
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
action: light.turn_off
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold
|
||||
sequence:
|
||||
- data:
|
||||
brightness_pct: 100
|
||||
rgb_color:
|
||||
- 255
|
||||
- 38
|
||||
- 0
|
||||
transition: 1
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
action: light.turn_on
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- dim up
|
||||
sequence:
|
||||
- data:
|
||||
brightness_step_pct: 20
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
action: light.turn_on
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- dim down
|
||||
sequence:
|
||||
- data:
|
||||
brightness_step_pct: -20
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
action: light.turn_on
|
||||
mode: single
|
||||
- id: '1692390365798'
|
||||
alias: Bedroom Lights
|
||||
description: ''
|
||||
triggers:
|
||||
- domain: mqtt
|
||||
device_id: a492c0abb8f14e0888df08101f77f484
|
||||
type: action
|
||||
subtype: off_press
|
||||
id: 'off'
|
||||
trigger: device
|
||||
- domain: mqtt
|
||||
device_id: a492c0abb8f14e0888df08101f77f484
|
||||
type: action
|
||||
subtype: on_press
|
||||
id: 'on'
|
||||
trigger: device
|
||||
- domain: mqtt
|
||||
device_id: a492c0abb8f14e0888df08101f77f484
|
||||
type: action
|
||||
subtype: up_press
|
||||
id: up
|
||||
trigger: device
|
||||
- domain: mqtt
|
||||
device_id: a492c0abb8f14e0888df08101f77f484
|
||||
type: action
|
||||
subtype: down_press
|
||||
id: down
|
||||
trigger: device
|
||||
- domain: mqtt
|
||||
device_id: a492c0abb8f14e0888df08101f77f484
|
||||
type: action
|
||||
subtype: on_hold
|
||||
id: hold on
|
||||
trigger: device
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- 'on'
|
||||
sequence:
|
||||
- data:
|
||||
brightness_pct: 100
|
||||
color_temp_kelvin: 5000
|
||||
transition: 1
|
||||
target:
|
||||
entity_id: light.bedroom_lights
|
||||
action: light.turn_on
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- 'off'
|
||||
sequence:
|
||||
- data:
|
||||
transition: 1
|
||||
target:
|
||||
entity_id:
|
||||
- light.bedroom_lights
|
||||
action: light.turn_off
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- up
|
||||
sequence:
|
||||
- device_id: 171fa001578683249ff26f2d85817fef
|
||||
domain: light
|
||||
entity_id: 55d41329665f60a55a732c5bbececd22
|
||||
type: brightness_increase
|
||||
- device_id: c92fea3d569ca668e6617a189f917a28
|
||||
domain: light
|
||||
entity_id: 0c8630c2b37ae9615f9cf815aaebf40f
|
||||
type: brightness_increase
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- down
|
||||
sequence:
|
||||
- device_id: 171fa001578683249ff26f2d85817fef
|
||||
domain: light
|
||||
entity_id: 55d41329665f60a55a732c5bbececd22
|
||||
type: brightness_decrease
|
||||
- device_id: c92fea3d569ca668e6617a189f917a28
|
||||
domain: light
|
||||
entity_id: 0c8630c2b37ae9615f9cf815aaebf40f
|
||||
type: brightness_decrease
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold on
|
||||
sequence:
|
||||
- metadata: {}
|
||||
data:
|
||||
rgb_color:
|
||||
- 255
|
||||
- 0
|
||||
- 0
|
||||
brightness_pct: 100
|
||||
target:
|
||||
entity_id: light.bedroom_lights
|
||||
action: light.turn_on
|
||||
mode: single
|
||||
- id: '1694441037420'
|
||||
alias: Air Purifier Schedule
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: 07:00:00
|
||||
id: fan off
|
||||
- platform: time
|
||||
at: '23:00:00'
|
||||
id: fan on
|
||||
condition: []
|
||||
action:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- fan on
|
||||
sequence:
|
||||
- service: fan.set_percentage
|
||||
data:
|
||||
percentage: 100
|
||||
target:
|
||||
entity_id: fan.bedroom_air_purifier
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- fan off
|
||||
sequence:
|
||||
- service: fan.set_preset_mode
|
||||
data:
|
||||
preset_mode: auto
|
||||
target:
|
||||
entity_id: fan.bedroom_air_purifier
|
||||
mode: single
|
||||
- id: '1705949582146'
|
||||
alias: Ice Maker Power Schedule
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
hours: '*'
|
||||
minutes: '0'
|
||||
seconds: '0'
|
||||
condition: []
|
||||
action:
|
||||
- type: toggle
|
||||
device_id: 41c66532e23aadc4c6ac95e520e5d345
|
||||
entity_id: bd17ac75a91e62ed7e6b148cfe33d43d
|
||||
domain: switch
|
||||
- alias: Set Ice Maker Light to Dim
|
||||
device_id: 41c66532e23aadc4c6ac95e520e5d345
|
||||
domain: select
|
||||
entity_id: 8f4f90c62b00df9008d14f7ce8967199
|
||||
type: select_option
|
||||
option: 'On'
|
||||
mode: single
|
||||
- id: '1708978401738'
|
||||
alias: Soundbar
|
||||
description: ''
|
||||
trigger: []
|
||||
condition: []
|
||||
action:
|
||||
- service: media_player.turn_on
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: media_player.soundbar
|
||||
- service: media_player.select_source
|
||||
metadata: {}
|
||||
data:
|
||||
source: wifi
|
||||
target:
|
||||
entity_id: media_player.soundbar
|
||||
- service: media_player.play_media
|
||||
metadata: {}
|
||||
data:
|
||||
media_content_id: media-source://radio_browser/2eff3a1f-b821-4267-9f37-f8d7e72061e4
|
||||
media_content_type: audio/mpeg
|
||||
target:
|
||||
entity_id: media_player.soundbar
|
||||
mode: single
|
||||
- id: '1711147285926'
|
||||
alias: Grow Light Schedule
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: 07:00:00
|
||||
id: day
|
||||
- platform: time
|
||||
at: '20:00:00'
|
||||
id: night
|
||||
condition: []
|
||||
action:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- day
|
||||
sequence:
|
||||
- service: switch.turn_on
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: switch.grow_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- night
|
||||
sequence:
|
||||
- service: switch.turn_off
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: switch.grow_lights
|
||||
mode: single
|
||||
- id: '1723142554607'
|
||||
alias: Restart Luci's Box
|
||||
description: for some reason this box sucks and needs to get reboot periodically
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
hours: '*'
|
||||
condition: []
|
||||
action:
|
||||
- type: turn_off
|
||||
device_id: e7f8974c31567dddbbffb036fe8381bc
|
||||
entity_id: e1e71e4acdfcbb6c4afdc174807ad8be
|
||||
domain: switch
|
||||
- delay:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 1
|
||||
milliseconds: 0
|
||||
- type: turn_on
|
||||
device_id: e7f8974c31567dddbbffb036fe8381bc
|
||||
entity_id: e1e71e4acdfcbb6c4afdc174807ad8be
|
||||
domain: switch
|
||||
- type: turn_on
|
||||
device_id: d5eb3c182a1ef2a231b94b09c26aed45
|
||||
entity_id: 7106df7ebde274ac4bc2b197d5c45bea
|
||||
domain: fan
|
||||
- device_id: d5eb3c182a1ef2a231b94b09c26aed45
|
||||
domain: number
|
||||
entity_id: 59a7cd3cb2883bf6002f789c2ff4824c
|
||||
type: set_value
|
||||
value: 3
|
||||
mode: single
|
||||
- id: '1724707092916'
|
||||
alias: HASS Updates
|
||||
description: ''
|
||||
use_blueprint:
|
||||
path: edwardtfn/auto_update_scheduled.yaml
|
||||
input:
|
||||
schedule_entity: schedule.updates
|
||||
restart_bool: true
|
||||
- id: '1724707291994'
|
||||
alias: IOT Battery Checker
|
||||
description: ''
|
||||
use_blueprint:
|
||||
path: sbyx/low-battery-level-detection-notification-for-all-battery-sensors.yaml
|
||||
input:
|
||||
exclude:
|
||||
entity_id: []
|
||||
device_id:
|
||||
- 66e9cee67a740e8925dae5fc9ce940f0
|
||||
- df76e3a3e48b49e13bd3006350826740
|
||||
actions:
|
||||
- action: notify.persistent_notification
|
||||
metadata: {}
|
||||
data:
|
||||
message: Device Battery Low
|
||||
- id: '1729708621620'
|
||||
alias: Closet Lights
|
||||
description: ''
|
||||
triggers:
|
||||
- type: present
|
||||
device_id: 0924cbdcd24416e768caa52301db59f7
|
||||
entity_id: e9f0acef50550033cd96155bd501b7c3
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
for:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
id: Present
|
||||
- type: not_present
|
||||
device_id: 0924cbdcd24416e768caa52301db59f7
|
||||
entity_id: e9f0acef50550033cd96155bd501b7c3
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
for:
|
||||
hours: 0
|
||||
minutes: 0
|
||||
seconds: 0
|
||||
id: empty
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- Present
|
||||
sequence:
|
||||
- action: light.turn_on
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 3
|
||||
brightness_pct: 100
|
||||
kelvin: 5008
|
||||
target:
|
||||
device_id:
|
||||
- e25128ac8fcf62af66a039cde3104760
|
||||
- ddcfd5ea4fc5f5a88e18325b01c615db
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- empty
|
||||
sequence:
|
||||
- action: light.turn_off
|
||||
metadata: {}
|
||||
data:
|
||||
transition: 3
|
||||
target:
|
||||
device_id:
|
||||
- e25128ac8fcf62af66a039cde3104760
|
||||
- ddcfd5ea4fc5f5a88e18325b01c615db
|
||||
mode: single
|
||||
- id: '1729881464325'
|
||||
alias: Bedroom Closet
|
||||
description: ''
|
||||
triggers:
|
||||
- type: present
|
||||
device_id: 28e7f211c72409fe244183219abf6ffa
|
||||
entity_id: aa474f323868586cef62070654f36936
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
id: Present
|
||||
- type: not_present
|
||||
device_id: 28e7f211c72409fe244183219abf6ffa
|
||||
entity_id: aa474f323868586cef62070654f36936
|
||||
domain: binary_sensor
|
||||
trigger: device
|
||||
id: empty
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- Present
|
||||
sequence:
|
||||
- type: turn_on
|
||||
device_id: f5936d6143b7927433e9c0430c79acab
|
||||
entity_id: f6ec42c9db2c191866a335a346b1ec44
|
||||
domain: switch
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- empty
|
||||
sequence:
|
||||
- type: turn_off
|
||||
device_id: f5936d6143b7927433e9c0430c79acab
|
||||
entity_id: f6ec42c9db2c191866a335a346b1ec44
|
||||
domain: switch
|
||||
mode: single
|
||||
- id: '1740179328446'
|
||||
alias: Living Room Lights
|
||||
description: ''
|
||||
triggers:
|
||||
- domain: mqtt
|
||||
device_id: f7482a462dc7cc05b4ceaa0d882dc469
|
||||
type: action
|
||||
subtype: off_press
|
||||
trigger: device
|
||||
id: 'off'
|
||||
- domain: mqtt
|
||||
device_id: f7482a462dc7cc05b4ceaa0d882dc469
|
||||
type: action
|
||||
subtype: on_press
|
||||
trigger: device
|
||||
id: 'on'
|
||||
- domain: mqtt
|
||||
device_id: f7482a462dc7cc05b4ceaa0d882dc469
|
||||
type: action
|
||||
subtype: up_press
|
||||
trigger: device
|
||||
id: up
|
||||
- domain: mqtt
|
||||
device_id: f7482a462dc7cc05b4ceaa0d882dc469
|
||||
type: action
|
||||
subtype: down_press
|
||||
trigger: device
|
||||
id: down
|
||||
- domain: mqtt
|
||||
device_id: f7482a462dc7cc05b4ceaa0d882dc469
|
||||
type: action
|
||||
subtype: on_hold
|
||||
trigger: device
|
||||
id: hold on
|
||||
conditions: []
|
||||
actions:
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- 'on'
|
||||
sequence:
|
||||
- data:
|
||||
brightness_pct: 100
|
||||
color_temp_kelvin: 5000
|
||||
transition: 1
|
||||
action: light.turn_on
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- 'off'
|
||||
sequence:
|
||||
- data:
|
||||
transition: 1
|
||||
action: light.turn_off
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- up
|
||||
sequence:
|
||||
- device_id: 8bc2033b03d5a474ca3204c5ca53e308
|
||||
domain: light
|
||||
entity_id: 4a3cc9043ff985e9271683e1916bd9e1
|
||||
type: brightness_increase
|
||||
- device_id: 8f4f51aed9b3b4284f520af25358efd9
|
||||
domain: light
|
||||
entity_id: f45e74498c4b6bae65aaf5adf67e29d6
|
||||
type: brightness_increase
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- down
|
||||
sequence:
|
||||
- device_id: 8bc2033b03d5a474ca3204c5ca53e308
|
||||
domain: light
|
||||
entity_id: 4a3cc9043ff985e9271683e1916bd9e1
|
||||
type: brightness_decrease
|
||||
- device_id: 8bc2033b03d5a474ca3204c5ca53e308
|
||||
domain: light
|
||||
entity_id: 4a3cc9043ff985e9271683e1916bd9e1
|
||||
type: brightness_decrease
|
||||
- conditions:
|
||||
- condition: trigger
|
||||
id:
|
||||
- hold on
|
||||
sequence:
|
||||
- metadata: {}
|
||||
data:
|
||||
rgb_color:
|
||||
- 255
|
||||
- 0
|
||||
- 0
|
||||
brightness_pct: 100
|
||||
action: light.turn_on
|
||||
target:
|
||||
entity_id: light.livingroom_lights
|
||||
mode: single
|
||||
47
modules/homeassistant/hacs/anycubic.nix
Normal file
47
modules/homeassistant/hacs/anycubic.nix
Normal file
@@ -0,0 +1,47 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
uart-wifi = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "uart-wifi";
|
||||
version = "0.2.1";
|
||||
format = "pyproject";
|
||||
src = pkgs.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-yquZ5V8f+EqetCf0nc9WlhHhnHkOASYRuYvqEIMc5HI=";
|
||||
};
|
||||
|
||||
buildInputs = with pkgs.python3Packages; [ setuptools ];
|
||||
|
||||
doCheck = false; # no tests in the PyPI tarball
|
||||
};
|
||||
|
||||
ha-anycubic = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "adamoutler";
|
||||
domain = "anycubic_wifi";
|
||||
version = "HACS-10";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "anycubic-homeassistant";
|
||||
rev = version;
|
||||
hash = "sha256-TfZadwgdEJR11MaL+nfIgEYld3trWg3v6lOHSoxQ98Q=";
|
||||
};
|
||||
|
||||
# PYTHONPATH = [ "${src}/uart-wifi" ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
uart-wifi
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/adamoutler/anycubic-homeassistant/releases/tag/${version}";
|
||||
description = "This is a library to provide support for Mono X Printers.";
|
||||
homepage = "https://github.com/adamoutler/anycubic-homeassistant";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-anycubic
|
||||
];
|
||||
}
|
||||
31
modules/homeassistant/hacs/bambulab.nix
Normal file
31
modules/homeassistant/hacs/bambulab.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
ha-bambulab = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "greghesp";
|
||||
domain = "bambu_lab";
|
||||
version = "v2.1.27";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "ha-bambulab";
|
||||
rev = version;
|
||||
hash = "sha256-zHPXPYsHrJXOnSqllZqDrxGZDDqyXllC3XEGZRJil0Q=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||
beautifulsoup4
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/greghesp/ha-bambulab/releases/tag/${version}";
|
||||
description = "A Home Assistant Integration for Bambu Lab printers.";
|
||||
homepage = "https://github.com/greghesp/ha-bambulab";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-bambulab
|
||||
];
|
||||
}
|
||||
14
modules/homeassistant/hacs/default.nix
Normal file
14
modules/homeassistant/hacs/default.nix
Normal file
@@ -0,0 +1,14 @@
|
||||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./anycubic.nix
|
||||
./bambulab.nix
|
||||
./gehome.nix
|
||||
./icloud3.nix
|
||||
./mail-and-packages.nix
|
||||
./nanokvm.nix
|
||||
./overseerr.nix
|
||||
./petlibro.nix
|
||||
./wyzeapi.nix
|
||||
];
|
||||
}
|
||||
54
modules/homeassistant/hacs/gehome.nix
Normal file
54
modules/homeassistant/hacs/gehome.nix
Normal file
@@ -0,0 +1,54 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
magicattr_cust = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "magicattr";
|
||||
version = "0.1.6";
|
||||
format = "setuptools";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "frmdstryr";
|
||||
repo = pname;
|
||||
rev = "master";
|
||||
sha256 = "sha256-FJtWU5AuunZbdlndGdfD1c9/0s7oRdoTi202pWjuAd8=";
|
||||
};
|
||||
|
||||
buildInputs = with pkgs.python3Packages; [ setuptools ];
|
||||
doCheck = false;
|
||||
};
|
||||
|
||||
ha-gehome = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "simbaja";
|
||||
domain = "ge_home";
|
||||
version = "v2025.5.0";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = domain;
|
||||
rev = version;
|
||||
hash = "sha256-NlUkM70yvBeC5s7S5BkNxIC2GztfEq8xYrQZr4pkaGU=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||
gehomesdk
|
||||
magicattr_cust
|
||||
slixmpp
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace custom_components/ge_home/manifest.json \
|
||||
--replace '"slixmpp==1.8.3"' '"slixmpp>=1.8.3"'
|
||||
'';
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/simbaja/ha_gehome/releases/tag/${version}";
|
||||
description = "Integration for GE WiFi-enabled appliances into Home Assistant.";
|
||||
homepage = "https://github.com/simbaja/ha_gehome";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-gehome
|
||||
];
|
||||
}
|
||||
31
modules/homeassistant/hacs/icloud3.nix
Normal file
31
modules/homeassistant/hacs/icloud3.nix
Normal file
@@ -0,0 +1,31 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
ha-icloud3 = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "gcobb321";
|
||||
domain = "icloud3";
|
||||
version = "3.2.2.3";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "icloud3";
|
||||
rev = "v.${version}";
|
||||
hash = "sha256-OjXioS73jE/U2YeKYf84QnStdQj3Seid4hJ2TH6z13M=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||
srp
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/gcobb321/icloud3/releases/tag/${version}";
|
||||
description = "Cloud3 is a device tracker custom component that tracks your iPhones, iPads and Apple Watches. Devices in the Family Sharing List and the HA Mobile App Integration are trackable.";
|
||||
homepage = "https://github.com/gcobb321/icloud3";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-icloud3
|
||||
];
|
||||
}
|
||||
33
modules/homeassistant/hacs/mail-and-packages.nix
Normal file
33
modules/homeassistant/hacs/mail-and-packages.nix
Normal file
@@ -0,0 +1,33 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
ha-mail-and-packages = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "moralmunky";
|
||||
domain = "mail_and_packages";
|
||||
version = "0.4.2";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "Home-Assistant-Mail-And-Packages";
|
||||
rev = version;
|
||||
hash = "sha256-5LBTlRlkSUx8DOY+F7UvUs4dzjZKdBdgnDUdK6DBdew=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with pkgs.python3Packages; [
|
||||
beautifulsoup4
|
||||
dateparser
|
||||
pillow
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/moralmunky/Home-Assistant-Mail-And-Packages/releases/tag/${version}";
|
||||
description = "The Mail and Packages integration creates sensors for supported shippers to show a snapshot of mail and packages that are scheduled to be delivered the current day.";
|
||||
homepage = "https://github.com/moralmunky/Home-Assistant-Mail-And-Packages";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-mail-and-packages
|
||||
];
|
||||
}
|
||||
59
modules/homeassistant/hacs/nanokvm.nix
Normal file
59
modules/homeassistant/hacs/nanokvm.nix
Normal file
@@ -0,0 +1,59 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
python-nanokvm = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "python-nanokvm";
|
||||
version = "v0.0.3";
|
||||
format = "pyproject";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "puddly";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-jBBd+O3S/4AlxAhrF9j9Bi5vMKZNk0M17ok9JzcI8F8=";
|
||||
};
|
||||
|
||||
buildInputs = with pkgs.python3Packages; [
|
||||
setuptools
|
||||
setuptools-git-versioning
|
||||
];
|
||||
|
||||
nativeBuildInputs = with pkgs.python3Packages; [
|
||||
aiohttp
|
||||
cryptography
|
||||
yarl
|
||||
pillow
|
||||
pydantic
|
||||
];
|
||||
|
||||
doCheck = false;
|
||||
};
|
||||
|
||||
ha-nanokvm = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "Wouter0100";
|
||||
domain = "nanokvm";
|
||||
version = "v0.0.1";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "homeassistant-nanokvm";
|
||||
rev = "663f9710dfea109f0bb0417df5828b8d639e70c4";
|
||||
hash = "sha256-6rTEOshNCe0x4iEHljqY/6p2TK1HasgNycRHkmo2Hhw=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
python-nanokvm
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/Wouter0100/homeassistant-nanokvm/releases/tag/${version}";
|
||||
description = "This integration allows you to control and monitor your Sipeed NanoKVM device from Home Assistant.";
|
||||
homepage = "https://github.com/Wouter0100/homeassistant-nanokvm";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-nanokvm
|
||||
];
|
||||
}
|
||||
47
modules/homeassistant/hacs/overseerr.nix
Normal file
47
modules/homeassistant/hacs/overseerr.nix
Normal file
@@ -0,0 +1,47 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
pyoverseerr = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "pyoverseerr";
|
||||
version = "0.1.40";
|
||||
format = "setuptools";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "vaparr";
|
||||
repo = pname;
|
||||
rev = "master";
|
||||
sha256 = "sha256-sWYe6EV/IO/tGGXcnKiebb47eidIj0xnM/aZUfdZXyY=";
|
||||
};
|
||||
|
||||
buildInputs = with pkgs.python3Packages; [ setuptools ];
|
||||
doCheck = false; # no tests in the PyPI tarball
|
||||
};
|
||||
|
||||
ha-overseerr = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "vaparr";
|
||||
domain = "overseerr";
|
||||
version = "0.1.42";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "ha-overseerr";
|
||||
rev = version;
|
||||
hash = "sha256-UvUowCgfay9aRV+iC/AQ9vvJzhGZbH+/1kVjxPFBKcI=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pyoverseerr
|
||||
];
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/vaparr/ha-overseerr/releases/tag/${version}";
|
||||
description = "The Overseerr integration monitors data from your Overseerr instance.";
|
||||
homepage = "https://github.com/vaparr/ha-overseerr";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-overseerr
|
||||
];
|
||||
}
|
||||
27
modules/homeassistant/hacs/petlibro.nix
Normal file
27
modules/homeassistant/hacs/petlibro.nix
Normal file
@@ -0,0 +1,27 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
ha-petlibro = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "jjjonesjr33";
|
||||
domain = "petlibro";
|
||||
version = "v1.0.22.3";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "petlibro";
|
||||
rev = version;
|
||||
hash = "sha256-fYzy4OpK9Fs+KQ44H4G6DJlcSg9Zyi56fjsmdxDBviM=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/jjjonesjr33/petlibro/releases/tag/${version}";
|
||||
description = "PETLIBRO integration for Home Assistant.";
|
||||
homepage = "https://github.com/jjjonesjr33/petlibro";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-petlibro
|
||||
];
|
||||
}
|
||||
59
modules/homeassistant/hacs/wyzeapi.nix
Normal file
59
modules/homeassistant/hacs/wyzeapi.nix
Normal file
@@ -0,0 +1,59 @@
|
||||
{ pkgs, ... }:
|
||||
let
|
||||
wyzeapy = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "wyzeapy";
|
||||
version = "0.5.27";
|
||||
format = "pyproject";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "SecKatie";
|
||||
repo = "wyzeapy";
|
||||
rev = version;
|
||||
sha256 = "sha256-IfhRsVWj/bcKOtpCdmpgrz3L8iY73e+weHlOo5rfKHw=";
|
||||
};
|
||||
|
||||
buildInputs = with pkgs.python3Packages; [ poetry-core ];
|
||||
|
||||
nativeBuildInputs = with pkgs.python3Packages; [
|
||||
aiodns
|
||||
aiohttp
|
||||
pycryptodome
|
||||
];
|
||||
|
||||
doCheck = false; # no tests in the PyPI tarball
|
||||
};
|
||||
|
||||
ha-wyzeapi = pkgs.buildHomeAssistantComponent rec {
|
||||
owner = "SecKatie";
|
||||
domain = "wyzeapi";
|
||||
version = "0.1.33";
|
||||
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = owner;
|
||||
repo = "ha-wyzeapi";
|
||||
rev = version;
|
||||
hash = "sha256-Hl1Vmi2lhoJW3bdkrtO2mNqfLxURPwqFPjYgdrHRxYk=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
wyzeapy
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace custom_components/wyzeapi/manifest.json \
|
||||
--replace '"wyzeapy>=0.5.28,<0.6"' '"wyzeapy>=0.5.27,<0.6"'
|
||||
'';
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/SecKatie/ha-wyzeapi/releases/tag/${version}";
|
||||
description = "This is a custom component to allow control of various Wyze devices in Home Assistant using the unofficial API.";
|
||||
homepage = "https://github.com/SecKatie/ha-wyzeapi";
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
services.home-assistant.customComponents = [
|
||||
ha-wyzeapi
|
||||
];
|
||||
}
|
||||
55
modules/homeassistant/hass.nix
Normal file
55
modules/homeassistant/hass.nix
Normal file
@@ -0,0 +1,55 @@
|
||||
{ dream2nix, ... }:
|
||||
let
|
||||
hostAddress = "10.0.1.3";
|
||||
localAddress = "10.0.2.3";
|
||||
hassPort = 8192;
|
||||
in
|
||||
{
|
||||
containers.homeassistant = {
|
||||
autoStart = true;
|
||||
privateNetwork = true;
|
||||
hostAddress = hostAddress;
|
||||
localAddress = localAddress;
|
||||
|
||||
config = { lib, ... }:
|
||||
{
|
||||
imports = [
|
||||
./homeassistant.nix
|
||||
({ ... }: { _module.args.dream2nix = dream2nix; })
|
||||
];
|
||||
# inherit dream2nix;
|
||||
|
||||
networking = {
|
||||
firewall = {
|
||||
enable = true;
|
||||
allowedTCPPorts = [ hassPort ];
|
||||
};
|
||||
# Use systemd-resolved inside the container
|
||||
# Workaround for bug https://github.com/NixOS/nixpkgs/issues/162686
|
||||
useHostResolvConf = lib.mkForce false;
|
||||
};
|
||||
|
||||
# Create and set permissions for required directories
|
||||
system.activationScripts.gitea-dirs = ''
|
||||
mkdir -p /var/lib/gitea
|
||||
chown -R gitea:gitea /var/lib/gitea
|
||||
chmod -R 775 /var/lib/gitea
|
||||
mkdir -p /run/secrets/jallen-nas
|
||||
chown -R gitea:gitea /run/secrets/jallen-nas
|
||||
chmod -R 775 /run/secrets/jallen-nas
|
||||
'';
|
||||
|
||||
services.resolved.enable = true;
|
||||
system.stateVersion = "23.11";
|
||||
};
|
||||
};
|
||||
|
||||
networking.nat = {
|
||||
forwardPorts = [
|
||||
{
|
||||
destination = "${localAddress}:${toString hassPort}";
|
||||
sourcePort = hassPort;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
357
modules/homeassistant/homeassistant.nix
Executable file
357
modules/homeassistant/homeassistant.nix
Executable file
@@ -0,0 +1,357 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
mosquittoPort = 1883;
|
||||
zigbee2mqttPort = 8080;
|
||||
|
||||
# In configuration.nix or a separate file
|
||||
python-steam = pkgs.python3Packages.buildPythonPackage rec {
|
||||
pname = "steam";
|
||||
version = "1.4.4";
|
||||
pyproject = false;
|
||||
src = pkgs.fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-K1vWkRwNSnMS9EG40WK52NR8i+u478bIhnOTsDI/pS4=";
|
||||
};
|
||||
|
||||
buildInputs = with pkgs.python3Packages; [ setuptools ];
|
||||
|
||||
doCheck = false; # no tests in the PyPI tarball
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [ ./hacs ];
|
||||
|
||||
services.home-assistant = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
configWritable = true; # todo
|
||||
extraComponents = [
|
||||
# Components required to complete the onboarding
|
||||
"analytics"
|
||||
"google_translate"
|
||||
"met"
|
||||
"radio_browser"
|
||||
"shopping_list"
|
||||
# Recommended for fast zlib compression
|
||||
# https://www.home-assistant.io/integrations/isal
|
||||
"isal"
|
||||
"subaru"
|
||||
"vesync"
|
||||
"mqtt" # Enables MQTT integration in HA
|
||||
"ffmpeg" # Enables camera streams
|
||||
"zha" # Enables Zigbee integration
|
||||
"homekit"
|
||||
"music_assistant"
|
||||
];
|
||||
customComponents = with pkgs.home-assistant-custom-components; [
|
||||
auth-header
|
||||
localtuya
|
||||
];
|
||||
customLovelaceModules = with pkgs.home-assistant-custom-lovelace-modules; [
|
||||
atomic-calendar-revive
|
||||
bubble-card
|
||||
button-card
|
||||
hourly-weather
|
||||
mini-graph-card
|
||||
mini-media-player
|
||||
multiple-entity-row
|
||||
mushroom
|
||||
vacuum-card
|
||||
weather-chart-card
|
||||
zigbee2mqtt-networkmap
|
||||
];
|
||||
# use postgresql instead of sqlite
|
||||
extraPackages = ps: with ps; [
|
||||
# Core functionality
|
||||
aiohttp
|
||||
aiodns
|
||||
paho-mqtt
|
||||
pillow
|
||||
pytz
|
||||
pyyaml
|
||||
sqlalchemy
|
||||
|
||||
# Discovery & networking
|
||||
zeroconf
|
||||
netdisco
|
||||
ifaddr
|
||||
ssdp
|
||||
|
||||
# Device protocols
|
||||
pyserial # Serial communications
|
||||
bluepy # Bluetooth LE
|
||||
|
||||
# Smart home ecosystems
|
||||
mutagen # Media file metadata
|
||||
pysonos # Sonos
|
||||
pywemo # Belkin WeMo
|
||||
python-miio # Xiaomi devices
|
||||
python-kasa # TP-Link
|
||||
|
||||
# Sensors & monitoring
|
||||
meteocalc # Weather calculations
|
||||
speedtest-cli # Internet speed
|
||||
|
||||
# Visualization & UI
|
||||
matplotlib # Graphing
|
||||
|
||||
# Security
|
||||
bcrypt
|
||||
cryptography
|
||||
pyjwt
|
||||
|
||||
# Media
|
||||
ha-ffmpeg # Camera streams
|
||||
|
||||
# Specialized integrations
|
||||
python-matter-server # Matter protocol
|
||||
|
||||
# System integrations
|
||||
psutil # System monitoring
|
||||
|
||||
psycopg2
|
||||
numpy
|
||||
hassil
|
||||
pyturbojpeg
|
||||
paho-mqtt
|
||||
pychromecast
|
||||
pyatv
|
||||
python-otbr-api
|
||||
brother
|
||||
pyipp
|
||||
govee-ble
|
||||
adguardhome
|
||||
nextcord
|
||||
aiogithubapi
|
||||
jellyfin-apiclient-python
|
||||
pylitterbot
|
||||
dateparser
|
||||
aionut
|
||||
nextcloudmonitor
|
||||
ollama
|
||||
pynecil
|
||||
aiopyarr
|
||||
pysabnzbd
|
||||
getmac
|
||||
zigpy
|
||||
bellows # For Zigbee EmberZNet-based adapters
|
||||
zigpy-xbee # For XBee adapters
|
||||
zigpy-deconz # For ConBee/RaspBee adapters
|
||||
pyicloud # iCloud
|
||||
pyatv # Apple TV
|
||||
opencv-python
|
||||
face-recognition
|
||||
ibeacon-ble
|
||||
gehomesdk
|
||||
onedrive-personal-sdk
|
||||
python-roborock
|
||||
python-steam
|
||||
apple-weatherkit
|
||||
];
|
||||
|
||||
config = {
|
||||
# Includes dependencies for a basic setup
|
||||
# https://www.home-assistant.io/integrations/default_config/
|
||||
default_config = {};
|
||||
|
||||
cloud = false;
|
||||
|
||||
frontend = {
|
||||
themes = "!include_dir_merge_named themes";
|
||||
};
|
||||
|
||||
"automation ui" = "!include /etc/nixos/hosts/homeassistant/automations.yaml";
|
||||
"scene ui" = "!include /etc/nixos/hosts/homeassistant/scenes.yaml";
|
||||
"script ui" = "!include /etc/nixos/hosts/homeassistant/scripts.yaml";
|
||||
|
||||
http = {
|
||||
use_x_forwarded_for = true;
|
||||
trusted_proxies = [
|
||||
"172.30.33.0/24"
|
||||
"10.0.1.3"
|
||||
"10.0.1.0/24"
|
||||
];
|
||||
};
|
||||
|
||||
recorder = {
|
||||
db_url = "postgresql://@/hass";
|
||||
purge_keep_days = 180;
|
||||
};
|
||||
|
||||
auth_header = {
|
||||
debug = false;
|
||||
username_header = "X-authentik-username";
|
||||
};
|
||||
|
||||
# https://www.home-assistant.io/integrations/ota_updater/
|
||||
zha.zigpy_config.ota.z2m_remote_index = "https://raw.githubusercontent.com/Koenkk/zigbee-OTA/master/index.json";
|
||||
};
|
||||
};
|
||||
|
||||
# https://www.home-assistant.io/integrations/automation/
|
||||
# systemd.tmpfiles.rules = [
|
||||
# "f ${config.services.home-assistant.configDir}/automations.yaml 0755 hass hass"
|
||||
# ];
|
||||
|
||||
# This bypasses the component validation and places it directly in HA's data directory
|
||||
system.activationScripts.installCustomComponents = ''
|
||||
mkdir -p ${config.services.home-assistant.configDir}/custom_components
|
||||
|
||||
ln -sf /etc/nixos/hosts/homeassistant/automations.yaml ${config.services.home-assistant.configDir}/automations.yaml
|
||||
ln -sf /etc/nixos/hosts/homeassistant/scenes.yaml ${config.services.home-assistant.configDir}/scenes.yaml
|
||||
ln -sf /etc/nixos/hosts/homeassistant/scripts.yaml ${config.services.home-assistant.configDir}/scripts.yaml
|
||||
|
||||
|
||||
chown -R hass:hass ${config.services.home-assistant.configDir}
|
||||
chmod -R 750 ${config.services.home-assistant.configDir}
|
||||
'';
|
||||
|
||||
services = {
|
||||
postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [ "hass" ];
|
||||
ensureUsers = [{
|
||||
name = "hass";
|
||||
ensureDBOwnership = true;
|
||||
}];
|
||||
};
|
||||
|
||||
# Enable and configure Mosquitto MQTT broker
|
||||
mosquitto = {
|
||||
enable = true;
|
||||
listeners = [
|
||||
{
|
||||
acl = [ "pattern readwrite #" ];
|
||||
omitPasswordAuth = true;
|
||||
settings.allow_anonymous = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
zigbee2mqtt = {
|
||||
enable = true;
|
||||
settings = {
|
||||
homeassistant = {
|
||||
enabled = config.services.home-assistant.enable;
|
||||
# Optional: Home Assistant discovery topic (default: shown below)
|
||||
# Note: should be different from [MQTT base topic](../mqtt.md) to prevent errors in HA software
|
||||
discovery_topic = "homeassistant";
|
||||
# Optional: Home Assistant status topic (default: shown below)
|
||||
status_topic = "homeassistant/status";
|
||||
# Optional: Experimental support for Home Assistant event entities, may break in the future (default: shown below) when enabled:
|
||||
# - An `event` entity will be discovered for each 'action'.
|
||||
# - The `event_type` attribute will contain the action itself, additional attributes like `button` will have further information.
|
||||
experimental_event_entities = false;
|
||||
# Optional: Home Assistant legacy action sensor (default: `false`), when enabled:
|
||||
# - Zigbee2MQTT will send an empty 'action' after one has been send
|
||||
# - A 'sensor_action' will be discovered
|
||||
legacy_action_sensor = false;
|
||||
};
|
||||
|
||||
permit_join = true;
|
||||
# Web interface
|
||||
frontend = {
|
||||
port = zigbee2mqttPort; # Choose an available port
|
||||
};
|
||||
# MQTT configuration
|
||||
mqtt = {
|
||||
base_topic = "zigbee2mqtt";
|
||||
server = "mqtt://localhost:1883";
|
||||
# If using authentication:
|
||||
# user = "mqttuser";
|
||||
# password = "your-password";
|
||||
};
|
||||
serial = {
|
||||
port = "/dev/ttyUSB0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
music-assistant = {
|
||||
enable = true;
|
||||
providers = [
|
||||
# "airplay" # music-assistant: airplay support is missing libraop, a library we will not package because it depends on OpenSSL 1.1.
|
||||
"apple_music"
|
||||
"bluesound"
|
||||
"builtin"
|
||||
"chromecast"
|
||||
"deezer"
|
||||
"dlna"
|
||||
"fanarttv"
|
||||
"filesystem_local"
|
||||
"filesystem_smb"
|
||||
"fully_kiosk"
|
||||
"hass"
|
||||
"hass_players"
|
||||
"jellyfin"
|
||||
"musicbrainz"
|
||||
"opensubsonic"
|
||||
"player_group"
|
||||
"plex"
|
||||
"qobuz"
|
||||
"radiobrowser"
|
||||
"siriusxm"
|
||||
"snapcast"
|
||||
"sonos"
|
||||
"sonos_s1"
|
||||
"soundcloud"
|
||||
"spotify"
|
||||
"template_player_provider"
|
||||
"test"
|
||||
"theaudiodb"
|
||||
"tidal"
|
||||
"tunein"
|
||||
"ytmusic"
|
||||
];
|
||||
};
|
||||
|
||||
# Enable AirPlay
|
||||
pipewire = {
|
||||
# opens UDP ports 6001-6002
|
||||
raopOpenFirewall = true;
|
||||
|
||||
extraConfig.pipewire = {
|
||||
"10-airplay" = {
|
||||
"context.modules" = [
|
||||
{
|
||||
name = "libpipewire-module-raop-discover";
|
||||
|
||||
# increase the buffer size if you get dropouts/glitches
|
||||
# args = {
|
||||
# "raop.latency.ms" = 500;
|
||||
# };
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Enable required hardware support for the Zigbee adapter
|
||||
hardware.bluetooth.enable = true; # Some adapters use Bluetooth
|
||||
|
||||
# Ensure proper permissions for Zigbee USB devices
|
||||
# services.udev.extraRules = ''
|
||||
# # For CC2531, CC2530, CC1352P-2, CC2538 and similar adapters
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a8", SYMLINK+="zigbee", MODE="0666"
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="zigbee", MODE="0666"
|
||||
|
||||
# # For ConBee/RaspBee by Dresden Elektronik
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="1cf1", ATTRS{idProduct}=="0030", SYMLINK+="zigbee", MODE="0666"
|
||||
|
||||
# # For Electrolama zig-a-zig-ah (zzh!)
|
||||
# SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="zigbee", MODE="0666"
|
||||
# '';
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
mosquitto # MQTT command-line tools
|
||||
usbutils # For lsusb to help identify your adapter
|
||||
];
|
||||
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
mosquittoPort
|
||||
zigbee2mqttPort
|
||||
8095
|
||||
8097
|
||||
];
|
||||
}
|
||||
0
modules/homeassistant/scenes.yaml
Executable file
0
modules/homeassistant/scenes.yaml
Executable file
0
modules/homeassistant/scripts.yaml
Executable file
0
modules/homeassistant/scripts.yaml
Executable file
Reference in New Issue
Block a user