Jump to content

Recommended Posts

 

Except that the driver never receives anything directly from the physical Echo (and can't).  

 

Here's what happens when you say "Alexa, turn <trigger> <ON | OFF | UP | DOWN>"

1) The request to Alexa is sent through the Echo over wifi to the Amazon Cloud. C4 driver doesn't know this (and can't).

2) Amazon parses request for the trigger and command

3) Trigger processed by AVS/Echo (I may have b and c flipped here)

    a. If trigger is recognized as being related to an Echo function, function is executed and result returned to Echo.  C4 driver doesn't get any info.

    b. If trigger is related to an Amazon skill, trigger is passed to skill application for processing.  That ap controls the local Echo uses AVS.  C4 driver doesn't know anything.

    c. If trigger is recognized as related to a third party device, that code takes over.  In this case, Amazon checks the trigger against a list of defined Phillips Hue lights defined in the Amazon account.  If the "light" is found, Amazon sends a command to what it thinks is a Phillips Hue bridge (the C4 driver) using the Hue protocol.  This tells the "bridge" what "lights" are involved, what the command is (ON, OFF, UP, DOWN) and has Alexa say "Okay" (the AVS response to "I understood a request to do something with a Hue device).

   4) When 3 (c) happens the "bridge" (the driver) sees an external event (command from Amazon) with trigger name and desired event.  Driver converts the command request and compares trigger name to the defined Control4 events.  If a match is found, the C4 programming event is triggered.  This is all local to C4.  No acknowledgement or command is sent back to the Amazon Cloud for processing, because there is no interface for a Phillips Hue bridge to do so.

 

Keep in mind that logically the driver == a Phillips Hue bridge and that Amazon knows nothing about Control4 drivers or systems.

The driver essentially does three things:

  1) Emulate a Phillips Hue bridge controlling some lights/devices

  2) Listens for commands Amazon sends to that bridge

  3) Translates instructions for the Hue bridge to fire Control4 events.  Instead of a real bridge sending a command to turn a physical switch, the virtual bridge says "do this C4 programming".

 

The driver cannot communicate anything to the physical Echo other than what a Phillips Hue bridge can (e.g. a request to have the Amazon Cloud discover what devices are defined through the bridge (the triggers defined in the driver)).  The only communication the driver will ever get from Amazon is a command for a device it thinks is attached to a bridge.

 

To do anything more requires a direct TWO WAY path through the Echo.  This requires a driver that uses a different method than emulating a Phillips Hue bridge.

Share this post


Link to post
Share on other sites

OK so 3c is what I was confused on. I thought the echo itself communicated with the "Hue" and not Amazon itself. That is why I thought the "hue" could recognize which Echo sent the command and act accordingly.

Share this post


Link to post
Share on other sites

Yeah.  I found that out when I was looking to see how hard it would be to have Alexa say something other than "Okay" (or to not say it at all).

 

Bottom line is that to get any more control a new driver needs to be written (probably requiring a companion Amazon ap).  I'd look at writing it (the Amazon developer platform is free), but don't have access to what I need on the C4 side.  

 

Perhaps if this driver is successful enough for Ari, he and his developer can look at creating a true two way driver.   Imagine having Alexa being able to announce when the doorbell rings or the garage door has been open for more than 5 minutes. (You could do all that now if you just had a way to issue the "Simon Says" command)

Share this post


Link to post
Share on other sites

Two-way would be awesome. Heck, don't know if it's possible, but I can imagine a world in which we say Alexa play XYZ in living room and have it pipe the audio to our speakers there

Share this post


Link to post
Share on other sites
15 minutes ago, AnOutsider said:

Two-way would be awesome. Heck, don't know if it's possible, but I can imagine a world in which we say Alexa play XYZ in living room and have it pipe the audio to our speakers there

 

You can get close today.  "Alexa, turn Party Mix on" plays my party music in multiple zones and up and down raise/lower the volume.   Just can't use the word "play".

 

Two way is very possible today and conceptually fairly simple.  AVS does all the heavy lifting (voice recognition, command parsing/processing, response, control of Echo) so the developer can primarily concentrate on the application logic and function.

Share this post


Link to post
Share on other sites

Ah.  No, my Party Mix is just a trigger to play whatever through Control4.  Party mix plays a local playlist.   I could call the Amazon Cloud Player, but the music would be managed through Control4 and not streamed through Echo.

Now, if you hacked the Echo and ran a line out into the controller/audio matrix, (or if Amazon allowed you to connect an external Bluetooth speaker that the Echo would drive) you could have anything Alexa says/plays routed to any zone you like.  But to do what you want would require Echo to interface with the existing Amazon Cloud Player driver or provide similar function.

Share this post


Link to post
Share on other sites

