Alexa Announce Feature - Text to Speach via Alexa now a possability?

Not the Easiest, but using a browser (music.amazon.com), found a station, clicked share Station, and then copied URL, it was obvious what the station ID is. I’m sure you could so that with playlists, artists, etc.

For me this is just fine, I dont plan on doing this a whole lot. Would be more of an automation to start a station when I get home or something similar.

EDIT: Easiest option so far. Create a routine to play music. Pick the song, artist, playlist, etc. Choose your music provider such as Pandora, Spotift, amazon, siriusxm, etc, and save the playlist, then call the playlist using the script.

I created a routine called “music music music” called is like so:

alexa_remote_control.sh -e automation:‘music music music’

The routine does require you to select the echo you want or I suspect it will just default to your default echo.

Actually now that I have fully moved over I realize it’s a bit more of an pain than I realized. I have several automation based on people arriving or leaving a location. Since these dont go off all the time I did not realize until tonight.

Stuff like
Person X left “Zone name” at TIMESTAMP , and will be home in X minutes.

Now I’m just getting for example (left at 6:45)
45, and will be home in X minutes.

in your automations you could use

regex_replace(string, find=’:’, replace=’ ', ignorecase=False)

but i just tried and changing : to :: in the script also works i believe
in this line:

			TTS=$(echo ${COMMAND##*:} | sed -r 's/[^-a-zA-Z0-9_,?! ]//g' | sed 's/ /_/g')

after COMMAND##*

off course you need to change your command to

-e “speak::‘test 12:45’”

Adding the :: to the script kind of worked. Spoke time as numbers. Of course not like a time, but that can be worked. Only issue was when I spoke a sentence that started with a time stamp it added the word “speak” even though it was not in my automation. On my request for formatting, I got some good recommendations for better ways to provide the time without a colon that seems to be pretty good.

{{ as_timestamp (now()) | timestamp_custom('%-I %-M %p') }}

has worked well, I did not realize my timestamp_custom with the : was something i could change/remove.

Edit: I realized I forgot to add the second :: to the wrapper.sh script. That definitely solves the colon issue. Good deal! thanks again

OK, got it figured out. For Input_datetime, I just pulled the hour and minute attributes

ended up with this

Based on current traffic, you have 15 minutes to leave if you want to get to work by {{ states.input_datetime.work_time.attributes.hour }} {{ states.input_datetime.work_time.attributes.minute }}

Worked great, still have to figure out how to get it to speak leading 0’s better.

Right now, 8:30 speaks perfect,
8:05 says
8 5
8:00 says
8 0

Hey, just wanted to say, thanks for this. Set this up today and it worked 1st time. I created an automation to set the volume of my echos like so

  action:
  - service: shell_command.alexa_vol
    data_template:
      device: office
      volume: 30

This is really probably more of a yaml question, but is there an easy way to set the volume of multiple echos at once. I was thinking it might be a nice way to reset the volume of my echos on a regular basis. or maybe better use would be to max out all the volumes before sending an alert, like smoke detector warning, etc.

1 Like

I created this shell command to automate a routine:

sono_a_casa: sudo /home/homeassistant/.homeassistant/./alexa_remote_control.sh -e automation:"Alexa, sono a casa" -d "Echo Spot"

But it doesn’t work… i suppose the shell command must be inside quotes but don’t know which ones and how to put quotes… Any help?

This is the error i get:

Error running command: `sudo /home/homeassistant/.homeassistant/./alexa_remote_control.sh -e automation:"Alexa, sono a casa" -d "Echo Spot"`, return code: 1

NoneType: None

Try:

sono_a_casa: sudo /home/homeassistant/.homeassistant/alexa_remote_control.sh -e automation:“Alexa, sono a casa” -d “Echo Spot”

It’s what i have in shell_command… all without quotes…

Suddenly i get this from alexa_control.sh script:

ERROR: Amazon Login was unsuccessful. Possibly you get a captcha login screen.

 Try logging in to https://alexa.amazon.it with your browser. In your browser

 make sure to have all Amazon related cookies deleted and Javascript disabled!

But i don’t get any captcha login screen and i can visit the alexa.amazon.it with my account, but if i disable javascript cannot access anymore.
How to get the script working again?

Check for your cookie file. I suspect it is not there.

No, there is not anymore there… in /TMP i have only .alexa.login, but till this morning the script was working and the cookie file was there.
EDIT: i got the captcha, and succesfully accessed to alexa.amazon.it, but the script continue to send me that error…

If you restart your pi or sever the tmp directory gets cleared. The cookie gets deleted as well. You’ll need to get the cookie file again and put it in the tmp directory. It won’t won’t without the cookie

I have a feeling I may have the nameserver issue with hassio on virtualbox, anyone any idea how to check access?

And how to get the cookie file again? First time i run the script it was created automatically…

I’m running HA in a python VENV, not hassio on a RPI. This is what I did

I used firefox on my windows computer and then copied the cookie to my ubuntu server. I actually ended up putting the cookie in my /homeassistant/homeassistant/.homeassistant folder and editing the tmp path in the script. as outlined here

There are a lot of different ways to handle the cookie file depeding on your install, I recommend reading/skimming through all of the posts in here, there are a lot of discussions about the cookie file

Ok i did it… i am on hassbian with chrome as browser… found all the cookies and saved the one from amazon.it… it worked so i have again the script running…

How did you created that switch?
entity_id: switch.last_echo_used

I put this in my configuration.yaml

switch:
  - platform: command_line
    switches:
      last_echo_used:
        command_on: "/home/homeassistant/.homeassistant/alexa_remote_control.sh -lastalexa"
        command_off: ""

I have this in my sensor.yaml

  - platform: command_line
    name: Last Used Echo
    command: "/home/homeassistant/.homeassistant/alexa_remote_control.sh -lastalexa"
    entity_id: switch.last_echo_used

And i have this in automations where I want it to be updated

  - service: homeassistant.update_entity
    data:
      entity_id: sensor.last_used_echo

Ok thanks… for what u are using that sensor? Only to know which echo was last used?