EchoSistant

The Unofficial SmartThings Blog
Jump to: navigation, search



EchoSistant is an interface between you and Alexa. It is designed with the user in mind. We feel

that we should talk to our smart home in the most natural ways possible, we should be able to say what

comes to our minds and our house should respond appropriately. EchoSistant is the solution.

We can now speak to our homes and receive the expected actions and responses. There are no strict

speech rules that must be followed. Just speak to Alexa in a normal comfortable way. That's it!


Home Automation up to this point has been very clinical and sterile; Turn on the light. Set the fan to 35%.

While these commands are concise and to the point, they tend to not feel like a natural way of speaking.

Wouldn't it be better if you could tell your home that the living room is too dark? Or that it is too

cold downstairs? The lights smoothly increase and the heat turns up, just as they should!

We have worked hard to ensure EchoSistant gives you a more personal interaction with your home. We want

you to be able to just say what they want, without having to remember certain phrases and word order.

EchoSistant was designed from the ground up to improve your experience with Alexa and to make your home smarter.


EchoSistant is designed to make your life easier, to help you with your daily tasks, and to really

make your Alexa enabled devices into what it was you expected when you opened the box.

Welcome to your new Home Assistant.....


App-Echosistant@2x.png


....................==EchoSistant==....................


Category: My Apps

Author: Jason Headley - ST community handle @Bamarayne

Author: Bobby Dobrescu - ST community handle @BDOBRESCU

Code contributions and Assistance:

- Keith DeLong (N8XD) for original Lambda format and troubleshooting. He got the original Lambda running with me.

- Michael Struck (MichaelS) for his work on AskAlexa, his influence that lead me to start to this project. His help

with my learning to write the code that brought this app into existance.

- Jake (Entityxenon) for the Hue Color Filter, AppLink compliance, and other misc. code contributions and troubleshooting.

- Adrian (ady624) for his skillful troubleshooting and guidance.

- Eric Thayer (eThayer) for his outstanding work in the EchoSistant Security Suite Module. His work is greatly appreciated

and it is even more appreciated that he allowed us to incorporate his code directly in EchoSistant.

- Anthony Pastor (Infofiend) for his use of the Virtual Person DTH, and the method to create it. This DTH really stands

and allows us to offer more features with the Virtual Person Feature.

- And a special thanks to all of our beta testers that helped get EchoSistant ready for the masses

- SmartThings for all of the code examples and other things we've used in this app

Documentation contributions: JD Roberts

- I'd like to give a special thank you to Bobby Dobrescu @bdobrescu, the co-author of EchoSistant. His patience and

dedication to this project is what has made it what it is today. Without his skill and hard work we would not have

what we have now.




RoadMap

UPDATE for 27 Nov 2018 - You can now run your WebCore pistons just by telling your Alexa to run it! Be sure to update your EchoSistant to the latest versions!


23 November 2018. EchoSistant ver. 4.6 will be available soon. We have streamlined the app to remove the things that Alexa can now do natively. As you already know, EchoSistant was designed to work with your Alexa devices to better your experience, not to replace the native Alexa controls. Though you will notice some things are no longer there, we have added in some great features to take their places:

- Compound Commands - Give more than one command at a time to Alexa

- Full integration with the new Echo Speaks app.... and much more coming on this as well

- Individual device controls without the need for AWS skill updates of lists

- More feedback options

- Delays for any and all commands with the ability to easily cancel the delay.


EchoSistant v4.6 has the streamlined install process introduced in v4.5. You no longer have to update any AWS Lists, or Utterance files every time you make a change in one of your Rooms. You just make the change and you are done. The only updates will be when there are changes from us. Reliability has improved as well as the ease of use of the overall app. We hope you enjoy it as much as previous versions. If there is anything gone that you want back, let us know!




EchoSistant Software - Current Releases

These are the most current versions of all applicable software for EchoSistant The Names below are how the code will look once installed in your IDE
EchoSistant Apps Code - Install in SmartThings IDE File Location
Echo : EchoSistant v4.6 EchoSistant Parent
Echo : EchoSistant Rooms v4.6 Rooms Child App
Echo : EchoSistant Rooms Logic Blocks Logic Blocks Child App
Echo : Virtual Person Device Handler Virtual Person DTH
Amazon Lambda and AWS Skills File Location
Lambda Code Lambda Code
Rooms - Intent Room Skills JSON