Im sure that 2 way could currently be possible. Sonos can be an audio zone in the c4 system and play announcements. Even if it used 2 drivers, one for the VC and another to

stream audio / voice confirmation(announcements)

I hope this conversation gets people smart then I thinking

Share this post


Link to post
Share on other sites

It IS possible now, just not with the current driver.  

And you can't "stream" Alexa's voice as an announcement  - it's generated by the Echo, so there would have to be a way to capture and/or transmit it as an audio source.

Share this post


Link to post
Share on other sites

Let me chime in here since we are the ones who've developed this driver...

1) We've spent many hours trying to address the issue of using the same trigger words to perform different activities based on which room the command was spoken in.  Unfortunately, currently this is not possible (if using the same Amazon account for both Echos), because the Echos don't report the information of which specific Echo received the command.  Thus (for now), you have to either use slightly different trigger words for each room...or if you really really need to use the exact word, then you simply have to connect the 2nd Echo to a different Amazon account and add a 2nd driver instance.  Hopefully this changes someday and then we can enhance the driver accordingly.

2) Yes, the current driver advertises itself to the Echo as a Hue bridge, as Jim has pointed out numerous times.  Currently, this is the only way to integrate with an Echo, other than to create a skill (which has its own issues...I'll get to that in a minute...).  Perhaps Amazon will open itself up to a generic "connected home" device, and perhaps even support other device types besides lights, in which case we can enhance the driver to take advantage of that.  Right now it only supports lighting devices (whether hue, smart things, or wink)...so it doesn't have much in the way of built-in vocabulary for controlling blinds, locks, etc.

3) The Echo cannot currently be called, it can only make calls out.  It wants to be the controller, not the "controlee" (is that a word?).  So no we can't trigger it to announce things.  Hopefully you already have other speakers in the house that you can use to make announcements and don't need to rely on the Echo to be your audio system.

4) Regarding creating an Echo skill...we've thought about this but here are some downsides that made us not go that route:

- It requires you to say a much more lengthy statement to do anything, such as "Alexa, Trigger <Skill Name> to turn on the Kitchen", as opposed to "Alexa, Kitchen On".

- It is slower.  The skill is essentially a web service that the Echo can call, wait for a response, and then do something as a result.  So it is an extra network hop and not to mention, an extra point of failure.

