Release Candidate and Support: Amazon Echo Control Binding

Actually, the createTimer() examples won’t work as desired, they spin off threads that come from a different thread pool from that used by Thread::sleep() and immediately return, which is to say there is effectively no delay to the calling thread when createTimer() is called. Your rule could actually be coded something like this:

rule "Test"
when
    Item itmTestSwitch changed
then
    echoKueche_TTS.sendCommand('Test Küche')
    createTimer(now.plusSeconds(1), [|
        echoWohnen_TTS.sendCommand('Test Wohnzimmer')
        createTimer(now.plusSeconds(1), [|
            echoFlur_TTS.sendCommand('Test Flur')
            createTimer(now.plusSeconds(1), [|
                echoArbeit_TTS.sendCommand('Test Arbeitszimmer')
            ])
        ])
    ])
end

Warning, the above may have typos and is untested, but should serve to illustrate the use of createTimer() in your rule.

[Updated to correct missing right paren at each plusSeconds() method call. Thanks for spotting that, @H102! ]

2 Likes

@scottk I just realized that I left out the [ | lambda part on my post above.:roll_eyes: I edited the post to point to yours.:wink:

1 Like

Hi @schaze ,

Could you check it with the beta 2.5 (1). It should fix this problem.

Best,
Michael

No, there is not public API to control the echo. The binding is build on the API calls done from the alexa web site.

Hello michi,
do you now if there is a way to access the alexa alarm clock events? I would like to fire some actions when my alarm clock(echospot) is ringing…make coffee, start hue sunrise etc…
At the moment I’m looking for Echos Player changes when my Presence Mode is set to sleep,
but this not a very elegant way.

Regards,
Olli

Currently only with an REST call through the binding proxy.
The url must be build depending on your installation.

http(s)://<youropenhab>/amazonechocontrol/<youraccountid>/api/notifications

e.g. assuming the OH is running on localhost:8080 and the Amazon Account think have the Id “account1”:

http://localhost:8080/amazonechocontrol/account1/PROXY/api/notifications

This call will return a json. It should be possible to use this in a rule.

But I’am thinking already about a new channel to provide the next alarm, timer and reminder. But there is not yet a timeframe for this.

Best,
Michael

1 Like

Is there any plans to control items directly, not via routines? I would like to control a thing that has on and off as an option in the app but is a thermostat thing. When setting up a routine it only allows me to change the temp of the thing which doesn’t actually work and no on or off option. I’m talking to the developers to see if they can fix but if I could control the thing direct it would prevent a bunch of one step routines (and fix my problem and not rely on the vendor)

Not from my side, because I have no devices which are only controlled from alexa.

Good afternoon,
I’m using Version 2.5.0, but for some reasons the “Off” command for turning the Alexa Radio “off”
seems not to work. I’m getting the following errors:

2019-01-05 16:31:33.871 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler@176147c': POST url 'https://alexa.amazon.de/api/np/command?deviceSerialNumber=G090L91181820AT&deviceType=A3S5BH2HU6VA' failed: Not Found
org.openhab.binding.amazonechocontrol.internal.HttpException: POST url 'https://alexa.amazon.de/api/np/command?deviceSerialNumber=G090L91181820AT&deviceType=A3S5BH2HU6VA' failed: Not Found
	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:583) [237:org.openhab.binding.amazonechocontrol:2.5.0.Beta_01]
	at org.openhab.binding.amazonechocontrol.internal.Connection.command(Connection.java:901) [237:org.openhab.binding.amazonechocontrol:2.5.0.Beta_01]
	at org.openhab.binding.amazonechocontrol.internal.Connection.playRadio(Connection.java:965) [237:org.openhab.binding.amazonechocontrol:2.5.0.Beta_01]
	at org.openhab.binding.amazonechocontrol.internal.handler.EchoHandler.handleCommand(EchoHandler.java:494) [237:org.openhab.binding.amazonechocontrol:2.5.0.Beta_01]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	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) [101:org.eclipse.smarthome.core:0.10.0.oh230]
	at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [101:org.eclipse.smarthome.core:0.10.0.oh230]
	at com.sun.proxy.$Proxy166.handleCommand(Unknown Source) [237:org.openhab.binding.amazonechocontrol:2.5.0.Beta_01]
	at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [108:org.eclipse.smarthome.core.thing:0.10.0.oh230]
	at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [108:org.eclipse.smarthome.core.thing:0.10.0.oh230]
	at sun.reflect.GeneratedMethodAccessor76.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) [101:org.eclipse.smarthome.core:0.10.0.oh230]
	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [101:org.eclipse.smarthome.core:0.10.0.oh230]
	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) [?:?]

I’m using the following code:

AlexaEcho_Radio.sendCommand(OFF)

Switch AlexaEcho_Radio "TuneIn Radio"   {channel="amazonechocontrol:echo:account:echo1:radio"}

Other functions like Text to Speech work fine.
Has anyone any ideas?
Many thanks!

Question: if I understand it right then that binding is not able to tts a value from an openhab item, isnt it?

What value are you wanting? Take a look at the lastVoiceCommand feature and tagging.

one case I want to use is to tts my temperature items. dont think that lastVoiceCommand helps for that, or I dont understand what the feature does / work.

what I tried to is:

rule "Read Temperature Living Room"
when
   Item TestSwitch changed from OFF to ON 
then
    var moep = TemperatureItem1.state
     EchoDotLR.sendCommand(moep)
end

but seems that the item object doesnt work with that tts feature :confused: a normal string does work.

Try this:

EchoDotLR.sendCommand("" + TemperatureItem1.state)

1 Like

Change the var to a string.:wink: or just use the [ “Temperature” ] tag on your item.

2 Likes

oh you are right. .toString solved it. thx a lot! [“Temperature”] Tag I will also try

edit: maybe one more question: is there a way to tts room temperature on keyword “alexa, what is my living room temperature” ? and what could be best code design for it?

1 Like

Temperature may be the wrong tag,:roll_eyes: I think it’s [ “Thermostat” ] but honestly I don’t use it but here’s a link to test your tags.

1 Like

I do believe that’s where the lastVoiceCommand comes into play. If you look up a few hundred post,:laughing: there are several examples.

EDIT: see post 1328

@DubZ if you do a forum search using “lastVoiceCommand” as keyword you’ll see about 7 or 8 post, not including this one, with info and examples. Guess I could simply post the link to the search.:smile:
https://community.openhab.org/search?expanded=true&q=lastVoiceCommand

Here’s one of the results from the search.

Enjoy.

3 Likes

Thx a lot for helping to search!

Is there any way that alexa doesnt always say (for example) “living room is not supported” (its translated by me from german :P)?

edit: mhh since I installed this binding my hue emulation seems to not working anymore.
edit2: after rediscover in alexa app it works again

Hello, everybody,
I have installed the Amazon Binding.
However, I always get this error message in the openhab.log:

2019-01-05 19:37:20.573 [INFO ] [mazonechocontrol.internal.Connection] - Login failed: POST url ‘https://www.amazon.de/ap/signin’ failed: Not Found

My password contains an @. Could this be the problem?

If I try it over this link http://192.168.XXX.XXX:8080/amazonechocontrol/
then I always get this as an answer:

��Y�s۶��]��9���0m�’m#���=u�L�����A�b�WHʏX���_v�{�s��,���b�[j2�’����m���&K����T����%���S=aM��k|gE��ʚ��a�g��x�)�VV�qQ��z>�NO�J��’'������p��Q7��’q%