Jump to content

How To Guide: Getting Alexa to provide verbal responses


blueman2

Recommended Posts

  • 2 weeks later...

I am having problems understanding the logic on checking a SwitchLinc current state device.  I already keep tracking of the current state and count each "on" per device.  So would I need to create two network resources, one ran from each program?

 

If office light control = on ---- run network resource Alexa saying the office light is on

If office light control =off ---- run network resource Alexa saying the office light is off

 

Thanks & this thread may become very useful.

Link to comment

I wanted to thank Blueman2 again for his clear and detailed instructions.

 

I also added a step to enable Alexa to Tell Me the current inside temperature on my two Nest thermostats.

 

I replaced two insteon thermostats which integrated well with ISY (but didn't always work so well) with two NEST thermostats which work well but do not integrate with ISY.  I missed my previous thermostat integration with ISY but was unwilling to use a Raspberry-pi or a computer on 24/7 to get the integration.  What I now use is ISY's ability to integrate with IFTTT and NEST's ability to integrate with IFTTT.  Now I can ask "Alexa, TELL ME the temperature" and she replies with the upstairs and downstairs temperature on the NESTs.

 

First I followed the Wiki to enable ISY to talk to IFTTT and vica versa. 

https://wiki.universal-devices.com/index.php?title=ISY_Portal_IFTTT_Integration

 

 

Then from IFTTT I used the NEST channel and the MAKER channel to create a recipe which sends the temperature to an ISY integer variable.  This required about 40 recipes one for each degree the temperature rose and one for each degree the temperature fell and a set for each Nest (upstairs and downstairs) - so I have 40 recipes.  However, they took less than a minute each to create.

 

Every time the temperature rises or falls 1 degree the NEST cloud tells IFTTT which then triggers one of the recipes which sends the actual degree that the nest rose or fell (i.e. the Downstairs Nest was at 69 degree and it fell to 68 degrees) the IFTTT recipes sends 68 to the  ISY variable..  

 

Next, I created a program in ISY which recognizes that the variable has changed and triggers the network resource as described by Blueman2 in the first post of this thread.

 

So this killed two birds with one stone.  I now have the actual upstairs and downstairs temperatures in ISY that I can use for any purpose I wish AND Alexa can speak those temperatures when asked.
 
The downside is that I only get the actual temperatures of the Nests.  I don't get the setpoints or any other information the Nest provides.  Alexa, however can directly change the setpoints but not through ISY.
 

 

If anyone is interested in greater detail, I'd be happy to share.

Link to comment

I wanted to thank Blueman2 again for his clear and detailed instructions.

 

I also added a step to enable Alexa to Tell Me the current inside temperature on my two Nest thermostats.

 

I replaced two insteon thermostats which integrated well with ISY (but didn't always work so well) with two NEST thermostats which work well but do not integrate with ISY.  I missed my previous thermostat integration with ISY but was unwilling to use a Raspberry-pi or a computer on 24/7 to get the integration.  What I now use is ISY's ability to integrate with IFTTT and NEST's ability to integrate with IFTTT.  Now I can ask "Alexa, TELL ME the temperature" and she replies with the upstairs and downstairs temperature on the NESTs.

 

First I followed the Wiki to enable ISY to talk to IFTTT and vica versa. 

https://wiki.universal-devices.com/index.php?title=ISY_Portal_IFTTT_Integration

 

 

Then from IFTTT I used the NEST channel and the MAKER channel to create a recipe which sends the temperature to an ISY integer variable.  This required about 40 recipes one for each degree the temperature rose and one for each degree the temperature fell and a set for each Nest (upstairs and downstairs) - so I have 40 recipes.  However, they took less than a minute each to create.

 

Every time the temperature rises or falls 1 degree the NEST cloud tells IFTTT which then triggers one of the recipes which sends the actual degree that the nest rose or fell (i.e. the Downstairs Nest was at 69 degree and it fell to 68 degrees) the IFTTT recipes sends 68 to the  ISY variable..  

 

Next, I created a program in ISY which recognizes that the variable has changed and triggers the network resource as described by Blueman2 in the first post of this thread.

 

So this killed two birds with one stone.  I now have the actual upstairs and downstairs temperatures in ISY that I can use for any purpose I wish AND Alexa can speak those temperatures when asked.
 
The downside is that I only get the actual temperatures of the Nests.  I don't get the setpoints or any other information the Nest provides.  Alexa, however can directly change the setpoints but not through ISY.
 

 

If anyone is interested in greater detail, I'd be happy to share.

I did this as well with Insteon thermostats for upstairs and downstairs.

I just update the two variables every time they change.  I am not certain if you could do the same with the Nests?

Contemplating switching from the Insteon thermostats to something else but working well so far.

Link to comment

I am having problems understanding the logic on checking a SwitchLinc current state device.  I already keep tracking of the current state and count each "on" per device.  So would I need to create two network resources, one ran from each program?

 

If office light control = on ---- run network resource Alexa saying the office light is on

If office light control =off ---- run network resource Alexa saying the office light is off

 

Thanks & this thread may become very useful.

 

Sorry, memphis, I was traveling.  But yes, you would create 2 network resources and trigger each one via a program so that the phrase is updated as needed.  

Link to comment

This is a great write up! 

 

I'm still a bit confused - how do you setup the variable for temperature?  Can you share the example program you are using to populate State Variable #17 with the temperature of your Insteon thermostat.  

 

Thanks!

That would take v5.xxx or a series of programs based on each temperature threshold or a NR that sends the current temperature to ISY (itself) for every change in temperature above say...-1C
Link to comment

That would take v5.xxx or a series of programs based on each temperature threshold or a NR that sends the current temperature to ISY (itself) for every change in temperature above say...-1C

 

Sorry, yes I am using 5.06 to update the variables.

I compare the actual temperature with my stored variable and if not the same, update variable, and update Responder with network resource.

I have a similar program for the downstairs temperature.

 

TempUS2Vars - [iD 009F][Parent 0023]

 

If

        'Temperature / Upstairs Main' Temperature is not '$UpstairsTemp Degrees'

 

Then

        $UpstairsTemp  = 'Temperature / Upstairs Main' Temperature °

        Resource 'RespMainTemperature'

 

Else

   - No Actions - (To add one, press 'Action')

 

 

Link to comment

This is a great write up! 

 

I'm still a bit confused - how do you setup the variable for temperature?  Can you share the example program you are using to populate State Variable #17 with the temperature of your Insteon thermostat.  

 

Thanks!

 

I am not using a state variable, as a normal integer is working fine for me right now.  I am able to get 0.5 degree (Celsius) precision from the Insteon thermostat and the above program.

The variable number is used in the Network Resource to update the Intent in your skill.

Link to comment

Sorry, yes I am using 5.06 to update the variables.

I compare the actual temperature with my stored variable and if not the same, update variable, and update Responder with network resource.

I have a similar program for the downstairs temperature.

 

TempUS2Vars - [iD 009F][Parent 0023]

 

If

        'Temperature / Upstairs Main' Temperature is not '$UpstairsTemp Degrees'

 

Then

        $UpstairsTemp  = 'Temperature / Upstairs Main' Temperature °

        Resource 'RespMainTemperature'

 

Else

   - No Actions - (To add one, press 'Action')

 

 

 

If you use a State variable, you can simplify this:

If
        'Temperature / Upstairs Main' Temperature is > 0

Then
       Resource 'RespMainTemperature'
 
Else
   - No Actions - (To add one, press 'Action')

This works because State variables are only evaluated upon change.  So if it changes, the IF becomes true and the THEN is executed.  Well, so long as your temperature remains above 0.  You could put > -255 to be safe!

Link to comment

I am not using a state variable, as a normal integer is working fine for me right now.  I am able to get 0.5 degree (Celsius) precision from the Insteon thermostat and the above program.

The variable number is used in the Network Resource to update the Intent in your skill.

You can use either type of variable but if you want to trigger programs from it in other programs you will eed to utilise a State variable type, as mentioned by blueman2 above.
Link to comment

If you use a State variable, you can simplify this:

If
        'Temperature / Upstairs Main' Temperature is > 0

Then
       Resource 'RespMainTemperature'
 
Else
   - No Actions - (To add one, press 'Action')

This works because State variables are only evaluated upon change.  So if it changes, the IF becomes true and the THEN is executed.  Well, so long as your temperature remains above 0.  You could put > -255 to be safe!

Thanks BlueMan,

I know I tried something like this at first but wasn't getting the results I expected.  Probably a stupid mistake I made in my Network Resources.

I will experiment more with this tomorrow.

Link to comment

I'm using an Autelis device to control my pool.  The device also passes status, such as pool and spa temp, back to ISY in a state variable.  I have been unable to figure out any way of querying alexa for the spa temp variable.  This appears like it is my solution.  Am I correct, or is there an easier way.  I wish variables were treated as devices so I could simply say, "alexa, ask isy the status of variable xyz."

Link to comment
  • 2 weeks later...

First, thanks for the guide. This is great! I have mine giving me security status, inside temp, and fan speed currently. 

 

Question: Is it possible to do an IF or CASE type statement in the body of the network resources code? Something like...

 

IF ${var.2.3} = 1 THEN <speak> this <speak>

ELSE <speak> that <speak>

 

I don't know what the syntax would be, just trying to think of ways to create less resources. 

Link to comment

First, thanks for the guide. This is great! I have mine giving me security status, inside temp, and fan speed currently. 

 

Question: Is it possible to do an IF or CASE type statement in the body of the network resources code? Something like...

 

IF ${var.2.3} = 1 THEN <speak> this <speak>

ELSE <speak> that <speak>

 

I don't know what the syntax would be, just trying to think of ways to create less resources. 

 

I don't believe so but others should chime in.  I'm at around 80 Network resources just for Alexa - On/off - Open/close etc.  ISY v5.0* I believe allows decimal points, and maybe String variables.  Strings for me would reduce Network Resources.  Alexa - tell me which gates are open.  Right now, she will tell me one or more is open.  Would be nice to return a String saying which gate in terms of a $var*.*

 

I'm very happy with the results, no one can believe how much time I have programming into my house.  I can't wait for Alexa just to start shouting at me.  "You left the gate open, you fool... and now the dog is swimming in the pond."  Via RFID and IOLincs.

Link to comment

I have the basic coding done and working, thanks to Bluemans great guide .

Now I need to get the data from my Aeotec Sensors into variables.

Any help would be appreciated, examples are especially so:)

 

What version of ISY are you on?  As I recall, you might need to be on 5.x in order to read z-wave values into variables.  

Link to comment

Blueman2 -

 

Thanks for the step by step instructions.  I followed everything and double checked my cut-and-pastes but I keep getting "Error: TCP client request failed [Net Module Rule 1:400]".  It appears I still don't have something connected quite right.  I'm very new to the net resources stuff.  Any place that is well documented for beginners that you can recommend for me to start debugging?  It seems most of the Wiki and Forums are great references for those who know what is going on, but few (other than your great step by step with examples) for us newbies. 

 

 

ISY 994i v4.5.4 w/Portal Integration

 

 

Thanks again

Link to comment

Blueman2 -

 

..I keep getting "Error: TCP client request failed [Net Module Rule 1:400]". 

 

Does this show up in the pop-up box when doing the 'Test' of the resource?  If so, please copy and paste your network resource info so I can view it.  Screen capture would be fine.  

 

Also, double check you are using Mode:C-escaped

and Select Content Type: application/json

Link to comment

I finally got it working.  The problem ended up being that when I copied the example for the resource, I was using the MS Edge browser and it ended up putting some weird characters (0xC2 0xA0) for each leading space on each line :x .  When I just retyped it, or used Chrome to copy it so the spaces were 0x20, everything was fine.  I also was able to use "Raw Text" rather than "C-Escaped" to keep the code in the Body window in a sane format.

Link to comment

I finally got it working.  The problem ended up being that when I copied the example for the resource, I was using the MS Edge browser and it ended up putting some weird characters (0xC2 0xA0) for each leading space on each line :x .  When I just retyped it, or used Chrome to copy it so the spaces were 0x20, everything was fine.  I also was able to use "Raw Text" rather than "C-Escaped" to keep the code in the Body window in a sane format.

 

Great!  And I will definitely try the raw text.  I have the way the formatting gets changed when editing the line!

 

EDIT: jndsoccer, you are right!!! The Raw Text mode does work much better.  I changed the How To to reflect this and gave you credit for the find.  

Link to comment
  • 5 weeks later...

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...