Minimum Requirements

You will need the following in order to fully utilize the EchoSistant smart app.


Accounts

- Amazon Lambda Account

- Amazon Developer Account

- Amazon Alexa Account and Hardware

- SmartThings IDE Account access

- SmartThings account with active ST Hub, V1 or V2

- I am not sure how well this app will work with the new ST mobile app or with the V3 hub.


Installation

 You can perform an easy install and update process by using the Community Installer by Tonesto7.
 
 Community Installer

Accounts Registration - Amazon

Lambda

 1. In your web browser navigate to the Amazon Web Services website found here - AWS Lambda
 This is where you will create/register your AWS Lambda account and create your EchoSistant Lambda Function
 Click on the "Create a new AWS account" button displayed below.  Note that your webpage may appear differently than what is 
 shown here, but the following pages should be essentially the same.


Lambda-0.JPG


 2. Enter your information. Please NOTE that your email address must be the same email that your Amazon Alexa account is registered to.
 


Lambda-1.JPG


 3. Complete all of the information on this page and click on "Create Account"


Lambda2.JPG


 4. On this page ensure you click on the "Personal Account" radio button. Complete the information and click on
 "Create account and continue"


Lambda3.JPG


 5. This page is asking for your credit card information.  If there ever is a charge, it would be amazing.  For 
 personal use the number of times a month that an account would have to be used is extremely high, I believe 
 close to a million times of using Alexa to be charged a $1.00.  You should definitely be ok.
 Complete the Credit Card information and the steps for the Personal Identification on the next couple of pages.
 You will receive an automated phone call requesting a PIN that will appear on the following screens.
 In the two years that I have been using this system I received my first bill in November 2017. It was 14 cents.


Lambda4.JPG


 6. Choose the basic plan on this page and continue


Lambda5.JPG


 7. Complete all of the steps for ID verification and then click on the "Complete Sign Up" button.  
 And you are done.


Lambda6.JPG



AWS Skills

 1. Click here to navigate to the Amazon Developer Website:  AWS Skill
 Once you are there, click on the "Create your Amazon Account" button.

AWS-1.JPG



 2. Follow the steps in the following pictures to complete your account creation.  You will
 need to supply all of the required information:


AWS-2.JPG


Aws4.JPG


Aws5.JPG


 3. When you get to the steps shown below, tap on "Save and Continue".  This concludes the account creation.


Aws6.JPG




SmartThings IDE - Code Installation

Parent App - Install

 1. Log-in to the SmartThings IDE at ST IDE  
 Once you log-in ensure you are able to see your hub and devices under the Locations tab.
 **It is assumed that the user has already registered their account on the SmartThings IDE website.  If you have not,
 please do so before proceeding any further.**

IDE Login.JPG


2. Navigate to the SmartApps Section of the SmartThings IDE by clicking on the Link displayed below:


SA Link.JPG


 3. Create a new smartapp by clicking on the NewSA button.JPG button found in the top right corner of this page:


NewSA Link.JPG


 4. Click on the FromCode button.JPG button found at the top of the screen:


NewSA FromCode.JPG


 5. You will now be at this page:


NewSA Blank.JPG


 6. Click Parent App to go to the EchoSistant Parent app code. Using your keyboard (after you go the page), key in
 Alt-A and then Alt-C. This will copy the code to your clipboard. Paste the code into the white box as seen below.

ES pasted.JPG


 7. Scroll to the bottom of the screen and press on the Create button.JPG button to create your new Smart App.
 You are now on this screen:

ES Create.JPG


 8. Click on the "Save" button:


ES Save.JPG


 9. Click on the "Publish" button, which brings up the "For Me" button.  Click on "For Me":


ES Publish.JPG


 10. If everything went as planned you will see "SmartApp published successfully" at the top of the screen:


ES Success.JPG


 Your EchoSistant Parent App Software is now installed in your SmartThings Environment.




OAuth Configuration
 1. Open the Parent App "EchoSistant".  Click on the AppSettingsButton.JPG button:
 
 This is done in the Parent app ONLY.  Do not activate oAuth in the child apps.


