Release Candidate and Support: Amazon Echo Control Binding

I deleted all groups in the Alexa app and remove the group for the Item Echo_Living_Room_TTS in the items file.

String Echo_Living_Room_TTS                   "Text to Speech"                         {channel="amazonechocontrol:echo:account1:echoLiving:textToSpeech"}
Dimmer Echo_Living_Room_TTS_Volume            "Text to Speech Volume"                  {channel="amazonechocontrol:echo:account1:echoLiving:textToSpeechVolume"}

Now the Item Echo_Living_Room_TTS should have nothing to do with any group :wink:

But this does not solve the problem.
Thanks for your help

Thanks for all your help.
I could solve my problem now by “Logout and create new device id” (by open the url YOUR_OPENHAB/amazonechocontrol in browser)

When I play an alarm sound can I also display a message on echo show and the same time.

Because right now it plays an alarmsound and the display just shows: It is 5:45pm
While I would like to display something like:
Alarm! Garagedoor is open

Hello!

I have a question regarding Amazon Echo Control Binding included in OH #1778 snapshot. Namely, does it support querying state of the device? I’ve upgraded OH to #1778, removed both, Amazon Account and My Echo Thing and recreated them, changed my items, so they use metadata instead of tags (to comply with v3.0 skill), but when I ask for the state of my device (light for example) Echo replies that “this is not supported yet”. Am I doing something wrong, or querying state of the device is not supported with this version of the binding?

Best regards,
Davor

Do you know what the request limit is how how many devices we can call at once? So we can stagger them in groups to not get this error?

I still get an error when it sends this and each group only has 3 members in it.

gDuringHours1_TTS.members.forEach[ i | i.sendCommand(Kettle1TTS)]
Thread::sleep(3000)
gDuringHours2_TTS.members.forEach[ i | i.sendCommand(Kettle1TTS)]
Thread::sleep(3000)
gDuringHours3_TTS.members.forEach[ i | i.sendCommand(Kettle1TTS)]

Not sure if i’m doing something wrong, but three members doesn’t seem like a lot to be getting a failed: Too Many Requests. error

Thats available in the beta (possibly the 2.5GM release as well?)

Show an announcement on the echo show or echo spot:

  1. Create a rule with a trigger of your choice

Simple:

rule "Say welcome if the door opens"
when
    Item Door_Contact changed to OPEN
then
    Echo_Living_Room_Announcement.sendCommand('Door opened')
end

Expert:
You can use a json formatted string to control title, sound and volume:

{ "sound": true, "speak":"<Speak>" "title": "<Title>", "body": "<Body Text>", "volume": 20}

The combination of sound=true and speak in SSML syntax is not allowed.
Not all properties need to be specified.
The value for volume can be between 0 and 100 to set the volume.
A volume value smaller then 0 means that the current alexa volume should be used.
No specification uses the volume from the textToSpeechVolume channel.

You can use a json formatted string to control the title and the sound:

{ "sound": true, "speak":"<Speak>" "title": "<Title>", "body": "<Body Text>"}

The combination of sound=true and speak in SSML syntax is not allowed

Note: If you turn off the sound and alexa is playing music, it will anyway turn down the volume for a moment. This behavior can not be changed.

rule "Say welcome if the door opens"
when
    Item Door_Contact changed to OPEN
then
    Echo_Living_Room_Announcement.sendCommand('{ "sound": false, "title": "Doorstep", "body": "Door opened"}')
end

I have some problems with the volume after echo spoke a text.
The comment is spoken at the right volume, because I set it to 6 in the rule - but afterwards echo is too quiet - I always have to turn the volume up. Any solution for that?
It´s a first generation echo.

Hi Marcus,
I will not support this device because I have no personal interest in this device. But I you are a developer (regardless of the programming language - the binding is my first java program, I’am normally a .NET developer, so this little bit of java should not be the problem), I would support you to add this feature to the binding.
Best,
Michael

Hi, there is only one native volume for the alexa. The TTS volume channel makes an emulation by setting the volume from the TTS colume channel, speak the text and reset the volume to the last known volume.
If you want generally change the volume, use the normal volume channel.

