Google Say not working anymore since update to HA 0.72.1

Today I updated to HA 0.72.1 (from 0.70.1) and since then tts.google_say seems to be broken:

tts_test:
  alias: TTS Test
  sequence:
    - service: tts.google_say
      data:
        entity_id: 'media_player.livingroom'
        message: 'Hello World'

…throws two errors in the log file:

2018-06-26 11:06:48 ERROR (MainThread) [homeassistant.core] Error doing job: SSL handshake failed
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 593, in uvloop.loop.SSLProtocol._on_handshake_complete
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:833)
2018-06-26 11:06:48 ERROR (MainThread) [homeassistant.core] Error doing job: SSL error errno:1 reason: TLSV1_ALERT_UNKNOWN_CA
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 497, in uvloop.loop.SSLProtocol.data_received
  File "uvloop/sslproto.pyx", line 204, in uvloop.loop._SSLPipe.feed_ssldata
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:833)
2018-06-26 11:06:53 ERROR (MainThread) [homeassistant.core] Error doing job: Task was destroyed but it is pending!

Anyone else having this problem as well?

While I doubt, this is a client related problem: I’m using a valid LE SSL certificate for my HA instance, external access tis configured correctly and is working flawlessly.

I’m also receiving similar errors since upgrading to 72.1

2018-06-27 13:25:35 ERROR (MainThread) [homeassistant.core] Error doing job: <uvloop.loop.SSLProtocol object at 0x7f52cc9d69e8>: SSL handshake failed
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 592, in uvloop.loop.SSLProtocol._on_handshake_complete
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:777)
2018-06-27 13:25:35 ERROR (MainThread) [homeassistant.core] Error doing job: <uvloop.loop.SSLProtocol object at 0x7f52cc9d69e8>: SSL error errno:1 reason: WRONG_VERSION_NUMBER
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 496, in uvloop.loop.SSLProtocol.data_received
  File "uvloop/sslproto.pyx", line 204, in uvloop.loop._SSLPipe.feed_ssldata
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:777)

Did you check if you can call your google home by saying ok google as mine all google home stop responding as well.

Update:

I have to admit, I only tested this remote and actually wasn’t in earshot of the speaker. :grinning:

When I retested this yesterday, I discovered, that the text is actually spoken, but two errors are thrown anyway. They are similar but not always the same. Yesterday for example I got a TLSV1_ALERT_UNKNOWN_CA error instead of WRONG_VERSION_NUMBER:

2018-07-03 00:53:08 ERROR (MainThread) [homeassistant.core] Error doing job: SSL handshake failed
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 593, in uvloop.loop.SSLProtocol._on_handshake_complete
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:833)
2018-07-03 00:53:08 ERROR (MainThread) [homeassistant.core] Error doing job: SSL error errno:1 reason: TLSV1_ALERT_UNKNOWN_CA
Traceback (most recent call last):
  File "uvloop/sslproto.pyx", line 497, in uvloop.loop.SSLProtocol.data_received
  File "uvloop/sslproto.pyx", line 204, in uvloop.loop._SSLPipe.feed_ssldata
  File "uvloop/sslproto.pyx", line 171, in uvloop.loop._SSLPipe.feed_ssldata
  File "/usr/local/lib/python3.6/ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: TLSV1_ALERT_UNKNOWN_CA] tlsv1 alert unknown ca (_ssl.c:833)

First of all. There is breaking change for the cast device which will be auto discover by home-assistant. Cannot use the old cast config. Remove all cast config. Restart your HA. Then Ha will automatically discover your cast device. Even though only 1 popup come from frontend for you to configure. So configure it once. Then check from entity_registry.yaml that creates by HA. You will find the media_player.yourcastdevicename and so on.

example in entity_registry.yaml

media_player.bedroom_1_speaker:
config_entry_id: be9c26316e884f04aa45fdbc0862d02e
name: Bedroom 1 Speaker
platform: cast
unique_id: e3056d42-c033-f755-6028-0e70e88d6677
media_player.office_speaker:
config_entry_id: be9c26316e884f04aa45fdbc0862d02e
name: Office Speaker
platform: cast
unique_id: 27d46c62-94b8-3144-e8d0-25df008562ca

Uhm, yes, I saw the configuration popup on first startup of version 0.72.1 and “configured” it, but there weren’t any effects visible, neither in configuration.yaml or entity_registry.yaml.

I didn’t pay much attention to this, because I assumed, that the auto discovery didn’t find anything new, as my cast devices were already auto discovered before and worked without issues.

I’ll try again with manually deleting all cast devices from the entity registry and see, if there is any difference after rediscovery.

Edit: No, rediscovery didn’t change anything substancial. The errors are still thrown, when calling tts.google_say. The only difference I see, is the new attribute config_entry_id for all cast devices in entity_registry.yaml. But I don’t know the purpose of this new attribute. It holds the same ID for all discovered devices.

So when there is media_player.yourcastdevicename in the entity_registry.yaml, you see in the entity_id from your ha frontend. Now there is a media_player.yourcastdevicename in entity_id already.

Use the entity_id in your ui or service with tts google and see.

also set your tts google platform in configuration.yaml and base_url: http or https:// your_ha_ip:port (with port)

As I found out today, obviously I didn’t test this thoroughly enough: The errors only appear for my squeezebox components, not my cast devices.

As I’m testing this off-site again, I’ll have to retry this later, and see, if and how the tts commands are working on cast and non-cast devices and in which case the errors are written to the log.