ESP32 S3 Box3

Found another set of “Panasonic” NCR18650B unprotected (without the [+] button) that fit the case like a glove.

Screenshot 2024-01-15 at 22.43.25

Thanks HJM for your guidance.

You’re most welcome Maverick. It is interesting to see your new battery % topping out at 97%. I may adjust the calculation if I can get one more sample of a new battery charging. I’d like to adjust it so that it tops out at 100% for new batteries.

Can you also give a sample graph of the battery discharging until power off?

Cheers,
John

Hi John, working on discharging the battery.

Strange that the SOC lifted a bit upwards at ~ 11H00. May be the mute switched on?

Screenshot 2024-01-16 at 13.37.19

Keep you posted when the battery is fully discharged.
Cheers

1 Like

The SOC is calculated from the voltage which in turn is dependent on the current draw. If the current drops a bit (such as if it goes into power save from radar absence detected, or other reason) then the voltage will increase a bit and SOC too.

That is also why there is a dip when it is still plugged in, but the battery stops charging. The charging voltage is 4.2V and battery voltage will keep climbing toward that level until the current going in drops below 500mA (set by a 2k ohm resistor on the board) at which point the charging/protection chip disconnects the charging voltage and the apparent battery voltage drops down a bit to its internal level.

1 Like

Hi HJM,

This is the discharge statistic from the moment I pulled the USB charger from the BOX-3 at 01/16 at 10H09, until he BOX-3 turned itself off.

Recharging it again.

1 Like

That’s great work Maverick. What are the values for

  1. The level plateau before unplugging the power supply (95%?)
  2. The point just before it sharply drops down near the end (35%?)

Even better would be the voltages, but I can approximate the voltage from the %.

Cheers, J

Your welcome HJM.

As per your request:

Cheers

I updated one of my ESP32 S3 Box3s from ESPHome version 2023.12.5 to 2023.12.7 and now my wake word detection does not work. Has anyone else seen this? I tried deleting the build directory and rebuilding everything, but that did not help. Here is the logs:

[09:28:37][D][voice_assistant:183]: VAD detected speech
[09:28:37][D][voice_assistant:410]: State changed from WAITING_FOR_VAD to START_PIPELINE
[09:28:37][D][voice_assistant:416]: Desired state set to STREAMING_MICROPHONE
[09:28:37][D][voice_assistant:200]: Requesting start...
[09:28:37][D][voice_assistant:410]: State changed from START_PIPELINE to STARTING_PIPELINE
[09:28:37][D][voice_assistant:431]: Client started, streaming microphone
[09:28:37][D][voice_assistant:410]: State changed from STARTING_PIPELINE to STREAMING_MICROPHONE
[09:28:37][D][voice_assistant:416]: Desired state set to STREAMING_MICROPHONE
[09:28:37][D][voice_assistant:517]: Event Type: 0
[09:28:37][E][voice_assistant:644]: Error: no_wake_word - No wake word detected
[09:28:37][D][voice_assistant:510]: Signaling stop...
[09:28:37][D][voice_assistant:410]: State changed from STREAMING_MICROPHONE to STOP_MICROPHONE
[09:28:37][D][voice_assistant:416]: Desired state set to IDLE
[09:28:37][D][esp_adf.microphone:234]: Stopping microphone
[09:28:37][D][voice_assistant:410]: State changed from STOP_MICROPHONE to STOPPING_MICROPHONE
[09:28:37][D][esp-idf:000]: W (44889) AUDIO_ELEMENT: IN-[filter] AEL_IO_ABORT

[09:28:37][D][esp-idf:000]: E (44893) AUDIO_ELEMENT: [filter] Element already stopped

[09:28:37][D][esp-idf:000]: W (44923) AUDIO_PIPELINE: There are no listener registered

[09:28:37][D][esp-idf:000]: I (44926) AUDIO_PIPELINE: audio_pipeline_unlinked

[09:28:37][D][esp-idf:000]: W (44933) AUDIO_ELEMENT: [i2s] Element has not create when AUDIO_ELEMENT_TERMINATE

