From d853f5f54f8921b39e1389ffc95d4edd4bfce977 Mon Sep 17 00:00:00 2001 From: Joshua Date: Wed, 25 Feb 2026 15:06:46 -0500 Subject: [PATCH] updates --- .HA_VERSION | 2 +- .../3d-printer-exhaust-fan-controller.yaml | 51 +++++ esphome/ha-remote-1.yaml | 59 ------ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 188 bytes .../__pycache__/sensor.cpython-312.pyc | Bin 0 -> 3750 bytes esphome/voice-assistant-1.yaml | 188 ++++++++++++++++++ 6 files changed, 240 insertions(+), 60 deletions(-) create mode 100644 esphome/3d-printer-exhaust-fan-controller.yaml delete mode 100644 esphome/ha-remote-1.yaml create mode 100644 esphome/ha-remote/components/max17043/__pycache__/__init__.cpython-312.pyc create mode 100644 esphome/ha-remote/components/max17043/__pycache__/sensor.cpython-312.pyc create mode 100644 esphome/voice-assistant-1.yaml diff --git a/.HA_VERSION b/.HA_VERSION index 62ba7b5..fcba00b 100644 --- a/.HA_VERSION +++ b/.HA_VERSION @@ -1 +1 @@ -2026.2.2 \ No newline at end of file +2026.2.3 \ No newline at end of file diff --git a/esphome/3d-printer-exhaust-fan-controller.yaml b/esphome/3d-printer-exhaust-fan-controller.yaml new file mode 100644 index 0000000..988853a --- /dev/null +++ b/esphome/3d-printer-exhaust-fan-controller.yaml @@ -0,0 +1,51 @@ +esphome: + name: 3d-print-exhaust-fan-controller + friendly_name: 3D Printer Exhaust Fan Controller + +esp32: + board: esp32-c3-devkitm-1 + framework: + type: esp-idf + +# Enable logging +logger: + +# Enable Home Assistant API +api: + encryption: + key: "/ShmmPWizefVS7KaU/IgbNgT6/Y6XZBwlqHqbpphNY8=" + +ota: + - platform: esphome + password: "bc4dc6b8569529e2954176f08a8d38de" + +wifi: + ssid: !secret wifi_iot_ssid + password: !secret wifi_password + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "3D-Print-Exhaust-Fan-Controller" + password: "BkRoiHuVvDyR" + +captive_portal: + +web_server: + port: 80 + +output: + - platform: gpio + pin: GPIO3 + id: fan_80mm_output + - platform: gpio + pin: GPIO4 + id: fan_120mm_output + +fan: + - platform: binary + name: "80mm Exhaust Fan" + output: fan_80mm_output + - platform: binary + name: "120mm Exhaust Fan" + output: fan_120mm_output + \ No newline at end of file diff --git a/esphome/ha-remote-1.yaml b/esphome/ha-remote-1.yaml deleted file mode 100644 index 3a27a73..0000000 --- a/esphome/ha-remote-1.yaml +++ /dev/null @@ -1,59 +0,0 @@ -substitutions: - device_name: ha-family-room-remote - friendly_name: "Family Room HA Remote" - -esphome: - name: ${device_name} - friendly_name: ${friendly_name} - on_boot: - priority: -10 - then: - - light.turn_on: ha_remote_backlight - - lvgl.page.show: home - - lambda: |- - id(last_activity_ms) = millis(); - -esp32: - board: esp32-s3-devkitc-1 - framework: - type: esp-idf - -logger: - level: DEBUG - logs: - gt911: DEBUG - i2c: DEBUG - max17043: DEBUG - -api: - encryption: - key: !secret api_encryption_key - -# Enable over-the-air updates -ota: - - platform: esphome - password: !secret ota_password - -wifi: - ssid: !secret wifi_iot_ssid - password: !secret wifi_password - power_save_mode: NONE - fast_connect: true - - # Enable fallback hotspot (captive portal) in case wifi connection fails - ap: - ssid: "${friendly_name} Fallback" - password: !secret fallback_password - -captive_portal: - -external_components: - - source: - type: local - path: ha-remote/components - components: [max17043] - -packages: - base: !include ha-remote/ha-remote-1.base.yaml - bindings: !include ha-remote/ha-remote-1.bindings.yaml - ui: !include ha-remote/ha-remote-1.ui.yaml diff --git a/esphome/ha-remote/components/max17043/__pycache__/__init__.cpython-312.pyc b/esphome/ha-remote/components/max17043/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..539298a8d961600fd85df9ccf63943a2d8cb12d1 GIT binary patch literal 188 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 literal 0 HcmV?d00001 diff --git a/esphome/voice-assistant-1.yaml b/esphome/voice-assistant-1.yaml new file mode 100644 index 0000000..07d373d --- /dev/null +++ b/esphome/voice-assistant-1.yaml @@ -0,0 +1,188 @@ +esphome: + name: voice-assistant-1 + friendly_name: Voice-Assistant-1 + name_add_mac_suffix: false + platformio_options: + board_build.flash_mode: dio + build_flags: + - -DCONFIG_ESP32S3_DEFAULT_CPU_FREQ_240=y + - -DCONFIG_FREERTOS_HZ=1000 + board_build.partitions: partitions.csv + on_boot: + priority: 600 + then: + - if: + condition: + switch.is_off: mute + then: + - micro_wake_word.start: + +esp32: + board: esp32-s3-devkitc-1 + framework: + type: esp-idf + +# Enable logging +logger: + level: WARN + +# Enable Home Assistant API +api: + encryption: + key: "oUOJJQHDaBvzKLAqfh3RwCEy9/KoFcj7AUgCSgTW/D8=" + +ota: + - platform: esphome + password: "48c1380a3d4d99d28bff36b2dc5c5e50" + +wifi: + ssid: !secret wifi_iot_ssid + password: !secret wifi_password + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Voice-Assistant-1" + password: "pypEyxtF4xJ5" + +captive_portal: + +# web_server: +# port: 80 + +psram: + mode: octal + speed: 80MHz + +light: + - platform: esp32_rmt_led_strip + id: led_ww + rgb_order: GRB + chipset: ws2812 + pin: GPIO16 + num_leds: 4 + name: "LED bar" + effects: + - pulse: + - pulse: + name: fast pulse + transition_length: 250ms + update_interval: 250ms + - addressable_scan: + name: scan + move_interval: 100ms + scan_width: 1 + +switch: + - platform: template + id: mute + name: "Mute microphone" + optimistic: true + on_turn_on: + - micro_wake_word.stop: + - voice_assistant.stop: + - light.turn_on: + id: led_ww + red: 100% + green: 0% + blue: 0% + brightness: 30% + - delay: 2s + - light.turn_off: + id: led_ww + - light.turn_on: + id: led_ww + red: 100% + green: 0% + blue: 0% + brightness: 30% + on_turn_off: + - micro_wake_word.start: + - light.turn_on: + id: led_ww + red: 0% + green: 100% + blue: 0% + brightness: 60% + effect: fast pulse + - delay: 2s + - light.turn_off: + id: led_ww + +i2s_audio: + - id: i2s_mic + i2s_lrclk_pin: GPIO6 # WS + i2s_bclk_pin: GPIO7 # SCK + - id: i2s_spk + i2s_lrclk_pin: GPIO45 # Use free pins on your board + i2s_bclk_pin: GPIO46 # Use free pins on your board + +microphone: + - platform: i2s_audio + id: va_mic + adc_type: external + i2s_din_pin: GPIO4 # SD + channel: left + pdm: false + bits_per_sample: 32bit + i2s_audio_id: i2s_mic + +output: + - platform: gpio + pin: + number: GPIO8 + allow_other_uses: true + id: set_low_speaker + +speaker: + - platform: i2s_audio + id: va_speaker + i2s_audio_id: i2s_spk + dac_type: external + i2s_dout_pin: + number: GPIO8 # DIN pin of the MAX98357A Audio Amplifier + allow_other_uses: true + channel: mono + bits_per_sample: 32bit + sample_rate: 16000 + +micro_wake_word: + models: + - model: hey_jarvis + on_wake_word_detected: + - voice_assistant.start: + - light.turn_on: + id: led_ww + red: 100% + green: 100% + blue: 100% + brightness: 30% + effect: scan + +voice_assistant: + id: va + microphone: va_mic + speaker: va_speaker + noise_suppression_level: 2.0 + auto_gain: 31dBFS + volume_multiplier: 4.0 + on_client_connected: + - if: + condition: + switch.is_off: mute + then: + - micro_wake_word.start: + on_client_disconnected: + - micro_wake_word.stop: + - voice_assistant.stop: + on_stt_end: + then: + - light.turn_off: led_ww + on_error: + - micro_wake_word.start: + on_end: + then: + - light.turn_off: led_ww + - wait_until: + not: + voice_assistant.is_running: + - micro_wake_word.start: \ No newline at end of file