AppSettingsPage.JPG


 2. Scroll to the bottom of the web page and click on "OAuth".  
 This will bring up the "Enable OAuth in Smart App" button:


OauthPage1.JPG


 3. Now click on "Enable OAuth in Smart App".  


OauthEnableButton.JPG


 4. Click on the "Update" button at the bottom of the page:


OAuthComplete.JPG


 Your OAuth is now Active in the IDE for the EchoSistant Smart App.




GitHub Integration
 1. Log-in to the SmartThings IDE and navigate to the SmartApps section: 


SA Link.JPG


 2. Click on the "Settings" Button in the top right corner of the page:


GitHub1.JPG


 3. Click on the "Add New Repository" button: 


GitHub2.JPG


 4. Type in the information found in the Black Box below. Then click Save:


Github4.JPG


 5. When you are in the SmartThings IDE and you see the EchoSistant information in the color
 purple you will need to click on the Update from Repo button:


GitHub4.JPG


 6. Now click on the "SmartSuite Master" link:


GitHub5.JPG


 7. Check the box with the Arrows #1 and #2.  Then click #3 "Save"


GitHub6.JPG


 8. You are now updated.



Child Apps - Install

1. Log-in to the SmartThings IDE at ST IDE

 Once you log-in ensure you are able to see your hub and devices under the Locations tab.
 **It is assumed that the user has already registered their account on the SmartThings IDE website.  If you have not,
 please do so before proceeding any further.**

IDE Login.JPG


 2. Navigate to the SmartApps Section of the SmartThings IDE by clicking on the Link displayed below:


SA Link.JPG


 3. Create a new smartapp by clicking on the NewSA button.JPG button found in the top right corner of this page:


NewSA Link.JPG


 4. Click on the FromCode button.JPG button found at the top of the screen:


NewSA FromCode.JPG


 5. You will now be at this page:


NewSA Blank.JPG


 6. Click here -> Rooms Child App to go to the EchoSistant Rooms Child app code. Using your keyboard (after you go the page), key in
Alt-A and then Alt-C. This will copy the code to your clipboard. Paste the code into the white box as seen below.
 Click here -> Shortcuts Child App to go to the Rooms Shortcuts code.


ES pasted.JPG


 7. Scroll to the bottom of the screen and press on the Create button.JPG button to create your new Smart App.
 You are now on this screen:

ES Create.JPG


 8. Click on the "Save" button:


ES Save.JPG


 9. Repeat this process for the Rooms Shortcuts Child App as well.

 Your EchoSistant Child App Software is now installed in your SmartThings Environment.



SmartThings Mobile App- Configuration

1) Once you have installed the EchoSistant smart app in your SmartThings Mobile App, then

open the EchoSistant App. You will be greeted with this page:

BEFORE PROCEEDING, ENSURE YOU HAVE A BROWSER WINDOW OPEN WITH THE LIVE LOGS RUNNING IN THE IDE

App-1.jpg



2) Tap the red box in the following 3 pictures.


App-2.jpg

App-3.jpg

App-4.jpg


3) Enable Debug Logging by turning on the toggle. Then tap where the red arrow points.


App-5.jpg


4) Tap the red box in the following 3 pictures.


App-6.jpg

App-7.jpg

App-8.jpg


5) Now tap on SAVE until you are back at the app main screen.


App-9.jpg


6) Tap on Create and Manage Rooms.

App-10.jpg



7) Tap on Create a New Room.


App-11.jpg



8) Configure the room by doing the following: I recommend naming this room House, or Home.

This will be your main skill intent. Configure the Control Groups and Feedback section, but

I highly recommend using only the Feedback section for this room. If you select all of your

lights in the control section and someone says, Alexa, turn off the lights in the house....

well, she will turn off all of your lights. This room is used mostly for feedback. But, your

experience will probably differ.....

App-12.jpg

App-13.jpg



You are done with the initial set up of the EchoSistant app. You will need to create a new room

for each room of your home. You can also have rooms for people, pets, cars, the backyard...

whatever you want. It's completely up to you. I believe you can have up to 300 rooms configured

at once.




Amazon Configuration

Lambda Function

 1. Sign in to the Lambda Console at AWS Lambda Log-in. 
 Enter your email address and password, and click on sign in.


