[Release] Google Home Assistant Relay Driver (v1 and v2)- text to speech on Google Home devices

IPv6 needs to be DISABLED on your home router. Otherwise, you'll get the exact behavior you're seeing.

Thank you, Dan and Ryan! I finally got it working. I appreciate your willingness to help . . . you are great examples of how a support community should work!

2 Likes

@ogiewon Is it possible to make it work with letters Å Ä Ö? Can't make it say anything when these letters are involved.

dev:3912019-04-14 01:57:00.674 warnThe target server failed to respond
dev:3912019-04-14 01:57:00.654 debugSending { "command": "ööö ååå äää ","user": "tjo","broadcast": "true" } to xx.0.0.xx:3000
dev:3912019-04-14 01:56:51.093 debugSending { "command": "test","user": "tjo","broadcast": "true" } to xx.0.0.xx:3000

These command works perfectly when trying this from command line

 curl -d '{"command":"test å ä ö, and it works", "user":"tjo", "broadcast":"true"}' -H "Content-Type: application/json" -X POST http://xx.0.0.xx:3000/assistant

Those characters probably need to be escaped. Anyone know how?

1 Like

I found this, but i don't get it as a i'm not a programmer.

http://groovy-lang.org/syntax.html#_escaping_special_characters

Probably not the best solution but i solved it by adding this code. Now my google assistant can speek Swedish when broadcasting =)

	message = message.replaceAll("%20", " ")
	message = message.replace("Å", "\\u00C5")
	message = message.replace("å", "\\u00E5")
	message = message.replace("Ä", "\\u00C4")
	message = message.replace("ä", "\\u00E4")
	message = message.replace("Ö", "\\u00D6")
	message = message.replace("ö", "\\u00F6")
1 Like

Thanks @chrbratt! I have added you improvements to both the v1 and v2 Drivers in my GitHub repository.

2 Likes

Probably aren't working because Sweedish isn't in the supported languages of the Google Assistant SDK which Assistant Relay is based off of. As long as you found a proper workaround for it.

Added ø æ Æ Ø also so there is a complete support for these Scandinavian/Nordic Letters. (Danish, Norwegian, Swedish and Finnish.) It works fine here and my assistant speaks these letters correct and can pronounce words correct when this was added. I live in Sweden and have Swedish selected on my Google Home unit.

Maybe i misunderstands you @Ryan780 ?

	message = message.replace("Å", "\\u00C5")
	message = message.replace("å", "\\u00E5")
	message = message.replace("Ä", "\\u00C4")
	message = message.replace("ä", "\\u00E4")
	message = message.replace("Ö", "\\u00D6")
	message = message.replace("ö", "\\u00F6")
	message = message.replace("Ø", "\\u00D8")
	message = message.replace("Æ", "\\u00C6")
	message = message.replace("æ", "\\u00E6")
	message = message.replace("ø", "\\u00F8")

Google Assistant supports those languages, so it is able to pronounce them. Google Assistant SDK (Software Development Kit) doesn't support them. So, when they are received by Assistant Relay, relay doesn't recognize them and isn't able to transmit them to the Google Home device. But since Assistant supports them, translating them into their ASCII code codes before they go to Assistant Relay, you're doing the work for it. At least that's what I'm guessing.

http://developers.google.com/assistant/sdk/reference/library/languages

Don't this command and that it works to send it, and Google Assistant plays it fine prove that theory wrong ?. Should this command also not have to be translated to ASCII then if SDK didn't support it. ?

You have to excuse me, but this is certainly not my cup of tea. Hence, to the questions and my perhaps stupid logic in this from my side :smile: .

Okay...then it's the Groovy in HE that isn't working. LMAO. Either way, it wasn't working, right? And now it is. So, what's the problem?

Any of the Nordic languages are not supported by the SDK. you can see that by the Google Assistant SDK page I linked to. Unless you're claiming Google is wrong about their own code.

Why the hostility?

Sorry, no hostility. You must have got me wrong and my bad english. :blush:

Absolutely no hostility!

1 Like

By that said. Google translate is not that all helpful if you get it that way. :smile:

Thanks for the extra tweaks. I have updated my GitHub with these extra letters.

I am stuck trying to get the Google Assistant Relay working. I wanted to try running a docker instance of the relay on my Synology NAS instead of using a Pi. I found the following in the dockerhub registry: Docker Hub. I installed this and created the json file from the google project I setup (per the word doc above). I am now at a point where I need to transfer the json file to the configuration/secrets folder of the docker instance and on page 15 of the doc, it suggests using WinSCP to do this. I don't have logon details to the docker instance so I would need to create an account and would likely need to open a port for SCP.

I guess I could scrap the docker instance and spin up a Pi instead. Is there a docker that anyone recommends that I could use to mimic the pi so that the instructions would work exactly. I am technical and I can google around and fumble around linux but...

Thanks!

Edit, I forgot about the ARM processor in the Pi vs the celeron on my Synology NAS. Its not worth the trouble I don't think. I will just get a new Pi setup.

Just wanted toss a shout out to @ogiewon. My reason. I recently purchased a new camry with remote start. After some looking around there do not seem to be any community integrations for the toyota entune system. On a side note I have this thing where I want to be able to control EVERYTHING through hubitat, I think it may be a problem.

My initial thoughts was that there would not be a way to do this. Then the epiphany. Toyota has a decent google assistant integration. After some struggle with downgrading my node so I could run the assistant relay I have confirmed I can start / stop my car. Lock/unlock doors through the assistant relay driver in hubitat. Also ask how much gas i have although this information come back in the terminal.(is there anyway to access this information in the driver?).

Anyways am quite pleased. Thanks as always @ogiewon for making this work for us.

3 Likes

Instead of using cp, use docker cp from your shell in your host.

docker cp name.json {containerID}:/home/pi/assistant-relay-folder

Before getting the driver to deal with it would be getting the information out of Assistant-Relay which is a HUGE undertaking. It's been discussed on other forums with regards to assistant relay and considering that the original developer has pretty much completely moved on, very little chance of this unless you can find someone to recruit to do it or learn to do it yourself. Sorry.

Well I can see this info being logged to console on my pi. I actually have already started mess with the server and have it able to send a post with what I want.

Am working on app to recieve the data next. Wish me luck.