This is not related to the binding. Only the Alexa Skill is involved in this query.

Yes, I’am not sure, but I believe it is a GET to /api/notifications

Hello!

Thank you for your reply. I found out I posted question in the wrong topic, and I was sure I’ve deleted the post. Obviously, I haven’t. Sorry for the confusion.

Best regards,
Davor

Hi michi,

I know. I will try to get a log. Echo is speaking the text at desired volume and after that it is set to the volume before. when talking to alexa Approx. 1 hour later it´s volume is on the lowest level and you can hardly understand

This Binding has made my holiday. Was able to use it to control Halo Bluetooth mesh lights through an Alexa skill. Good job michi and everyone else involved.

Is it possible to play an “Alarm”-sound when a doorcontact is activated? If yes, how? Thank you!

@siod Yes, via rules.

Here I use Alexa to sound an alarm if the proxy item is on, when the garage door opens.

rule "Turn on alarm sound for 15 seconds if garage door opens"
when
    Item ESP_Easy_Door changed to OFF
then
    if(Garage_Door_Alert.state == ON){
        Echo_Plus_PlayAlarmSound.sendCommand('ECHO:system_alerts_atonal_02')
            if (stopAlarmTimer === null)
            {
            stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
            stopAlarmTimer.cancel()
            stopAlarmTimer = null
            Echo_Plus_PlayAlarmSound.sendCommand('')
            Garage_Door_Alert.sendCommand(OFF)
        ]
        }
    }
end

See the top of this thread for how to select the alarm you want use. Hint you will need to go to here: You will find the serial number in the alexa app or on the webpage YOUR_OPENHAB/amazonechocontrol/YOUR_ACCOUNT (e.g. http://openhab:8080/amazonechocontrol/account1 ).

As mentioned in first post:

Playing an alarm sound for 15 seconds with an openHAB rule if an door contact was opened:

  1. Do get the ID of your sound, follow the steps in “How To Get IDs”
  2. Write down the text in the square brackets. e.g. ECHO:system_alerts_repetitive01 for the nightstand sound
  3. Create a rule for start playing the sound:
var Timer stopAlarmTimer = null

rule "Turn on alarm sound for 15 seconds if door opens"
when
    Item Door_Contact changed to OPEN
then
    Echo_Living_Room_PlayAlarmSound.sendCommand('ECHO:system_alerts_repetitive01')
    if (stopAlarmTimer === null)
    {
        stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
            stopAlarmTimer.cancel()
            stopAlarmTimer = null
            Echo_Living_Room_PlayAlarmSound.sendCommand('')
        ]
    }
end

Note 1: Do not use a to short time for playing the sound, because alexa needs some time to start playing the sound.
It’s not recommended to use a time below 10 seconds.

Note 2: The rule have no effect for your default alarm sound used in the alexa app.

1 Like

will test asap, Thank you!!

Could you really solve this? With a little try-and-error I figured out, that the -syntax works just fine on an echo dot, but doesn’t on a Sonos Beam.
Has anyone got an idea why that is (and possibly how to fix it)?

So I tested this:

var Timer stopAlarmTimer = null

rule "Turn on alarm sound for 15 seconds if door opens"
when
    Item TuereWg changed to OPEN
then
    EchoWz.sendCommand('ECHO:system_alerts_repetitive_01')
    if (stopAlarmTimer === null)
    {
        stopAlarmTimer = createTimer(now.plusSeconds(15)) [|
            stopAlarmTimer.cancel()
            stopAlarmTimer = null
            EchoWz.sendCommand('')
        ]
    }
end

but Alexa is just saying “ECHO:system_alerts_repetitive_01”, not playing a soundfile…

@siod: Looking at ‘ECHO:system_alerts_repetitive_01’ in your rule is that correct when matched to the info from your amazon account?

I ask because the alert sound syntax is different when comparing yours to the example in the docs at top of topic. Note the last part does not have a _ between repetitive and 01.

Try changing your rule an use this line:

EchoWz.sendCommand('ECHO:system_alerts_repetitive01')