Lconfig-1.JPG Lconfig-2.JPG


 2. Type Lambda into the AWS Services search box and click on Lambda


Lconfig-3.JPG


 3. Click the Create a Function button:

L-3.jpg


 4. The (Author from scratch) box should be highlighted. Scroll down and click on
 "Choose an existing role" and select "Create a custom role"


L-4.jpg

L-5.jpg



 5.  This will open a new window and it should like the picture below. If not, make
 it look like it and then click "Allow". This takes you back to the previous window.


L-6.jpg


 6. Give your function a name... EchoSistant is a good one! Then click "Create Function"

L-7.jpg


 7. Now click on "EchoSistant" or whatever you named your function. Scroll down.

L-8.jpg


 8. In the red box in the picture, delete what is there.
 Then copy and paste the Lambda code into the box

L-9.jpg

L-10.jpg


 9. In the previous steps (IDE installation) you had a Live Logs window open. The data
 you copied from the logs must be pasted in the Lambda code at line 28. See the picture 
 below.
 ****PLEASE COPY AND PASTE ALL THREE (3) LINES FROM YOUR LOGS. YOU WANT LINES 28, 29, & 30
 FROM THE PICTURE BELOW. THE LINE NUMBERS DO NOT MATTER, JUST AS LONG AS YOU COPY ALL OF THE
 DATA.****

L-16.JPG


 10. Scroll to the bottom of the page and change the timeout to 30 seconds. Then
 scroll back to the top of the page.
 

L-11.jpg


 11. Click on Alexa Skills Kit in the left hand tool bar and then scroll down. At the
 bottom click on "Disable" and then click "Add". 

L-12.jpg

L-13.jpg


12. Scroll back to the top and click on SAVE.

L-14.jpg


 13. Your screen should now look like the picture below.  Please copy and paste the ARN
 in the top right corner. Keep it in an easy to get to place as you will need it when 
 you are creating your Alexa Skills.

L-15.jpg



 You have now completed the AWS Lambda Function creation.  This is the ONLY instance of the Lambda that is 
 required for your EchoSistant install.
 DO NOT run the test in the Lambda function.  It will fail.  It does NOT matter.  Just ignore it.



Rooms Skill Intents

 There is now only one version of the AWS Skill that has to be installed. It is fairly straightforward
 and only takes a few minutes. A separate skill MUST be created for each room that you have in the app.
 The great thing is, there is not a list of devices, utterances, intents, profiles, reports or anything
 that has to be updated. Once you create the skill and verify it is working, you are done. That means
 you can add devices and change things in the EchoSistant app all you want, and you do not have to come
 back and update the skill.




 1. Log into the AWS developer site. If you need an account, set one up. Once you log in you will see the
 below pictured screen. Hover over Alexa and click on "Alexa Skills Kit"


S-1.jpg




 2. Now click on "Create Skill"


S-2.jpg



 3. Give your skill a name. I recommend that you start with "House" or "Home". This is going
 to be your primary skill.


S-3.jpg




 4. Now click on the "Choose" button.


S-4.jpg



 5. On the left side of the screen, click on "Invocation"


S-5.jpg



 6. Give your skill an invocation that you want to call it. Using "House" you can say things like
 Alexa, what windows are open in the House? Click on "Save Model" at the top of the screen.


S-6.jpg



 7. Now scroll down and click on "JSON Editor" on the left side of the screen. You will see this page:

S-7.jpg



 8. Delete everything in the box that appears. Now copy and paste the JSON skill code for the skill 
 into this box. 
 
 On Line 4 - type the NAME of your skill in lower case letters.
 On Line 79 - type the NAME of your skill. If it is more than one word, Test Home Skill, type it as TestHomeSkill
 Click "Save Model" and then click "Build Model". If there are any errors, they will appear.


S-8.jpg

S-9.jpg



 9. Now scroll down and click on "Endpoint" in the left hand column:


S-10.jpg



 10. On the new screen, click on the AWS Lambda ARN.


S-12.jpg



 11. You will not copy and paste your LAMBDA ARN in the "Default Region" box.
 Then click on "Save Endpoints" at the top of the screen.


