Sonoff TX Ultimate and Voice Assistant

Hi to all,
I’m new to this forum, but not new at all with home assistant…
I’ve converted (or better… tasmotized :slight_smile: ) all of my home components since 2020 with plenty of mqtt (sonoff and esp8266 based built by myself) and zigbee devices.

I’ve recently bought some Sonoff TX Ultimate to test them (well, firstly with tasmota as I’ve never tried esphome before) and their features.

These seem really cool devices:

  • Touch panel with 10 horizontal points (as I live in Italy i’ve got the 120 version of these devices) and gesture support
  • up to 4 relays
  • Led controlled with standard library
  • Haptic support
  • Even a speaker!

What i’ve missed was only microphone support! So why not just add one?
After flashed with esphome I decided to pick up and solder a mems microphone.
I used an INMP441 (one of those with circular breakout board).
The microphone was soldered using these pins available on the TX Ultimate:
GND → GND Hole (the one used to power the board when flashing the firmware)
VDD → 3V Hole (the one used to power the board when flashing the firmware)
SD → GPIO 0 (The boot pin)
WS → RX Pin
SCK → TX Pin
L/R → Floating (not soldered)

The good news is that it works perfectly! I’ve tried it with my voice assistant (so with wake word, STT, TTS Feedback Etc.)

For those interested:
For better sound capture quality I’ve placed the microphone between the mainboard and the Touch PCB. The pcb itself has a small hole used for positioning it on the cover. So I’ve drilled it with a small point to remove the plastic support of the cover, and aligned the microphone with it.
I’ve also removed with a Dremel some plastic to fit the microphone. Then I’ve remounted the main motherboard and soldered the cables to it.
You could also reduce the microphone PCB board size to fit it in the cover, under the speaker without having to adapt it (except for the microphone hole), but it’s more complicated as you could damage the microphone itself
Or you could also simply put the microphone over the mainboard: No modifications needed, but probably the microphone will be less sensitive.

This is a photo of the microphone placed between the mainboard and the touch interface

And here you can find my ESPHome repository with the TX and Voice Assistant functionality: GitHub - PxPert/esphome: esphome configuration
Please note that this is still a work in progress!

Anyway the yaml configuration is more modular as possible. Right now it support:

  • Voice Assistant with led notification if wake word is active / Speech is detected / Response feedback
  • Support for 1 or 2 virtual buttons (more to come)
  • Light status feedback via LED (only the leds corresponding to the virtual button position will light up) with the possibility to turn them off
  • Gestures status feedback via different LED colors / transitions
  • Night light status

Next steps will be:

  • Enable/Disable night light status by long press (in a specific position)
  • Enable/Disable light feedback status by long press (in a specific position)
  • Enable/Disable Wake word light (If the VA Component is included) status by long press (in a specific position)
  • Start voice assistant via multitouch (If the VA Component is included)
  • Develop a sort of “Remote MQTT Relay” to emulate the standard deviators functionality

You can enable / disable some feature simply by including/excluding or selecting the corresponding yaml file (Ex. to use only 1 or 2 virtual buttons)

All of this would not be possible without Esphome, Home Assistant itself and blakadder who developed the touch component. So thank you all!

PS I still haven’t created a readme (With the references for blakadder hard work) for my repo and the touch component is roughly imported. As I’ve said: Work in progress :slight_smile:

Now some questions:

  • I’d like to implement a way to let the user set the specific gestures led colors / brightness via Home assistant. Is there any virtual light (or sort of) component I can use to implement this feature?
  • I’ve seen that by enabling wake word, the microphone is stopped and restarted every 5 second (without errors, I’ll post the log soon). Is this a normal behaviour?
  • Is there a way to post process the TTS sound? What I need is simply to amplify it because the speaker is not so loud.

Thanks for your support, and in case you’ve got questions about my project, just ask! :wink:

14 Likes

Very cool project,

Have you carried on ? i just bought a house and bought the TX5 ultimate to see if i switch everything to it.

I will flash mine this week and start playing with it