Yet another Google TTS Problem with HTTPS, what's the solution?

So I’ve seen that this has been a problem in the past, and the Google TTS Page explains why, but the proposed workarounds don’t seem to work.

I may be missing something.

Configuration

HASS.io --> .0.90.1 running as a Proxy behind Apache.

When I head over to https://mysubdomain.mydomain.com:8123 I get in, and it’s beautiful.

When I manually send a message to the media_player.kitchen_speaker (Google Home) a new MP3 file is dropped into the TTS folder and the Google Home makes its bleep noise, but nothing is spoken.

The base URL for HASS.io is https://mysubdomain.mydomain.com:8123
The base URL for the Google TTS Platform has been one of:

http://<lan_ip_address>:8123
https://<lan_ip_address>:8123
http://mysubdomain.mydomain.com:8123
https://mysubdomain.mydomain.com:8123

In the States for the media player, the reported URL is formatted based upon these settings at the time of the MP3 creation. If I manually copy and paste that address into the browser, the only way I can get it to play the file is by using the URLs with the https address.

Since Google Home doesn’t play nice with https I would expect that using the http address, especially from inside the network would work, specifically using the IP address as the destination.

If I paste the http://<ip_address>:8123/api/etc... into the browser, I get an error and the page doesn’t load the file.

It seems I’ve managed to kill the ability to access HASS.io through any means aside from https.

Regarding the Cert for the site, here’s how I set it up:

In Virtualmin, I created a subdomain and a website and DNS entries ( I run my own name server on Ubuntu.) Then, I used Lets Encrypt to generate the cert. I then copied the contents of the cert and the key to the *.pem files in the SSL folder on HASS.io.

After that, I overwrote the conf files that Virtulamin created with the suggested HASS.io Apache Proxy configuration settings, and voila! I had a secure connection to HASS.io using http://subdomain.mydomain.com:8123.

So, it seems there’s something I need to do to enable the ability to access HASS.io locally using http as the address instead of https.

Any idea how to get this to work locally?

1 Like

over the years, chromecast and google tts has been so unstable, I finally got rid of all my google stuff and replaced with amazon polly and echo dot’s as speakers… This is so much more reliable… and I know that Amazon don’t have a history of simply canning hardware when it doesn’t make money…

So whilst not being an immediate or direct solution to your issues… I would strongly advise (for the sake of your sanity) to make the change… I have not looked back…

It’s an either or for http / https. If you’re not using ssl then http:/192.168.1.100:8123/local/somefile.mp3 works just fine. But if you are using ssl than you MUST use https://publicdomain.com:8123/local/somefile.mp3

The ssl certificate and the domain name must match. In a browser you can bypass this, on a cast device you cannot.

I have the same problem. I have followed the instructions from HA for TTS like you. If I use HTTPS it doesn´t work and I get not error in the log. If I force the HTTP base_url in configuration.yalm then I got the following error when sending the TTL to the Google Home Mini:

019-04-26 20:47:09 ERROR (MainThread) [homeassistant.core] Error doing job: SSL handshake failed
Traceback (most recent call last):
File “uvloop/sslproto.pyx”, line 500, in uvloop.loop.SSLProtocol._on_handshake_complete
File “uvloop/sslproto.pyx”, line 484, in uvloop.loop.SSLProtocol._do_handshake
File “/usr/local/lib/python3.7/ssl.py”, line 763, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: HTTP_REQUEST] http request (_ssl.c:1056)

I have the same problem . whe i change my access to Ha to https , the Google Home Mini stop of text speak , the connection work and i can see the music running in the G H Mini, and can change to next music.
only stop of work the TTS.

any solution? please

try to write config tts in this way:

tts:
  - platform: google_translate
    base_url: https://your-domain.duckdns.org:your-external-port

work ! tanks!