S-13.jpg



 12. Now, in the left hand column click on "Interfaces". Then scroll up and enable
 the "Display Interface" toggle. Finally click on "Save Interfaces" and then on
 "Build Model". Wait for the "Build Successful" box to appear.

S-14.jpg

S-15.jpg

S-16.jpg

S-17.jpg



 13. At the top of the screen, click on the "Test" tab. Then click on the "Test is
 disabled for this skill". It will now say it is enabled.

S-18.jpg


 14. Now type this in the box and hit enter. "This is a test in the INVOCATION NAME"
 You should receive the response below.  If you do not, log out of the skill and log
 back in.

S-19.jpg


 You are now done with your skill. You MUST build one for each of your rooms. The first
 couple are the toughest, but by then it should take only a couple of minutes to build
 and test. Congratulations!





Supported Commands

EchoSistant has been designed to make your interactions with Alexa be as natural and comfortable as

possible. What we hope to achieve is that you do not have to remember precise phrases, but are able

to just talk to Alexa, and she will give you the responses you are looking for. Listed below you will

find examples of Control Commands and Feedback Queries that are known to work. If there is a certain

way that you ask questions to or give commands to Alexa and they do not work correctly, let us know

and we will work with you to get EchoSistant running the way you want it to.


Compound Commands

Compound commands give you the ability to do multiple things with a single voice session to your Alexa

devices. Compound commands paired with the Conversation mode of EchoSistant allows for a much more

human like interaction between you and your home.

An example of this would be something like this:

You: Alexa, turn on the desk light and turn off the corner lamp in the office. Alexa: Ok, I have turn off one light and turned on another, would you like anything else? You: Yes Alexa: Please proceed You: Is the fan on in the office? Alexa: No, the fan is currently off, would you like anything else? You: turn on the office fan Alexa: Ok, I am turn on the office fan, would you like anything else? You: No thank you Alexa: My pleasure

You can use any combination of commands with the compound commands.

Device, Groups, and Feedback Controls

There are multiple ways to interact with Alexa to achieve the control/commands goals that you wish.

You can of course use individual device commands. What this means is that you simply say something

like, Alexa, turn off the ceiling fan in the living room. Yes, you can very easily do this same thing

with Native Alexa controls, but feedback from users has shown they prefer one method for everything.

The bonus to EchoSistant Individual Device controls is that you can have multiple devices with the same

names in your system, but can differentiate them based on what room you have them. So, you can name

every ceiling fan in the house "Ceiling Fan", but control them individually naturally with EchoSistant.


Group commands are just that, commands that control groups of like devices. There are groups that are

built into the system for you already. They are Lights, Fans, Shades, etc... Once you have configured

your Room you can just say "Alexa, turn off the lights in the Living Room".


You can also create Custom Groups, which allow you to give the group any name that you want. Do you have

a lamp on the nightstands in your bedroom? Create a custom group named "Bed Lights" and select those.

You then just simply say "Alexa, decrease the bed lights in the bedroom" to dim your lights.


 The following is an example of available commands:
 
 ~~Supported Control Commands~~
 
 Volume: Increase/Decrease the volume
         Set the volume to 30 
 
 Lights: On/Off/Increase/Decrease/Set Level (for individual devices and groups of devices)
 
 Fans:   On/Off/Low/Medium/High/Increase/Decrease (for individual devices and groups of devices)
 
 Vents:  Open/Close
 
 Shades: Open/Close
 
 SHM:    Turn on/off the alarm
 
 Mode:   Set the mode to xxxx
 
 General: Start/Stop the conversation, Repeat last message, Activate/Deactivate feedback, Start/Stop short answers
 
 Garage: Open/Close the garage door
 
 
 ~~Supported Feedback Commands~~
 
 Lights & Switches: Is the corner lights on? Are there any lights on? What lights are on? How many lights are on?
 What level is the corner light set to? How bright is the corner light?
 Dimmers: Same as Lights and Switches but you can ask, What level is the light set to?
 
 Fans: Is the ceiling fan on? What speed is the ceiling fan set to? How many fans are on? What fans are on? 
 Are there any fans on?
 
 Doors & Windows: Is the back door open? Are there any doors open? How many doors are open?
 
 Locks: Is the front door locked?
 
 Power: How much power is being used in the Kitchen?
 
 Motion: Is there motion in the kitchen? Is there anyone in the kitchen? Check for motion in the kitchen
 
 Presence: Who is at home in the house? Who is not home in the house?
 
 Temperature: What is the temperature in the living room?
 
 Humidity: What is the humidity in the living room?
 
 Garage: Is the garage door open?
 
 SHM: Is the alarm on in the house? Is the security system armed in the house?
 
 Mode: What is the mode in the house?
 
 
 ~~Netatmo Weather Station~~
 
 If you have the Netatmo Weather Station you can ask the following:
 
 What is the wind speed?
 
 Is it raining?
 
 What's the temperature?
 
 What's the humidity?
 
 What is the weather like?
 
 
 

