Google home / Assistant to control channels


#1

Hey there,

I’ve created a working solution to control channels with a Google assistant thanks to the new channels HTTP API. In order to do this you need to expose the port 57000 of the AppleTV/ AndroidTV/Fire TV device to the internet via port forwarding.

In addition to this you also need iftt. Create a recipe and for +this add Google Assistant.

Add the things similar to my options on the screenshot #1

The “#” part will be the number you need to say and gets send via a POST to channels.
That sentence means “Switch to channel #” and you can just say “Switch to channel 5” and it sends the channel number 5 to the API.

For the +that recipe add a webhook and set it to POST. The URL needs to be like this :
http://your.dyndns.name.or.ip:57000/api/play/channel/{{NumberField}}

Then save it and it should already work. Go to your google assistant and try to switch the channel. I have not tested the english sentence “switch to #”, but maybe google has that already reserved for google itself. You could then maybe use “ask channels to switch to #”

If you have any questions let me know


#2

Do you think I can make the work when I say switch to NBC? I realize it probably means setting up multiple iftt statements, but to me it’s more useful.


#3

Thats what I did, at least for the most used channels. Im not sure if google home allows this in English, but give it a try. Just replace {{NumberField}} with the Channel number.
Switch to NBC could be http://your.dyndns.name.or.ip:57000/api/play/channel/5 - just an example.


#4

Nice, works great. My only issue is “turn to” commands want to get sent to Harmony, once I unlinked that they worked fine. I’ll have to figure something out for that.


#5

Another way of doing this would be to say “ok google, tell channels to switch/turn to…” and you could keep the logitech Integration, I think


#6

I added it this morning. Works great. Now if somehow we could get more advanced and search for shows…


#7

Resurrecting this topic. I have this setup but I'm wondering how people are dealing with their IP address. Do you have static IPs from your ISP or are you using a dynamic DNS service?

Works really well and faster than Siri shortcuts.


#8

For Apple TVs you can use apple-tv-name.local

For example http://living-room.local:57000


#9

Don't think that will work in this case, still needs a ddns to be controlled by an IFTTT webhook. An official integration with google assistant would be great but I think it would be pretty complicated if you wanted to use channel names instead of numbers. There would have to be some way to query the DVR to match the number to the name since channel numbers vary by provider.

If you just wanted control by channel number should be easier, but would still have to call on a conversational action rather than direct. i.e. you could just say "hey google, turn to channel 850" you would have to say "hey google, ask channels to turn to 850". At least that Is how I understand it from their dev page.

https://developers.google.com/actions/extending-the-assistant#smart_home_actions

Since the API is using HTTP POST request already how would it be hard to add assistant integration?

"The user’s device sends the user’s utterance to the Assistant, which routes it to your fulfillment service via HTTPS POST requests."


#10

Yep IFTTT needs your external IP address or you need to use DDNS service. I don’t know how often Comcast changes IP address but that’s what I’m using for now.

Are there any risks with using a DDNS service? Are there any free services that are recommended?

Native Google Assistant like we have with Siri Shortcuts would be awesome.

Thanks.


#11

I use DuckDNS, the only problem is that IFTTT webhooks will change the channel on all clients that have 57000 port forwarded. There are ways around this, for example forwarding a different external port to 57000 for a client and having the command be "hey google, turn to ESPN on living room tv" but that involves setting up multiple IFTTT recipes for each device.

It would be great to have a simple solution to command apple device by it's name.