From a5f7be062b6bde4fe09d72cca1966971310741eb Mon Sep 17 00:00:00 2001 From: matt1432 Date: Tue, 10 Sep 2024 20:55:38 -0400 Subject: [PATCH] feat(hass): turn on speaker automatically when openwakeword is used --- .../modules/home-assistant/bluetooth.nix | 96 +++++++++++-------- .../homie/modules/home-assistant/default.nix | 1 - 2 files changed, 58 insertions(+), 39 deletions(-) diff --git a/devices/homie/modules/home-assistant/bluetooth.nix b/devices/homie/modules/home-assistant/bluetooth.nix index e4ab1f34..5db94f21 100644 --- a/devices/homie/modules/home-assistant/bluetooth.nix +++ b/devices/homie/modules/home-assistant/bluetooth.nix @@ -1,26 +1,9 @@ { config, + lib, pkgs, ... }: { - environment.systemPackages = [ - (pkgs.writeShellApplication { - name = "turnOnUE"; - - runtimeInputs = [config.hardware.bluetooth.package]; - - text = '' - cmd=0x0003 - bt_device_addr=88:C6:26:93:4B:77 - - # This is the MAC address on the first line of `bluetootctl show` - # without the `:` and with `01` added at the end - bt_controller_addr=E848B8C8200001 - - exec gatttool -b $bt_device_addr --char-write-req --handle=$cmd --value=$bt_controller_addr - ''; - }) - ]; # Setup Bluetooth hardware.bluetooth = { @@ -43,6 +26,46 @@ systemd.user.services.pulseaudio.after = ["bluetooth.service"]; systemd.user.targets.default.wants = ["pulseaudio.service"]; + # Turn On the speaker automatically when openwakeword is used + services.home-assistant.config = { + shell_command.turn_on_ue = lib.getExe (pkgs.writeShellApplication { + name = "turnOnUE"; + + runtimeInputs = [config.hardware.bluetooth.package]; + + text = '' + cmd=0x0003 + bt_device_addr=88:C6:26:93:4B:77 + + # This is the MAC address on the first line of `bluetootctl show` + # without the `:` and with `01` added at the end + bt_controller_addr=E848B8C8200001 + + exec gatttool -b $bt_device_addr --char-write-req --handle=$cmd --value=$bt_controller_addr + ''; + }); + automation = [ + { + alias = "Turn On UE"; + mode = "single"; + trigger = [ + { + platform = "state"; + entity_id = "wake_word.openwakeword"; + } + ]; + condition = []; + action = [ + { + action = "shell_command.turn_on_ue"; + metadata = {}; + data = {}; + } + ]; + } + ]; + }; + # Allow pulseaudio to be managed by MPD hardware.pulseaudio = { enable = true; @@ -53,27 +76,24 @@ }; # Setup MPD - services = { - home-assistant.extraComponents = [ - "mpd" - ]; + services.home-assistant.extraComponents = [ + "mpd" + ]; + services.mpd = { + enable = true; - mpd = { - enable = true; - - network = { - listenAddress = "127.0.0.1"; - port = 6600; - }; - - extraConfig = '' - audio_output { - type "pulse" - name "UE Boom 2" - sink "bluez_sink.88_C6_26_93_4B_77.a2dp_sink" - server "127.0.0.1" - } - ''; + network = { + listenAddress = "127.0.0.1"; + port = 6600; }; + + extraConfig = '' + audio_output { + type "pulse" + name "UE Boom 2" + sink "bluez_sink.88_C6_26_93_4B_77.a2dp_sink" + server "127.0.0.1" + } + ''; }; } diff --git a/devices/homie/modules/home-assistant/default.nix b/devices/homie/modules/home-assistant/default.nix index 6330b7aa..27cba9e3 100644 --- a/devices/homie/modules/home-assistant/default.nix +++ b/devices/homie/modules/home-assistant/default.nix @@ -47,7 +47,6 @@ mobile_app = {}; my = {}; sun = {}; - automation = {}; zeroconf = {}; }; };