Delayed Commands

 EchoSistant has the ability to delay your messages. It is very simple to use.
 
 Simply say: 
 
 "Alexa, in 5 minutes turn on the lights in the living room
 
 You can also send delayed messages: 
 
 "Alexa, tell the Boys in one minute, Hey dinner is ready!"
 
 Delayed commands can be used with All commands.
 
 You can cancel any unperformed commands by saying, "Alexa, cancel the timers/delays in the kitchen"
 
 




Compound Commands

Compound Commands give you the ability to perform multiple tasks with only one Alexa session. EchoSistant

has the ability to perform follow-up commands, as well as the Native Alexa follow-up, but with Compound

Commands you can do more, easier!

It is very simple to use Compound Commands....

 You can use the following formats with Compound Commands:
 
 - Individual Devices: Turn on the corner light and turn off the ceiling fan in the living room
 
 - Groups: Turn on the lights and turn off the fans in the living room
 
 - Combo: Turn on the lights and set the ceiling fan to medium in the living room
 
 - Messages: Turn on the lights and Come down for dinner in the boys room (the message must be the second command)


My advice is to experiment and see what works for you with SmartThings most powerful Assistant, EchoSistant!!



WebCoRe Pistons

Within the EchoSistant room you will find that you are able to select a WebCoRe piston. You can verbally execute

these pistons by giving the following commands:

- Alexa, execute piston, Test Piston in the House. - Alexa, run piston, Test Piston in the House.


Webcore.jpg


Logic Blockz (Shortcuts)

EchoSistant Shortcuts are being renamed to EchoSistant Logic Blocks. The shortcuts have been greatly

expanded into a more complex rules engine that can be triggered either verbally or via device actions.

This allows you to build out complex rules for each of your rooms that you can have automatically run

or you can run on command. An added feature is that you can now build custom messages (reports) with

system variables to be read back to you, played on chosen devices, or sent to you as push messages

and text messages.


To activate them using verbal commands is very simple. For example, you have created a shortcut and

named it "Lets Watch a Movie" and it is in your Den Room.

All you have to say is this, "Alexa, lets watch a movie in the Den" and the shortcut will be executed.


More details to come to this section in the near future.

Task Trackers

Task Trackers are designed to make your Alexa device more into an assistant. You can configure the Task Tracker to keep track of anything you want.... Changing the oil, washing the dog, taking medication, cutting the grass.... Literally anything.

Task Trackers are configured within your Profiles. You can create up to 4 Task Trackers per profile.

Follow these steps to properly configure and use the Task Trackers:

Example Task Tracker in Profile: Truck. Purpose: Track oil changes


- In the profile tap on Task Tracking

TaskTracker-1.png


- Activate the Toggle Activate Trackers for Profiles

TaskTracker-2.png


- First Tracker Verb is 'Changed'. Tap Done.

TaskTracker-3.png


- First Tracker Connector is 'The'. Tap Done.

TaskTracker-4.png


- First Tracker Noun is 'Oil'. Tap done.

TaskTracker-5.png


Tap Save.

You can also have a SMS and a Push message sent to your phone whenever your Task Tracker is created.

'How to use the Task Trackers'

For the above example:

To LOG your Task, say, Alexa, tell the Truck I changed the oil. She will respond, "I am recording that truck changed the oil on 5 November 2017 at 9:23 pm"

You can also say, Alexa, I changed the oil in the Truck

To find out when you last changed the oil, simply ask.

Alexa, ask the Truck when was the oil changed? or Alexa, when did I change the oil in the Truck?