[09:28:37][D][esp-idf:000]: I (44938) I2S: DMA queue destroyed

[09:28:37][D][esp-idf:000]: W (44944) AUDIO_ELEMENT: [filter] Element has not create when AUDIO_ELEMENT_TERMINATE

[09:28:37][D][esp-idf:000]: W (44950) AUDIO_ELEMENT: [raw] Element has not create when AUDIO_ELEMENT_TERMINATE

[09:28:37][W][component:214]: Component voice_assistant took a long time for an operation (0.22 s).
[09:28:37][W][component:215]: Components should block for at most 20-30ms.
[09:28:37][D][voice_assistant:517]: Event Type: 2
[09:28:37][D][voice_assistant:607]: Assist Pipeline ended
[09:28:37][D][voice_assistant:517]: Event Type: 1
[09:28:37][D][voice_assistant:520]: Assist Pipeline running
[09:28:37][D][voice_assistant:517]: Event Type: 9
[09:28:37][D][esp_adf.microphone:285]: Microphone stopped
[09:28:37][D][voice_assistant:517]: Event Type: 0
[09:28:37][E][voice_assistant:644]: Error: wake-stream-failed - Unexpected error during wake-word-detection
[09:28:37][D][voice_assistant:510]: Signaling stop...
[09:28:37][D][voice_assistant:410]: State changed from STOPPING_MICROPHONE to STOP_MICROPHONE
[09:28:37][D][voice_assistant:416]: Desired state set to IDLE
[09:28:37][D][voice_assistant:410]: State changed from STOP_MICROPHONE to IDLE
[09:28:37][W][component:214]: Component voice_assistant took a long time for an operation (0.21 s).
[09:28:37][W][component:215]: Components should block for at most 20-30ms.
[09:28:37][D][voice_assistant:517]: Event Type: 2
[09:28:37][D][voice_assistant:607]: Assist Pipeline ended
[09:28:37][D][voice_assistant:410]: State changed from IDLE to START_MICROPHONE
[09:28:37][D][voice_assistant:416]: Desired state set to WAIT_FOR_VAD
[09:28:37][D][voice_assistant:153]: Starting Microphone
[09:28:37][D][voice_assistant:410]: State changed from START_MICROPHONE to STARTING_MICROPHONE
[09:28:37][D][esp-idf:000]: I (45371) I2S: DMA Malloc info, datalen=blocksize=512, dma_buf_count=8

[09:28:37][D][esp-idf:000]: I (45378) I2S: I2S0, MCLK output by GPIO2

[09:28:37][D][esp-idf:000]: I (45388) AUDIO_PIPELINE: link el->rb, el:0x3d0435ec, tag:i2s, rb:0x3d043a00

[09:28:37][D][esp-idf:000]: I (45395) AUDIO_PIPELINE: link el->rb, el:0x3d043760, tag:filter, rb:0x3d045a40

[09:28:37][D][esp-idf:000]: I (45402) AUDIO_ELEMENT: [i2s-0x3d0435ec] Element task created

[09:28:37][D][esp-idf:000]: I (45410) AUDIO_THREAD: The filter task allocate stack on external memory

[09:28:37][D][esp-idf:000]: I (45417) AUDIO_ELEMENT: [filter-0x3d043760] Element task created

[09:28:37][D][esp-idf:000]: I (45423) AUDIO_ELEMENT: [raw-0x3d043890] Element task created

[09:28:37][D][esp-idf:000]: I (45429) AUDIO_PIPELINE: Func:audio_pipeline_run, Line:359, MEM Total:16584599 Bytes, Inter:100872 Bytes, Dram:100872 Bytes


[09:28:37][D][esp-idf:000]: I (45437) AUDIO_ELEMENT: [i2s] AEL_MSG_CMD_RESUME,state:1

[09:28:37][D][esp-idf:000]: I (45443) AUDIO_ELEMENT: [filter] AEL_MSG_CMD_RESUME,state:1

[09:28:37][D][esp-idf:000]: I (45451) RSP_FILTER: sample rate of source data : 16000, channel of source data : 2, sample rate of destination data : 16000, channel of destination data : 1

