Release Candidate and Support: Amazon Echo Control Binding

Seems to be OK here in the UK too this evening. Hope it continues.

Brian.

Can anyone tell me the syntax I need to use for my rollershutter? I have an RF based shutter I want to either have at 0 or 100 but want to use the language - “open, close, raise, lower” but in either case it just goes from 0 to 100

This item seems to only increment by one when using raise or lower:

Rollershutter BR1_Blindtest "Test Blind [%d%%]" {alexa="RangeController.rangeValue" [category="INTERIOR_BLIND", friendlyNames="@Setting.Opening", supportedRange="0:100:100", unitOfMeasure="Percent", actionMappings="Close=100,Open=0,Lower=(+100),Raise=(-100)", stateMappings="Closed=100,Open=0"]}

You do not want positions other than open and close! What happens if you use, say 90, for the incremental settings. Besides its a skill topic not a control topic :slight_smile:

You can try if a device is created for this (You have to turn on the smart home device discovery in the Account thing) with the preview version from here. I have no device with internal sensor, so I can’t test it.

Im sorry, I dont understand what you mean?

That reads like you want it only Open or Closed and no where in between even with the commands Raise and Lower. Did I misunderstand? Also, you have Raise and Lower defined like this
Lower=(+100),Raise=(-100) Which means they will move to either fully open or closed position with the commands Raise, Lower.
Normally usage for Raise and Lower is, for example, (+/-10) so when commanding Raise, Lower the blinds move +/-10% from the current position.

This thread is for controlling your Echo devices using openHAB but in your question you are using Alexa skill’s to control your blinds. The thread for skills discussions is here:

… Something I knocked up earlier :slight_smile:

@michi Hi, can you please add announcement for all devices or a group of devices? So it would be possible to send only one request and ensure the announcement received by every device without “Too Many Requests.” error. I think its the wrong way to put this feature to tts because the alexa app also only allow to send announcements to all devices or a group of devices and output tts to only one device.

Regards,

Trintius01

1 Like

@m4rk my apologies, I will post in the right one

@michi Hi, i pulled your project, created a new ChannelHandlerMultiAnnouncement and added it to the AccountHandler to make it possible to send one “multiAnnouncement” to all devices connected to an account with only one request. (like the ChannelHandlerSendMessage) Ive seen the sendAnnouncement method was well prepared to handle multiple devices. It works fine, got a new channel called “Announcement” on the Amazon Account Thing. To the fact that this is the first time i worked on an openHAB Binding i don’t know if this is the right way to implement an announcement to the account. Maybe i could send you the project and you would check the changes? I also would implement “groupAnnouncement” like you suggested in a previous post - if you like - but i have to know if i do all the things the right way.

Regards,

Trinitus01

3 Likes

@michi Hi, i found a bug in the announcements sent to my fire tv cube. If i send the following string to the fire tv cube it show the message with the xml tags on the screen:

<speak><amazon:effect name="whispered">Dies ist ein Test</amazon:effect></speak>

Maybe its the same behavior on echos with a display like the echo show aso. I don’t own one of these devices, so i am not able to verify it. Can anyone else verify this?
I fixed it and now it only shows the string without the xml tags.

Today i also found the time to implement your idea with the stacked or grouped announcements. Now it waits 1 seconds if the binding receives more than one announcement with the same speak, text and title. If there are more than one, it sends them all with only one request. Tested for multiple commands and for groups and it works like a charm.
I only added it to the announcements, not to tts because i don’t wanted to convert a tts to an announcement. They act different on the devices so i still think its better to not mix them up.

Regards,

Trinitus01

1 Like

Hi,
I am getting this error in my log ver often, no matter to which of my Echos I talk. Can someone help me with it:

[WARN ] [trol.internal.handler.AccountHandler] - handling of websockets fails

    org.openhab.binding.amazonechocontrol.internal.HttpException: GET url 'https://alexa.amazon.de/api/activities?startTime=1580742806605&size=10&offset=1' failed: Bad Request

    	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequest(Connection.java:648) ~[bundleFile:?]

    	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:500) ~[bundleFile:?]

    	at org.openhab.binding.amazonechocontrol.internal.Connection.makeRequestAndReturnString(Connection.java:495) ~[bundleFile:?]

    	at org.openhab.binding.amazonechocontrol.internal.Connection.getActivities(Connection.java:945) ~[bundleFile:?]

    	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.handlePushActivity(AccountHandler.java:777) ~[bundleFile:?]

    	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.handleWebsocketCommand(AccountHandler.java:722) ~[bundleFile:?]

    	at org.openhab.binding.amazonechocontrol.internal.handler.AccountHandler.webSocketCommandReceived(AccountHandler.java:710) [bundleFile:?]

    	at org.openhab.binding.amazonechocontrol.internal.WebSocketConnection$Listener.onWebSocketBinary(WebSocketConnection.java:406) [bundleFile:?]

    	at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onBinaryMessage(JettyListenerEventDriver.java:103) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.message.SimpleBinaryMessage.messageComplete(SimpleBinaryMessage.java:68) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:65) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onBinaryFrame(JettyListenerEventDriver.java:74) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:145) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:321) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:202) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:226) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.Parser.parseSingleFrame(Parser.java:262) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:582) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:441) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:428) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:426) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:320) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:158) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:367) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:782) [bundleFile:9.4.20.v20190813]

    	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:918) [bundleFile:9.4.20.v20190813]

    	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]
1 Like

Try giving OH a restart or reboot.

1 Like

Did reboot and restart several times, but I think the error occurs when there are too many “Alexa calls” in a short period of time.
It seems to be a problem from the Amamzon server side.

Yes that can be a problem and is mentioned several times in this topic. You can move to the beta version, I think it supports multi messages just not multi TTS messages.

1 Like

Thanks for the help.
For now I disabled the logging of WARN for the binding, should do the trick for me, as everything works smooth.

1 Like

@michi

  • added stacked or grouped textToSpeech via sequences
  • added set ttsvolume in stacked or grouped announcements & textToSpeech via sequence
  • fixed update or refresh volume immediately after a command (before updated on second command and broke ttsvolume, command, volume sequence)
  • fixed update or refresh volume immediately after manual echo button press (before did not update or refresh anyway)

Regards,

Trinitus01

1 Like

Where can this update be downloaded?

Hi,

thank you very much for your interest in the update.
I would really like to publish the modified version,
but there is still no response from the initial contributor @michi.
He has to revise the code first and maybe merge the changes into the official version or else it could happen that two different versions exists.
Otherwise if he agrees I could send the modified version to designated people for testing.
Until i receive feedback from @michi we have to remain patient.

Regards,

Trinitus01

4 Likes

I too am getting Bad Request errors.
It is getting difficult to know in which thread to report such issues.

Regards
Paul

Great to see that you fixed these bad requests!