- It will be more expensive - It relies on the skill provider to maintain a hosted server infrastructure to run the skill web services.  This increases the cost, and will increase the cost of the driver as a result (think VoicePod).  It also means that if the skill provider has an issue on their end, or God forbid, goes out of business, the skill no longer works :(  Even Amazon has hiccups with their services as we've seen...and they are the best in the cloud business...

- It needs to be approved by Amazon - doesn't happen quickly/easily...lots of red tape...


Hope that helps!

-Ari

 

 

Share this post


Link to post
Share on other sites
21 minutes ago, jfh said:

It IS possible now, just not with the current driver.  

And you can't "stream" Alexa's voice as an announcement  - it's generated by the Echo, so there would have to be a way to capture and/or transmit it as an audio source.

not saying that, echo can stream audio like sonos, so it seems that voice confirmation(programmable variables in the driver) can be an announcement played back thought echos speaker,

 BTW Ari, I love it great job.. for those not aware Voicer app for andriod by msgreen.. voice control for android devices

Share this post


Link to post
Share on other sites
26 minutes ago, 2kooltoys said:

echo can stream audio like sonos, so it seems that voice confirmation(programmable variables in the driver) can be an announcement played back thought echos speaker,

 

In order to play an announcement through the Echo speaker using info you would enter/program through the driver you need a method to convert the announcement text to a request to the Echo to generate the speech.  That means using AVS (Amazon Voice Services), which means a new driver (and probably a companion Amazon skill ap) OR you need to be able to request a particular file be streamed to the Echo (assuming you did not want the voice to be Alexa's).

Any actual streaming from the Amazon Cloud to the Echo is trivial, as it is part of the base Echo function.  The trick is to be able to stream a local file (not even sure AVS allows this) or generating a TTS request for Echo to process or requesting a stream from Amazon - none of which is possible with the current driver.

Share this post


Link to post
Share on other sites

Thanks for the thorough explanations guys. Also, let me just say that the driver itself IS great, so not knocking it -- just like to discuss the possibilities :)

Share this post


Link to post
Share on other sites
2 minutes ago, jfh said:

 

In order to play an announcement through the Echo speaker using info you would enter/program through the driver you need a method to convert the announcement text to a request to the Echo to generate the speech.  That means using AVS (Amazon Voice Services), which means a new driver (and probably a companion Amazon skill ap) OR you need to be able to request a particular file be streamed to the Echo (assuming you did not want the voice to be Alexa's).

Any actual streaming from the Amazon Cloud to the Echo is trivial, as it is part of the base Echo function.  The trick is to be able to stream a local file (not even sure AVS allows this) or generating a TTS request for Echo to process or requesting a stream from Amazon - none of which is possible with the current driver.

You need a skill to make alexa speak 

Share this post


Link to post
Share on other sites

Just read Ari's post - good reasons why we probably won't see expanded function any time soon.

But that is only a minor disappointment - for most this driver provides all the function you would ever use.  It's inexpensive, easy to use and as responsive as Amazon allows.

if you have an Echo and a Control4 system there is no reason not to have this driver in your project.  My wife absolutely LOVES what she can do with the Echo now and prefers talking to Alexa over using a C4 navigator.

Share this post


Link to post
Share on other sites

as for doing different functions based on where you are when you ask Alexa - what I do is have the code determine where I am based on other events/status.  Not as clean or easy, but good enough so that if I say "Alexa, Netflix on" the code usually figures out if I mean "in the Theater, Living Room, or Master Bedroom", especially in a two person household.

But I think I will end up with multiple Echos each on their own account to allow for more effective control in each Echo "zone"

Share this post


Link to post
Share on other sites
1 hour ago, jfh said:

as for doing different functions based on where you are when you ask Alexa - what I do is have the code determine where I am based on other events/status.  Not as clean or easy, but good enough so that if I say "Alexa, Netflix on" the code usually figures out if I mean "in the Theater, Living Room, or Master Bedroom", especially in a two person household.

But I think I will end up with multiple Echos each on their own account to allow for more effective control in each Echo "zone"

I am coming in here in the middle and read some of these posts, but why not have "Alexa, Living Room Netflix on" and "Alexa, Bedroom Netflix on", etc?  This way you can have the same Amazon account, different triggers and get different results?  I have Alexa/Echo in a position where she can hear me in 2 or maybe 3 rooms.  So I have "living room lights", "kitchen lights" and "hallway lights" and I have living room and kitchen audio (different sources/paths) so i have voice commands for each of those.  Does not mess up anything.

Share this post


Link to post
Share on other sites
1 hour ago, eggzlot said:

I am coming in here in the middle and read some of these posts, but why not have "Alexa, Living Room Netflix on" and "Alexa, Bedroom Netflix on", etc?  This way you can have the same Amazon account, different triggers and get different results?  I have Alexa/Echo in a position where she can hear me in 2 or maybe 3 rooms.  So I have "living room lights", "kitchen lights" and "hallway lights" and I have living room and kitchen audio (different sources/paths) so i have voice commands for each of those.  Does not mess up anything.

You only have 20 command slots.  That is an Echo limitation.

Share this post


Link to post
Share on other sites

30 device limit, not 20.

 

as long as you have enough device names available, you are better off with one Amazon account and one or more Echos.

 

i am at 27 or 29, so I don't have the luxury of being able to have separate Netflix triggers by room. :)

Share this post


Link to post
Share on other sites

hey folks....curious if someone could give me some quick advice on this related to programming a specific playlists on Sonos.  This is not specific to the Echo driver as I have all that working fine (its great!).  But, I want to be able to say "Alexa Turn "X" Playlist On" and have it play through Sonos.  Right now, I can turn on the Sonos but it starts playing whatever playlist is current in the queue.  I see "Current_Service" and "Current_Station" as programming variables which looks promising.  Has anyone done this?

Thanks,

BT

Share this post


Link to post
Share on other sites

If you want to program Sonos to tune to a specific station, your best bet is to setup some Sonos favorites, add the Sonos Favorites driver to your project, and then in programming, use that driver to trigger a Device Specific Command of selecting the favorite in whatever rooms you want to play it in.

As far as the Echo driver goes, someone in the other Echo thread just suggested using the keyword trigger "Sonos <channel name>" to trigger that programming...says it works well.

If anyone has some good keyword trigger phrases which work well, please reply to this thread and I will consolidate them all into one place for everyone to have as examples of triggers which work well.

thanks everyone for your support and suggestions!

Share this post


Link to post
Share on other sites

Here is the list I use:

 


Bar Lights
Downstairs
Front Door
Game Room
Game Table
Hallway 
Jukebox
Kitchen
Kitchen Table
Living Room
Lounge
Master Bedroom
My Audio
My Video
Netflix
Party Mix
Rockies Game
Slot Machine
Sonos
Stairs
Theater
TV
Upstairs 

 

i have some others, but they are very unique and probably not of interest to most.  (I really wanted "Shades", but Echo doesn't permit that as a light name).

Share this post


Link to post
Share on other sites
On 12/23/2015 at 11:17 PM, JArtman99 said:

Love the Driver and Ari was awesome.  Trying to add another Echo IP to the driver.  Do I need multiple instances or can I add more than one Echo IP to the Driver?  

can this driver control aircon and blinds? 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×