Compare commits

..

2 Commits

Author SHA1 Message Date
5aa502ea98 Adjust AQ wordings 2025-05-24 19:44:59 -04:00
64cb43dec8 Rework startup MWW and gain levels 2025-05-24 18:15:17 -04:00

View File

@ -36,9 +36,13 @@ esphome:
id(pir_presence).publish_state(false);
id(light_presence).publish_state(false);
id(radar_presence).publish_state(false);
- light.turn_on:
id: output_led
effect: flash_white
- priority: -100
then:
- if:
condition:
- switch.is_on: enable_voice_support
then:
- micro_wake_word.start:
preferences:
flash_write_interval: 15sec
@ -274,32 +278,32 @@ logger:
api:
reboot_timeout: 15min
on_client_connected:
- logger.log:
format: "Client %s (IP %s) connected to API"
args: ["client_info.c_str()", "client_address.c_str()"]
- script.execute: light_off
- if:
condition:
lambda: |-
return id(enable_voice_support).state &&
!id(mww).is_running();
then:
- micro_wake_word.start:
on_client_disconnected:
- logger.log:
format: "Client %s (IP %s) disconnected from API"
args: ["client_info.c_str()", "client_address.c_str()"]
- if:
condition:
lambda: |-
return id(enable_voice_support).state &&
id(mww).is_running();
then:
- micro_wake_word.stop:
- light.turn_on:
id: output_led
effect: flash_white
# on_client_connected:
# - logger.log:
# format: "Client %s (IP %s) connected to API"
# args: ["client_info.c_str()", "client_address.c_str()"]
# - script.execute: light_off
# - if:
# condition:
# lambda: |-
# return id(enable_voice_support).state &&
# !id(mww).is_running();
# then:
# - micro_wake_word.start:
# on_client_disconnected:
# - logger.log:
# format: "Client %s (IP %s) disconnected from API"
# args: ["client_info.c_str()", "client_address.c_str()"]
# - if:
# condition:
# lambda: |-
# return id(enable_voice_support).state &&
# id(mww).is_running();
# then:
# - micro_wake_word.stop:
# - light.turn_on:
# id: output_led
# effect: flash_white
ota:
platform: esphome
@ -360,7 +364,7 @@ micro_wake_word:
id: mww
microphone:
microphone: mic
gain_factor: 31
gain_factor: 4
stop_after_detection: false
models:
- model: github://esphome/micro-wake-word-models/models/v2/hey_jarvis.json
@ -388,7 +392,7 @@ voice_assistant:
micro_wake_word: mww
use_wake_word: false
noise_suppression_level: 3
auto_gain: 31 dbfs
auto_gain: 4 dbfs
volume_multiplier: 8
on_wake_word_detected:
- logger.log: "Wake word detected in VA pipeline"
@ -548,7 +552,7 @@ sensor:
filters:
- offset: !lambda return id(temperature_offset);
- sliding_window_moving_average:
window_size: 4
window_size: 20
send_every: 1
humidity:
name: "SHT45 Relative Humidity"
@ -582,18 +586,18 @@ sensor:
return (b * alpha) / (a - alpha);
update_interval: 15s
# IAQ Index (1-5, 5=Excellent)
# IAQ Index (1-5, 5=Great))
- platform: template
name: "IAQ Index"
id: iaq_index
lambda: |-
int tvoc = id(sgp30_tvoc).state;
int eco2 = id(sgp30_eco2).state;
if (tvoc > 2200 || eco2 > 2000) return 1; // Unhealthy
if (tvoc > 2200 || eco2 > 2000) return 1; // Bad
if (tvoc > 660 || eco2 > 1200) return 2; // Poor
if (tvoc > 220 || eco2 > 800) return 3; // Moderate
if (tvoc > 220 || eco2 > 800) return 3; / Fair
if (tvoc > 65 || eco2 > 500) return 4; // Good
return 5; // Excellent
return 5; // Great
update_interval: 15s
# Room Health Score (1-4, 4=Optimal)
@ -748,11 +752,11 @@ text_sensor:
name: "VOC Level"
lambda: |-
int tvoc = id(sgp30_tvoc).state;
if (tvoc < 65) return {"Excellent"};
if (tvoc < 65) return {"Great"};
if (tvoc < 220) return {"Good"};
if (tvoc < 660) return {"Moderate"};
if (tvoc < 660) return {"Fair"};
if (tvoc < 2200) return {"Poor"};
return {"Unhealthy"};
return {"Bad"};
update_interval: 15s
# CO2 Level
@ -760,11 +764,11 @@ text_sensor:
name: "CO2 Level"
lambda: |-
int eco2 = id(sgp30_eco2).state;
if (eco2 < 500) return {"Excellent"};
if (eco2 < 500) return {"Great"};
if (eco2 < 800) return {"Good"};
if (eco2 < 1200) return {"Moderate"};
if (eco2 < 1200) return {"Fair"};
if (eco2 < 2000) return {"Poor"};
return {"Unhealthy"};
return {"Bad"};
update_interval: 15s
# IAQ Classification
@ -772,11 +776,11 @@ text_sensor:
name: "IAQ Classification"
lambda: |-
int iaq = id(iaq_index).state;
if (iaq == 5) return {"Excellent"};
if (iaq == 5) return {"Great"};
if (iaq == 4) return {"Good"};
if (iaq == 3) return {"Moderate"};
if (iaq == 3) return {"Fair"};
if (iaq == 2) return {"Poor"};
return {"Unhealthy"};
return {"Bad"};
update_interval: 15s
# Room Health