[09:28:37][D][esp-idf:000]: I (45456) AUDIO_PIPELINE: Pipeline started

[09:28:37][D][esp_adf.microphone:273]: Microphone started
[09:28:37][D][voice_assistant:410]: State changed from STARTING_MICROPHONE to WAIT_FOR_VAD
[09:28:37][D][voice_assistant:170]: Waiting for speech...
[09:28:37][D][voice_assistant:410]: State changed from WAIT_FOR_VAD to WAITING_FOR_VAD
[09:28:38][W][component:214]: Component voice_assistant took a long time for an operation (0.21 s).
[09:28:38][W][component:215]: Components should block for at most 20-30ms.
[09:28:38][W][component:214]: Component voice_assistant took a long time for an operation (0.21 s).
[09:28:38][W][component:215]: Components should block for at most 20-30ms.

I am seeing the same thing here.

Yes, count me in.

Also unable to rollback to 12.6 as produces an error on compile stating microphone component requires v2023.12.7

Seeing the same here as well.

It’s affecting me too. The correct place to report issues with esphome is Issues · home-assistant/core · GitHub rather than here.

I have opened an issue on this matter here:

Feel free to add helpful comments, but avoid adding “me too” clutter.

Great comment. Will provide additional context.

Does anyone know where I can buy one of these?

Same here. If I press ‘Factory Reset’ in the ESP’s devices/integration page, it works once but not again. After doing so, I sometimes see the following error messages in the devices’s ESPHome Logs:

[E][voice_assistant:644]: Error: wake-stream-failed - Unexpected error during wake-word-detection

[E][esp32.preferences:146]: Error saving 1 preferences to flash. Last error=ESP_ERR_NVS_INVALID_HANDLE for key=233825507

A new version of ESPHome has been published: esphome-2023.12.8. This version fixes the issue with not detecting the wake word.

1 Like

Update: This post is only relevant for people that use the ESPHome command line. The HA OS ESPHome Add-on already supports this functionality.

I created a way for Home Assistant to track new versions of ESPHome. In case anyone is interested, I am documenting it below.

I picked one ESPHome device (in the example below orange_box_3) to report the ESPHome version to Home Assistant by adding the following to the ESPHome YAML:

text_sensor:
  - platform: version
    name: version
    hide_timestamp: true

In HA configuration.yaml, I created a REST sensor to track the latest version of ESPHome:

rest:
  - resource: https://api.github.com/repos/esphome/esphome/releases/latest
    scan_interval: 21600  # 6 hrs
    sensor:
      - name: "ESPHome Latest Version"
        value_template: "{{ value_json.tag_name }}"

An HA automation will send a notification if the latest ESPHome version is different from the version on the device:

- id: updateAvailEsphome
  alias: Esphome Update Available Notification
  trigger:
    - platform: state
      entity_id: sensor.esphome_latest_version
    - platform: state
      entity_id: sensor.orange_box_3_version
  condition:
    - condition: template
      value_template: "{{ states('sensor.orange_box_3_version') != states('sensor.esphome_latest_version') }}"
    - condition: template
      value_template: "{{ trigger.to_state.state != 'unavailable' }}"
    - condition: template
      value_template: "{{ trigger.from_state.state != 'unavailable' }}"
    - condition: template
      value_template: "{{ trigger.to_state.state != '' }}"
    - condition: template
      value_template: "{{ trigger.from_state.state != '' }}"
  action:
    - service: persistent_notification.create
      data_template:
        title: "New Version Esphome"
        message: "Esphome {{ states('sensor.esphome_latest_version') }} is available (current version is {{ states('sensor.orange_box_3_version') }})."
        notification_id: updateAvailEsphome

Each esphome device has an “update.devicename” entity built in which does this out of the box. At least on ha os using the esphome addon. Or are you solving for something else?

1 Like

I have “update.devicename” entities for Z-wave and WLED, but none for ESPHome. I am using HA docker and esphome CLI, so maybe that is the difference.