Release Candidate and Support: Amazon Echo Control Binding

Hi @michi, the SSML is fantastic! I’ve been hoping you would add this feature since I heard of it.

I tested with my group of 12 echos (in the US) and see the same issue that we’ve been having with plain text. The following message repeats several times corresponding to random devices that don’t play after any given command.

2019-01-12 09:07:34.554 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler@1ff50d0': POST url 'https://alexa.amazon.com/api/behaviors/preview' failed: Bad Request
org.openhab.binding.amazonechocontrol.internal.HttpException: POST url 'https://alexa.amazon.com/api/behaviors/preview' failed: Bad Request
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:585) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.executeSequenceNode(Connection.java:1119) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.executeSequenceCommand(Connection.java:1104) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.executeSequenceCommandWithVolume(Connection.java:1095) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.Connection.sendAnnouncement(Connection.java:1061) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler.startTextToSpeech(EchoHandler.java:714) ~[?:?]
	at org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler.handleCommand(EchoHandler.java:600) ~[?:?]
	at sun.reflect.GeneratedMethodAccessor27086.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.201812141650]
	at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [102:org.eclipse.smarthome.core:0.10.0.201812141650]
	at com.sun.proxy.$Proxy194.handleCommand(Unknown Source) [265:org.openhab.binding.amazonechocontrol:2.5.0.Beta_02]
	at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [109:org.eclipse.smarthome.core.thing:0.10.0.201812141650]
	at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [109:org.eclipse.smarthome.core.thing:0.10.0.201812141650]
	at sun.reflect.GeneratedMethodAccessor174.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.201812141650]
	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [102:org.eclipse.smarthome.core:0.10.0.201812141650]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]

This is an interesting little quirk… On the Echo show it displays the text command:

This does not happen with the plain text.

I keep seeing discussions about calling a bunch of echo’s at once with the same message. I haven’t figure out how to do this w/o writing a rule that has 1 echo - one after another - saying the same thing.

Can you provide a rule example that calls all 12 echo’s at the same time to send the same message? I also have 12 echo’s (US) and I’m very interested in this rule.

Best, Jay

Thank you for the information, I think I have to implement a queue for this. But it’s a lot of work, so do not await in the next days.

This is a simple issue. I have to remove the xml tokens for the display json element.

@jwiseman: It would be nice, If you could test one more thing, the new api calls needs the customerId in two places and I’am not sure if they are both the account customer id or device customer id. Could you test an SSML text with one of your echos with the other owner?

Oh, thank you for this hint, I have not seen yet, that there is another alarmType for this. I will provide an additional channel for this is the next version.

1 Like

Dear Alexa experts,

I need a short hint how do decide between items I want to expose to Amazon Eche and those I only need on my OH server.

Could you please quickly check All items with tag are exposed to Google Assistant and Amazon Echo? and give an advice? Thank you!

Edit: Resolved in that discussion - thanks!

It worked! The Echo Dot is under my account; not my wife’s which is what OH runs under.

	      	Echo_Jay_textToSpeechVolume.sendCommand('60')
				Thread::sleep(2000)  // 2 second wait
	      	Echo_Jay_TTS.sendCommand('<speak>Excuse me Jay,<break time="3s"/> I detect <emphasis level="strong">your phone</emphasis>,<break time="3s"/> so you must be home now.</speak>')
				Thread::sleep(2000)  // 2 second wait

Best, Jay

1 Like

nextAlarm option showing UNDEF in HabPanel

I’ve implemented the nextAlarm option in order to tell the kids that an alarm is NOT set on their Echo’s when they go to bed Sun - Thur @ 8:35 pm.

The issue I can’t seem to resolve is; it’s showing UNDEF in HabPanel when one isn’t set. Is there anyway to show something like “Not Set” or “01/01/2000” vs. UNDEF?

I don’t think a MAP file will work because when one is set; the transformation wouldn’t work with the date/time value, am I thinking correctly on this?

The nextAlarm is a DateTime variable (read only) so I’m not sure how to do this?

Best, Jay

It doesn´t matter as the mapping wouldn´t be used if there´s a “correct” value.
It would create an log entry that says cannot transform 01/01/2000 with AlexaAlarm.map

It’s nothing complicated. I have all of the TTS items in a group in the items file.

Group Alexa_TTS_Alerts (Amazon_Echos)

String echo_office_TTS "Text to Speech"  (Alexa_TTS_Alerts) {channel="amazonechocontrol:account_info:textToSpeech"}
String echo_familyroom_TTS "Text to Speech"  (Alexa_TTS_Alerts){channel="amazonechocontrol:account_info:textToSpeech"}
String echo_playroom_TTS "Text to Speech"  (Alexa_TTS_Alerts){channel="amazonechocontrol:account_info:textToSpeech"}
...etc

You can call them with either:

Alexa_TTS_Alerts.sendCommand("Text")

or

Alexa_TTS_Alerts.members.forEach[ item |
				item.sendCommand("Text")
				]

Thank you! It worked and I learned more about mapping :wink:

Best, Jay

1 Like

I do not see the new channel . I on beta 2 and snapshot 1500 of openhab 2.5

Hello,
Steps for update from previous version (If you want use the new channels):

  1. Remove discovered echo devices from your inbox
  2. Remove all your existing echo things (If you have created them in PaperUI)
  3. Replace now the binding jar
  4. Create your things to get the new channels
  5. In PaperUI some channels are only shown if the “show more” (top right corner) option in the thing page is activated
3 Likes

Please check out my latest beta 2.5 (3). There is a new channel for the music alarm.

Beta 2.5 (3) Released

  • New channel for music alarm added
  • Small bugfixes

Download the latest beta from the top most posting.

1 Like

THanks!

I had to do thoses steps two times in a row…lol. When i just finished to set my things on beta 2… beta3 just showed up haha.

All is working good.

Hi,

I think iI did not see it.

But, is the web page api give access to write or delete an alarm?

Will chek to create a .thing file soon!

Did someone already tried to play something from the Amazon Sound Library?

I made a small test but this wasn´t working

echoArbeit_TTS.sendCommand("<speak>The sheep do <audio src='soundbank://soundlibrary/animals/amzn_sfx_sheep_bleat_03'/></speak>")

The new channel works like a charm!

Thanks!

1 Like