Commit 3b9477cd by Alex Rhodes

Initial commit, open source code.

parents
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
/target/
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Nest</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
</projectDescription>
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.5
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.5
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>NestController</groupId>
<artifactId>Nest</artifactId>
<name>Nest for Echo </name>
<description>Control your Nest smart thermostat from your Amazon echo.</description>
<dependencies>
<!-- Nest Function and Echo Dependencies -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<!-- Amazon Provided, may not need all -->
<dependency>
<groupId>com.amazon.alexa</groupId>
<artifactId>alexa-skills-kit</artifactId>
<version>1.1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.0.6.v20130930</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.0.6.v20130930</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.10</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.io</artifactId>
<version>2.4</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>1.9.40</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<version>TFE-7_SNAPSHOT</version>
</project>
\ No newline at end of file
package com.alexscottrhodes.actions;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.alexscottrhodes.nest.ErrorHandler;
import com.amazon.speech.slu.Intent;
import com.amazon.speech.slu.Slot;
import com.amazon.speech.speechlet.SpeechletException;
import com.amazon.speech.speechlet.SpeechletResponse;
import com.amazon.speech.ui.PlainTextOutputSpeech;
import com.amazon.speech.ui.SimpleCard;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class NestFunctions {
private static String thermName = "undefined";
private static String thermId;
private static String apiKey;
private static String units;
private static JsonObject model;
public static SpeechletResponse InitiateResponse(Intent intent) throws SpeechletException{
thermId = "<Nest thermostat ID here>";
apiKey = "<Nest API key here>";
HashMap<String,JsonObject> temp = queryDevice();
if(!temp.containsKey("success")){
return ErrorHandler.nestFailureResponse("Not found");
}
model= temp.get("success");
String intentName = (intent != null) ? intent.getName() : null;
Slot thermNameSlot = intent.getSlot("THERMNAME");
if(thermNameSlot.getValue() != null){
String thermNameRaw = thermNameSlot.getValue();
thermName = thermNameRaw;
thermId = nameToThermId(thermNameRaw);
if(thermId.equals("not-found")){
return ErrorHandler.failed("I'm sorry, I couldn't understand which thermostat you wanted me to control");
}
}else{
model = model.get("devices").getAsJsonObject().get("thermostats").getAsJsonObject().get(thermId).getAsJsonObject();
}
units = model.get("temperature_scale").getAsString().toLowerCase();
if("NestIntent".equals(intentName)){
return NestFunctions.tempCall(intent);
}else if("NestTempQueryIntent".equals(intentName)){
return NestFunctions.tempQuery();
}else if("NestSingleIntent".equals(intentName)){
return NestFunctions.singleTemp(intent);
}else if("NestModeIntent".equals(intentName)){
return NestFunctions.modeChange(intent);
}else if("NestFanIntentOn".equals(intentName)){
return NestFunctions.fanSwitch(true);
}
else if("NestFanIntentOff".equals(intentName)){
return NestFunctions.fanSwitch(false);
}
else if("NestSpecIntent".equals(intentName)){
return NestFunctions.specAdjustment(intent);
}
else if("NestQuickIntentUp".equals(intentName)){
return NestFunctions.quickAdjust(true);
}
else if("NestQuickIntentDown".equals(intentName)){
return NestFunctions.quickAdjust(false);
}
else if("NestWhereIntent".equals(intentName)){
return NestFunctions.whereTempCall(intent);
}else if("NestQuickFilterIntent".equals(intentName)){
return quickFilter(intent);
}
else {
throw new SpeechletException("Invalid Intent");
}
}
public static SpeechletResponse whereTempCall(Intent intent){
return ErrorHandler.failed(intent.getSlot("THERMNAME").getValue());
}
/* interpret the type of temperature call */
public static SpeechletResponse tempCall(Intent intent) {
Slot lowSlot = intent.getSlot("LOWTEMP");
Slot highSlot = intent.getSlot("HIGHTEMP");
Slot rangeSlot = intent.getSlot("RANGEEND");
return tempCall(lowSlot,highSlot,rangeSlot);
}
public static SpeechletResponse tempCall(Slot lowSlot, Slot highSlot, Slot rangeSlot){
int low, high;
//If temperature range
if (lowSlot.getValue() != null && highSlot.getValue() != null) {
// Attempt to parse temperatures as ints
try{
low = Integer.parseInt(lowSlot.getValue());
high = Integer.parseInt(highSlot.getValue());
}catch(Exception e){ return ErrorHandler.failed("I'm sorry, I couldn't understand the temperatures you told me.");}
return setTemp(low, high);
// If lowSlot is not null, indicating one side change
} else if (lowSlot.getValue() != null) {
//Try to parse temp as an integer
try {
low = Integer.parseInt(lowSlot.getValue());
} catch (Exception e) {
return ErrorHandler.failed("I'm sorry, I couldn't understand the temperature you told me.");
}
// Make sure range end is defined
if (rangeSlot.getValue() != null) {
String rangeVal = rangeSlot.getValue();
if (rangeVal.equals("high") | rangeVal.equals("upper") | rangeVal.equals("top") | rangeVal.equals("higher") | rangeVal.equals("max") | rangeVal.equals("maximum")) {
return setTemp(true, low);
} else {
return setTemp(false, low);
}
}else{
return ErrorHandler.failed("I'm sorry, couldnt understand which temperature you wanted me to set. Please specify either high or low temperature");
}
}
//If all else fails, return uknown error card.
else {
return ErrorHandler.failed("I'm sorry, I'm having trouble controlling your nest right now.");
}
}
/* Set temperature top or bottom */
public static SpeechletResponse setTemp(int low, int high) {
String speechText ="";
if(!thermName.equals("undefined")){
speechText = "Okay, setting "+thermName+" temperature between " + low + " and " + high + ".";
thermName = "undefined";
}else{
speechText = "Okay, setting temperature between " + low + " and " + high + ".";
}
String JSON = "";
JSON = "{\"target_temperature_low_"+units+"\":" + low+ ",";
JSON += "\"target_temperature_high_"+units+"\":" + high + "}";
HashMap<String,String> result = nestCom(JSON);
if(!result.get("response-code").equals("200")){
return ErrorHandler.nestFailureResponse(result.get("message"));
}
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech);
}
public static SpeechletResponse setTemp(boolean high, int temp) {
String speechText = "Okay, setting ";
if(high){
if(!thermName.equals("undefined")){
speechText += "the high"+ thermName + " temperature to " + temp;
thermName = "undefined";
}else{
speechText += "the high temperature to " + temp;
}
}else{
if(!thermName.equals("undefined")){
speechText += "the low "+ thermName + " temperature to " + temp;
thermName = "undefined";
}else{
speechText += "the low temperature to " + temp;
}
}
String JSON;
if(high){
JSON = "{\"target_temperature_high_"+units+"\":" + temp+ "}";
}else{
JSON = "{\"target_temperature_low_"+units+"\":" + temp+ "}";
}
HashMap<String,String> result = nestCom(JSON);
if(!result.get("response-code").equals("200")){
return ErrorHandler.nestFailureResponse(result.get("message"));
}
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech);
}
/* Query the temperatures*/
public static SpeechletResponse tempQuery() {
String speechText;
if(!thermName.equals("undefined")){
speechText = "The temperature in the " + thermName + " is ";
thermName = "undefined";
}else{
speechText = "The temperature inside is ";
}
int low,high,target;
Double ambientD = Double.parseDouble(model.get("ambient_temperature_"+units).getAsString());
int ambient = (int) Math.round(ambientD);
String state = model.get("hvac_state").getAsString();
if(model.get("hvac_mode").getAsString().equals("heat-cool")){
Double lowd = Double.parseDouble(model.get("target_temperature_low_"+units).getAsString());
low = (int)Math.round(lowd);
Double highd = Double.parseDouble(model.get("target_temperature_high_"+units).getAsString());
high = (int)Math.round(highd);
speechText += ambient +" degrees. Nest is in heating and cooling mode, set to a low of " + low + " and a high of " + high + ". Currently, Nest is " + state;
}else{
Double targetd = Double.parseDouble(model.get("target_temperature_"+units).getAsString());
target = (int) Math.round(targetd);
speechText += ambient + " degrees. Nest is in " + model.get("hvac_mode").getAsString() + " mode, set to a temperature of "+ target + ". Currently, nest is "+ state;
}
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech);
}
/* Set a single temperature */
public static SpeechletResponse singleTemp(Intent intent) {
String speechText;
int temp;
try{
String tempString = intent.getSlot("TEMPVAL").getValue();
temp = Integer.parseInt(tempString);
}catch(Exception e){
speechText = "I'm sorry, I couldn't understand the temperature you requested.";
return ErrorHandler.failed(speechText);
}
String JSON = "{\"target_temperature_"+units+"\":"+temp+"}";
HashMap<String,String> result = nestCom(JSON);
if(!result.get("response-code").equals("200")){
return ErrorHandler.nestFailureResponse(result.get("message"));
}
if(!thermName.equals("undefined")){
speechText = "Ok,I'm setting the "+ thermName +" nest temperature to " + temp + " degrees.";
thermName = "undefined";
}else{
speechText = "Ok,I'm setting the temperature to " + temp + " degrees.";
}
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech);
}
public static SpeechletResponse modeChange(Intent intent){
String speechText;
String mode,modePlain;
try{
mode = intent.getSlot("MODE").getValue();
if(mode == null){
throw new Exception();
}
modePlain = mode;
}catch(Exception e){
speechText = "I'm sorry, I couldn't understand what mode you wanted. Please specify heat, cool, heat-cool or off.";
return ErrorHandler.failed(speechText);
}
if(mode.equals("AC") | mode.equals("cooling") | mode.equals("cool")){
mode = "cool";
}
else if(mode.equals("heating") | mode.equals("heat")){
mode = "heat";
}
else if(mode.equals("heat-cool") | mode.equals("heat cool") | mode.equals("high-low") | mode.equals("high low") | mode.equals("range")){
mode = "heat-cool";
}
else if(mode.equals("off")){
mode="off";
}else{
speechText = "I'm sorry, I couldn't understand what mode you wanted. Please specify heat, cool, heat-cool or off.";
return ErrorHandler.failed(speechText);
}
String JSON ="";
if(mode.equals("cool")){
JSON = "{\"hvac_mode\":\"cool\"}";
}else if(mode.equals("heat")){
JSON = "{\"hvac_mode\":\"heat\"}";
}else if(mode.equals("heat-cool")){
JSON = "{\"hvac_mode\":\"heat-cool\"}";
}else if(mode.equals("off")){
JSON = "{\"hvac_mode\":\"off\"}";
}
HashMap<String,String> result = nestCom(JSON);
if(!result.get("response-code").equals("200")){
return ErrorHandler.nestFailureResponse(result.get("message"));
}
if(!thermName.equals("undefined")){
speechText = "Ok, I'm setting the "+ thermName + " mode to " + modePlain;
thermName = "undefined";
}else{
speechText = "Ok,I'm setting the mode to " + modePlain;
}
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech);
}
public static SpeechletResponse fanSwitch(boolean on){
String speechText;
if(!thermName.equals("undefined")){
speechText = "Ok,I'm turning the "+thermName+" fan ";
thermName = "undefined";
}else{
speechText = "Ok,I'm turning the fan ";
}
String JSON = "";
if(on){
speechText += "on";
JSON = "{\"fan_timer_active\": true}";
}
else{
speechText += "off";
JSON= "{\"fan_timer_active\": false}";
}
HashMap<String,String> result = nestCom(JSON);
if(!result.get("response-code").equals("200")){
return ErrorHandler.nestFailureResponse(result.get("message"));
}
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech);
}
/* quick filter */
public static SpeechletResponse quickFilter(Intent intent){
Slot directionSlot = intent.getSlot("DIRECTION");
if(directionSlot.getValue()==null){
return ErrorHandler.failed("I'm sorry, I couldn't understand what direction you wanted me to move the temperature");
}
String direction = directionSlot.getValue();
if(direction.equals("raise") | direction.equals("increase") | direction.equals("up") | direction.equals("higher") | direction.equals("heat") | direction.equals("heat up") | direction.equals("warmer") | direction.equals("hotter")){
return tempAdjuster(2, "higher");
}else{
return tempAdjuster(2, "lower");
}
}
/* quick adjust by fixed amount */
public static SpeechletResponse quickAdjust(boolean warmer){
if(warmer){
return tempAdjuster(2,"higher");
}else{
return tempAdjuster(2, "lower");
}
}
/* Specified adjustment direction */
public static SpeechletResponse specAdjustment(Intent intent){
Slot degreeSlot = intent.getSlot("DEGREES");
Slot directionSlot = intent.getSlot("DIRECTION");
if (degreeSlot.getValue() == null){
return ErrorHandler.failed("I'm sorry, I couldn't understand the number of degrees you told me.");
}
if (directionSlot.getValue() == null){
return ErrorHandler.failed("I'm sorry, I couldn't understand which way you wanted me to move the temperature.");
}
String direction = directionSlot.getValue();
int degrees;
try{
degrees = Integer.parseInt(degreeSlot.getValue());
}catch(Exception e){
return ErrorHandler.failed("I'm sorry, I couldn't understand the number of degrees you told me.");
}
return tempAdjuster(degrees,direction);
}
public static SpeechletResponse tempAdjuster(int degrees, String direction){
String speechText = "";
String currentMode = model.get("hvac_mode").getAsString();
String JSON = "";
if(currentMode.equals("heat") | currentMode.equals("cool")){
try{
float oldTargetF = model.get("target_temperature_"+units).getAsFloat();
int oldTarget = Math.round(oldTargetF);
int newTarget;
if(direction.equals("raise") | direction.equals("increase") | direction.equals("up") | direction.equals("higher") | direction.equals("heat") | direction.equals("heat up") | direction.equals("warmer") | direction.equals("hotter")){
newTarget = oldTarget + degrees;
if(!thermName.equals("undefined")){
speechText = "Ok, I'm raising the " + thermName + " temperature " + degrees + " degrees to " + newTarget;
thermName = "undefined";
}else{
speechText = "Ok, I'm raising the temperature " + degrees + " degrees to " + newTarget;
}
}else{
newTarget = oldTarget - degrees;
if(!thermName.equals("undefined")){
speechText = "Ok, I'm lowering the " + thermName + " temperature " + degrees + " degrees to " + newTarget;
thermName = "undefined";
}else{
speechText = "Ok, I'm lowering the temperature " + degrees + " degrees to " + newTarget;
}
}
JSON = "{\"target_temperature_"+units+"\":"+newTarget+"}";
}catch(Exception e){
return ErrorHandler.failed("I'm sorry, I'm having trouble adjusting the temperature for you.");
}
}else{
try{
float oldfh = model.get("target_temperature_high_"+units).getAsFloat();
float oldfl = model.get("target_temperature_low_"+units).getAsFloat();
int oldLow = Math.round(oldfl);
int oldHigh = Math.round(oldfh);
if(direction.equals("raise") | direction.equals("increase") | direction.equals("up") | direction.equals("higher") | direction.equals("heat") | direction.equals("heat up") | direction.equals("warmer") | direction.equals("hotter")){
int newHigh = oldHigh + degrees;
int newLow = oldLow + degrees;
JSON = "{\"target_temperature_low_"+units+"\":" + newLow+ ",";
JSON += "\"target_temperature_high_"+units+"\":" + newHigh + "}";
if(!thermName.equals("undefined")){
speechText = "Ok, I'm shifting the " + thermName + " temperature up " + degrees + " degrees to " + newLow + " and "+ newHigh;
thermName = "undefined";
}else{
speechText = "Ok, I'm shifting the temperature up " + degrees + " degrees to " + newLow + " and "+ newHigh;
}
}else{
int newHigh = oldHigh - degrees;
int newLow = oldLow - degrees;
JSON = "{\"target_temperature_low_"+units+"\":" + newLow+ ",";
JSON += "\"target_temperature_high_"+units+"\":" + newHigh + "}";
if(!thermName.equals("undefined")){
speechText = "Ok, I'm shifting the " + thermName + " temperature down " + degrees + " degrees to " + newLow + " and "+ newHigh;
thermName = "undefined";
}else{
speechText = "Ok, I'm shifting the temperature down " + degrees + " degrees to " + newLow + " and "+ newHigh;
}
}
}catch(Exception e){
return ErrorHandler.failed("I'm sorry, I'm having trouble adjusting the temperature for you.");
}
}
HashMap<String,String> result = nestCom(JSON);
if(!result.get("response-code").equals("200")){
return ErrorHandler.nestFailureResponse(result.get("message"));
}
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
return SpeechletResponse.newTellResponse(speech);
}
public static SpeechletResponse failedCard(String message,String cardContent){
SimpleCard card = new SimpleCard();
card.setTitle("Support");
card.setContent(cardContent);
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(message);
return SpeechletResponse.newTellResponse(speech,card);
}
/* query the device */
private static HashMap<String, JsonObject> queryDevice(){
HashMap<String, JsonObject> modelMap = new HashMap<String,JsonObject>();
try{
String address = "https://developer-api.nest.com?auth="+apiKey;
URL url = new URL(address);
System.out.println("URL:" + address);
HttpURLConnection request = (HttpURLConnection) url.openConnection();
request.connect();
JsonParser jp = new JsonParser();
if(request.getResponseCode()!=200){
JsonObject resp = jp.parse(new InputStreamReader((InputStream) request.getErrorStream())).getAsJsonObject();
modelMap.put(resp.get("message").getAsString(),null);
return modelMap;
}
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject thermObject = root.getAsJsonObject();
model = thermObject;
modelMap.put("success", model);
return modelMap;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
/* Send JSON communication against NEST api */
private static HashMap<String,String> nestCom(String JSON) {
HashMap<String,String> result = new HashMap<String,String>();
try {
String address = "https://developer-api.nest.com/devices/thermostats/"+thermId+"?auth="+apiKey;
System.out.println(address);
System.out.println(JSON);
URL url = new URL(address);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("PUT");
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream());
osw.write(String.format(JSON));
osw.flush();
osw.close();
result.put("response-code", ""+connection.getResponseCode());
if(connection.getResponseCode() != 200){
JsonParser jp = new JsonParser();
JsonObject resp = jp.parse(new InputStreamReader((InputStream) connection.getErrorStream())).getAsJsonObject();
result.put("message",resp.get("message").getAsString());
}
else{
result.put("message", "ok");
}
return result;
} catch (Exception e) {
e.printStackTrace();
result.put("response-code", "-1");
result.put("message","I'm sorry, I wasn't able to control your Nest right now.");
return result;
}
}
@SuppressWarnings("rawtypes")
public static String nameToThermId(String thermNameRaw){
String result = "not-found";
JsonObject thermRoot = model.get("devices").getAsJsonObject().get("thermostats").getAsJsonObject();
Iterator it = thermRoot.entrySet().iterator();
while(it.hasNext()){
Map.Entry pair = (Map.Entry) it.next();
String thermId = (String) pair.getKey();
JsonObject thermObject = ((JsonObject) pair.getValue()).getAsJsonObject();
String name = thermObject.get("name").getAsString();
thermNameRaw = thermNameRaw.toLowerCase();
name = name.toLowerCase();
if(name.contains(thermNameRaw)){
model = thermObject;
thermName = thermNameRaw;
return thermId;
}
}
return result;
}
}
package com.alexscottrhodes.nest;
import com.amazon.speech.speechlet.SpeechletResponse;
import com.amazon.speech.ui.PlainTextOutputSpeech;
public class ErrorHandler {
public static SpeechletResponse failed(String message){
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(message);
return SpeechletResponse.newTellResponse(speech);
}
public static SpeechletResponse nestFailureResponse(String message){
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
message=message.toLowerCase();
if(message.contains("no write permission")){
message = "I'm sorry, I do not have permission to control that feature of your Nest.";
}
else if(message.contains("internal error")){
message = "I'm sorry, there was a problem with Nest's services. Please try again later.";
}
else if(message.contains("unauthorized")){
//Detailed response here
message = "I'm sorry, I do not have authorization to control that feature of your nest. Please make sure the Nest is present on your Nest account, and still activated through the Thermostat for Echo website.";
}
else if(message.contains("forbidden")){
//Detailed response here
message = "I'm sorry, I do not have authorization to control that feature of your nest. Please make sure the Nest is present on your Nest account, and still activated through the Thermostat for Echo website.";
}
else if(message.contains("service unavailable")){
message = "I'm sorry, there was a problem with Nest's services. Please try again later.";
}
else if(message.contains("internal error")){
message = "I'm sorry, there was a problem with Nest's services. Please try again later.";
}
else if(message.contains("blocked")){
message = "I'm sorry, Nest only allows me to control your Nest a limited number of times in a short period. Please try again later.";
}
else if(message.contains("not writeable")){
message = "I'm sorry, I can not contorl that feature of your Nest";
}
else if(message.contains("of wrong type")){
message = "I'm sorry, I could not understand the instruction you gave me.";
}
else if(message.contains("invalid thermostat id")){
message = "I'm sorry, I do not have authorization to control that feature of your nest. Please make sure the Nest is present on your Nest account, and still activated through the Thermostat for Echo website.";
}
else if(message.contains("is not a valid request")){
message = "I'm sorry, I could not understand the instruction you gave me.";
}
else if(message.contains("cannot set c and f temperatures simultaneously")){
message = "I'm sorry, I can not set both Celsius and Fahrenheit at the same time";
}
else if(message.contains("cannot set") && message.contains("while mode is")){
String mode = "x";
String temp = "x";
if(message.contains("target_temperature_high")){
temp = "a temperature range";
}
else if(message.contains("target_temperature_low")){
temp = "a temperature range";
}
else if(message.contains("target_temperature")){
temp = "an individual temperature";
}
if(message.contains("heat-cool")){
mode = "heat-cool";
}
else if(message.contains("heat")){
mode = "heat";
}
else if(message.contains("cool")){
mode = "cool";
}else if(message.contains("off")){
mode="off";
}
if(mode.equals("off")){
message = "I'm sorry, I can not set " + temp +" while your Nest is " + mode +". Please change modes first.";
}else{
message = "I'm sorry, I can not set " + temp +" while your Nest is in " + mode +" mode. Please specify either high or low temperature, or change modes.";
}
if(mode.equals("x") | temp.equals("x")){
message="I'm sorry, I couldn't set the temperature for you.";
}
}
else if(message.contains("cannot set") && message.contains("closer than")){
message = "I'm sorry, I can't set the temperature range that close together.";
}
else if(message.contains("low") && message.contains("value")){
message = "I'm sorry, I can not set the temperature that low";
}
else if(message.contains("high") && message.contains("value")){
message = "I'm sorry, I can not set the temperature that high";
}
else if(message.contains("low") && message.contains("lock")){
message = "I'm sorry, your nest has a locked temperature preventing me from setting the temperature that low.";
}
else if(message.contains("high") && message.contains("lock")){
message = "I'm sorry, your nest has a locked temperature preventing me from setting the temperature that high.";
}
else if(message.contains("larger than")){
message = "I'm sorry, I can't set the temperature that way, " + message;
}
else if(message.contains("energy-saving-events")){
message = "I'm sorry, I can't change the mode when your Nest is in an energy savings event";
}
else if(message.contains("thermostat lock is enabled")){
message = "I'm sorry, your thermostat is locked.";
}
else if(message.contains("cannot change hvac mode to")){
message = "I'm sorry, your Nest doesn't support that mode";
}
else if(message.contains("invalid hvac mode")){
message = "I'm sorry, your Nest doesn't support that mode";
}
else if(message.contains("while structure is away")){
message = "I'm sorry, your Nest is in Away mode";
}
else if(message.contains("invalid thermostat id")){
message = "I'm sorry, I can't reach the Nest you previously activated with your account. Please log in to www.ThermostatForEcho.com to manage your devices.";
}
else if(message.equals("not found")){
message = "I'm sorry, I can't reach the Nest you previously activated with your account. Please log in to www.ThermostatForEcho.com to manage your devices.";
}
else if(message.equals("no hvac fan")){
message = "I'm sorry, you do not have a fan that Nest can control.";
}
else if(message.equals("cannot activate fan during smoke")){
message = "I'm sorry, I can not activate your fan, your Nest is in a safety shutoff mode.";
}
else{
System.out.println(message);
message = "I'm sorry, I was unable to control your nest right now. Please try again later. If the problem persists, please email support@thermostatforecho.com";
}
speech.setText(message);
return SpeechletResponse.newTellResponse(speech);
}
}
package com.alexscottrhodes.nest;
import java.util.HashSet;
import java.util.Set;
import com.amazon.speech.speechlet.lambda.SpeechletRequestStreamHandler;
public final class NestRequestHandler extends SpeechletRequestStreamHandler {
private static final Set<String> supportedApplicationIds = new HashSet<String>();
static {
//Actual:
supportedApplicationIds.add("<Amazon application ID here>");
}
public NestRequestHandler() {
super(new NestSpeechlet(), supportedApplicationIds);
}
}
package com.alexscottrhodes.nest;
import com.alexscottrhodes.actions.NestFunctions;
import com.amazon.speech.slu.Intent;
import com.amazon.speech.speechlet.IntentRequest;
import com.amazon.speech.speechlet.LaunchRequest;
import com.amazon.speech.speechlet.Session;
import com.amazon.speech.speechlet.SessionEndedRequest;
import com.amazon.speech.speechlet.SessionStartedRequest;
import com.amazon.speech.speechlet.Speechlet;
import com.amazon.speech.speechlet.SpeechletException;
import com.amazon.speech.speechlet.SpeechletResponse;
import com.amazon.speech.speechlet.User;
import com.amazon.speech.ui.LinkAccountCard;
import com.amazon.speech.ui.PlainTextOutputSpeech;
import com.amazon.speech.ui.Reprompt;
import com.amazon.speech.ui.SimpleCard;
public class NestSpeechlet implements Speechlet{
//private static final Logger log = LoggerFactory.getLogger(EricaSpeechlet.class);
public void onSessionStarted(SessionStartedRequest request, Session session) throws SpeechletException {
//Initialization functions
}
public SpeechletResponse onLaunch(LaunchRequest request, Session session) throws SpeechletException {
//Initial greeting/launch
//log.info("onLaunch requestId={}, sessionId={}", request.getRequestId(), session.getSessionId());
return getGreetingResponse();
}
public SpeechletResponse onIntent(IntentRequest request, Session session) throws SpeechletException {
Intent intent = request.getIntent();
String intentName = (intent != null) ? intent.getName() : null;
if ("AMAZON.HelpIntent".equals(intentName)) {
return getHelpResponse();
}else if("AMAZON.CancelIntent".equals(intentName)){
return exitResponse();
}
else if("GreetingIntent".equals(intentName)){
return getGreetingResponse();
}else {
return NestFunctions.InitiateResponse(intent);
}
}
public void onSessionEnded(SessionEndedRequest request, Session session) throws SpeechletException {
//At the end of a session
}
//Core logic
//Initial greeting
private SpeechletResponse getGreetingResponse() {
String speechText = "Hello, I'm going to help Alexa control your Nest thermostat. How can I help you?";
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
// Create reprompt
Reprompt reprompt = new Reprompt();
reprompt.setOutputSpeech(speech);
return SpeechletResponse.newAskResponse(speech, reprompt);
}
private SpeechletResponse exitResponse() {
String speechText = "Goodbye.";
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
SpeechletResponse sr = new SpeechletResponse();
sr.setOutputSpeech(speech);
sr.setShouldEndSession(true);
return sr;
}
//Help response
private SpeechletResponse getHelpResponse() {
String speechText = "Thermostat can control your temperature and mode settings, or tell what your Nest is doing. You can say things like: set the temperature to seventy one degrees, switch to heating mode. How can I help you?";
// Create the plain text output.
PlainTextOutputSpeech speech = new PlainTextOutputSpeech();
speech.setText(speechText);
// Create reprompt
Reprompt reprompt = new Reprompt();
reprompt.setOutputSpeech(speech);
return SpeechletResponse.newAskResponse(speech, reprompt);
}
}
{
"intents": [
{
"intent": "NestTempQueryIntent",
"slots": [
{
"name": "THERMNAME",
"type": "LIST_OF_LOCATIONS"
}]
},
{
"intent": "NestAwayIntent",
"slots": [
{
"name": "THERMNAME",
"type": "LIST_OF_LOCATIONS"
},
{
"name":"AWAYSTATE",
"type":"LIST_OF_AWAY_STATES"
}
]
},
{
"intent": "NestIntent",
"slots": [
{
"name": "LOWTEMP",
"type": "AMAZON.NUMBER"
},
{
"name": "HIGHTEMP",
"type": "AMAZON.NUMBER"
},
{
"name": "RANGEEND",
"type": "LIST_OF_RANGE_ENDS"
},
{
"name":"THERMNAME",
"type":"LIST_OF_LOCATIONS"
}
]
},
{
"intent": "NestModeIntent",
"slots": [
{
"name":"MODE",
"type":"LIST_OF_MODE_TYPES"
},
{
"name":"THERMNAME",
"type":"LIST_OF_LOCATIONS"
}
]
},
{
"intent": "NestFanIntentOn",
"slots": [
{
"name": "THERMNAME",
"type": "LIST_OF_LOCATIONS"
}]
},
{
"intent": "NestFanIntentOff",
"slots": [
{
"name": "THERMNAME",
"type": "LIST_OF_LOCATIONS"
}]
},
{
"intent": "NestQuickIntentUp"
},
{
"intent": "NestQuickIntentDown"
},
{
"intent":"NestSingleIntent",
"slots": [
{
"name":"TEMPVAL",
"type": "AMAZON.NUMBER"
},
{
"name":"THERMNAME",
"type":"LIST_OF_LOCATIONS"
}
]
},
{
"intent":"NestSpecIntent",
"slots": [
{
"name":"DEGREES",
"type": "AMAZON.NUMBER"
},
{
"name":"DIRECTION",
"type":"LIST_OF_DIRECTIONS"
},
{
"name":"THERMNAME",
"type":"LIST_OF_LOCATIONS"
}
]
},
{
"intent":"NestQuickFilterIntent",
"slots": [
{
"name":"DIRECTION",
"type":"LIST_OF_DIRECTIONS"
},
{
"name":"THERMNAME",
"type":"LIST_OF_LOCATIONS"
}
]
},
{
"intent": "AMAZON.HelpIntent"
},
{
"intent": "AMAZON.CancelIntent"
},
{
"intent": "GreetingIntent"
}
]
}
home
here
back
arrived
going
away
gone
leaving
\ No newline at end of file
up
raise
increase
higher
heat
heat up
warmer
hotter
cooler
colder
down
lower
decrease
drop
cool
cool down
ac
air conditioning
\ No newline at end of file
living room
basement
dining room
entry way
hallway
kitchen
den
downstairs
family room
kids room
living room
office
upstairs
master bedroom
bedroom
\ No newline at end of file
heating
cooling
heat
cool
a.c.
heat-cool
heat cool
high-low
high low
range
off
\ No newline at end of file
low
lower
high
higher
bottom
top
upper
max
min
minimum
maximum
\ No newline at end of file
NestSpecIntent {DIRECTION} {DEGREES} degrees
NestSpecIntent {DIRECTION} {DEGREES}
NestSpecIntent {DIRECTION} the temperature {DEGREES} degrees
NestSpecIntent {DIRECTION} the temperature {DEGREES}
NestSpecIntent {DIRECTION} the temp {DEGREES} degrees
NestSpecIntent {DIRECTION} the temp {DEGREES}
NestSpecIntent please {DIRECTION} the temperature {DEGREES} degrees
NestSpecIntent please {DIRECTION} the temperature {DEGREES}
NestSpecIntent {DIRECTION} the temperature by {DEGREES} degrees
NestSpecIntent {DIRECTION} the temperature by {DEGREES}
NestSpecIntent please {DIRECTION} the temperature by {DEGREES} degrees
NestSpecIntent please {DIRECTION} the temperature by {DEGREES}
NestSpecIntent set the temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent set the temperature {DIRECTION} {DEGREES} degrees
NestSpecIntent set the temperature {DIRECTION} {DEGREES}
NestSpecIntent set the temp {DEGREES} degrees {DIRECTION}
NestSpecIntent set the temp {DIRECTION} {DEGREES} degrees
NestSpecIntent set the temp {DIRECTION} {DEGREES}
NestSpecIntent set the temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent set the temperature {DIRECTION} by {DEGREES} degrees
NestSpecIntent set the temperature {DIRECTION} by {DEGREES}
NestSpecIntent set the temp {DEGREES} degrees {DIRECTION}
NestSpecIntent set the temp {DIRECTION} {DEGREES} degrees
NestSpecIntent set the temp {DIRECTION} {DEGREES}
NestSpecIntent please set the temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the temperature {DIRECTION} {DEGREES} degrees
NestSpecIntent please set the temperature {DIRECTION} {DEGREES}
NestSpecIntent please set the temp {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the temp {DIRECTION} {DEGREES} degrees
NestSpecIntent please set the temp {DIRECTION} {DEGREES}
NestSpecIntent please set the temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the temperature {DIRECTION} by {DEGREES} degrees
NestSpecIntent please set the temperature {DIRECTION} by {DEGREES}
NestSpecIntent please set the temp {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the temp {DIRECTION} by {DEGREES} degrees
NestSpecIntent please set the temp {DIRECTION} by {DEGREES}
NestSpecIntent go {DIRECTION} {DEGREES} degrees
NestSpecIntent go {DIRECTION} {DEGREES}
NestSpecIntent move {DIRECTION} {DEGREES} degrees
NestSpecIntent move {DIRECTION} {DEGREES}
NestSpecIntent adjust {DIRECTION} {DEGREES} degrees
NestSpecIntent adjust {DIRECTION} {DEGREES}
NestSpecIntent go {DIRECTION} by {DEGREES} degrees
NestSpecIntent go {DIRECTION} by {DEGREES}
NestSpecIntent move {DIRECTION} by {DEGREES} degrees
NestSpecIntent move {DIRECTION} by {DEGREES}
NestSpecIntent adjust {DIRECTION} {DEGREES} degrees
NestSpecIntent adjust {DIRECTION} {DEGREES}
NestSpecIntent adjust the temperature {DIRECTION} {DEGREES} degrees
NestSpecIntent adjust the temperature {DIRECTION} {DEGREES}
NestSpecIntent adjust the temperature {DIRECTION} by {DEGREES} degrees
NestSpecIntent adjust the temperature {DIRECTION} by {DEGREES}
NestSpecIntent please go {DIRECTION} {DEGREES} degrees
NestSpecIntent please go {DIRECTION} {DEGREES}
NestSpecIntent please move {DIRECTION} {DEGREES} degrees
NestSpecIntent please move {DIRECTION} {DEGREES}
NestSpecIntent please adjust {DIRECTION} {DEGREES} degrees
NestSpecIntent please adjust {DIRECTION} {DEGREES}
NestSpecIntent please go {DIRECTION} by {DEGREES} degrees
NestSpecIntent please go {DIRECTION} by {DEGREES}
NestSpecIntent please move {DIRECTION} by {DEGREES} degrees
NestSpecIntent please move {DIRECTION} by {DEGREES}
NestSpecIntent please adjust {DIRECTION} by {DEGREES} degrees
NestSpecIntent please adjust {DIRECTION} by {DEGREES}
NestSpecIntent {DIRECTION} the temperature {DEGREES}
NestSpecIntent please {DIRECTION} the temperature {DEGREES}
NestSpecIntent {DIRECTION} the temperature by {DEGREES}
NestSpecIntent please {DIRECTION} the temperature by {DEGREES}
NestSpecIntent I want it to be {DEGREES} {DIRECTION} in here
NestSpecIntent I want it to be {DEGREES} degrees {DIRECTION} in here
NestSpecIntent make it {DEGREES} degrees {DIRECTION} in here
NestSpecIntent make it {DEGREES} {DIRECTION} in here
NestSpecIntent I want it to be {DEGREES} {DIRECTION}
NestSpecIntent I want it to be {DEGREES} degrees {DIRECTION}
NestSpecIntent make it {DEGREES} degrees {DIRECTION}
NestSpecIntent make it {DEGREES} {DIRECTION}
NestSpecIntent I want to make it {DEGREES} degrees {DIRECTION}
NestSpecIntent I want to make it {DEGREES} {DIRECTION}
NestSpecIntent I want to make it {DEGREES} degrees {DIRECTION} in here
NestSpecIntent I want to make it {DEGREES} {DIRECTION} in here
NestQuickIntentUp make it warmer
NestQuickIntentUp make it hotter
NestQuickIntentUp I'm cold
NestQuickIntentUp that I'm cold.
NestQuickIntentUp I'm too cold
NestQuickIntentUp that I'm too cold
NestQuickIntentUp it's too cold
NestQuickIntentUp that it's too cold
NestQuickIntentUp go up
NestQuickIntentUp go higher
NestQuickIntentUp go hotter
NestQuickIntentUp adjust up
NestQuickIntentUp adjust higher
NestQuickIntentUp adjust warmer
NestQuickIntentUp adjust hotter
NestQuickIntentUp I'm a little cold
NestQuickIntentUp It's a little cold
NestQuickIntentUp It's cold in here
NestQuickIntentUp It's a little cold in here
NestQuickIntentUp It's too cold in here
NestQuickIntentUp It's a little too cold in here
NestQuickIntentUp It's a little cool in here
NestQuickIntentUp It's a little cool
NestQuickIntentUp It's a little too cool
NestQuickIntentUp turn on the heat
NestQuickIntentUp heat it up a little
NestQuickIntentUp heat it up a bit
NestQuickIntentUp make it a bit hotter
NestQuickIntentUp heat it up a little
NestQuickIntentUp make it a bit hotter
NestQuickIntentUp make it a little hotter
NestQuickIntentUp turn on the heat in here
NestQuickIntentUp heat it up a little in here
NestQuickIntentUp heat it up a bit in here
NestQuickIntentUp make it a bit hotter in here
NestQuickIntentUp heat it up a little in here
NestQuickIntentUp make it a bit hotter in here
NestQuickIntentUp make it a little hotter in here
NestQuickIntentUp make the house warmer
NestQuickIntentUp make the house hotter
NestQuickFilterIntent {DIRECTION} the {THERMNAME} temperature
NestQuickFilterIntent {DIRECTION} the {THERMNAME} temp
NestQuickFilterIntent {DIRECTION} the {THERMNAME} nest
NestQuickFilterIntent turn the {THERMNAME} {DIRECTION} on
NestQuickFilterIntent turn on the {THERMNAME} {DIRECTION}
NestQuickFilterIntent adjust the {THERMNAME} temperature {DIRECTION}
NestQuickFilterIntent turn the {DIRECTION} on in the {THERMNAME}
NestQuickFilterIntent turn on the {DIRECTION}
NestQuickFilterIntent adjust the temperature {DIRECTION}
NestQuickFilterIntent {DIRECTION} the nest
NestQuickFilterIntent {DIRECTION} the temp
NestQuickFilterIntent {DIRECTION} the temperature
NestQuickFilterIntent turn the {DIRECTION} on
NestQuickFilterIntent turn on the {DIRECTION}
NestQuickFilterIntent adjust the temperature {DIRECTION}
NestQuickFilterIntent turn on the {DIRECTION}
NestQuickIntentDown make it colder
NestQuickIntentDown make it cooler
NestQuickIntentDown it's too hot
NestQuickIntentDown that it's too hot
NestQuickIntentDown I'm hot
NestQuickIntentDown that I'm hot
NestQuickIntentDown I'm too hot
NestQuickIntentDown that I'm too hot
NestQuickIntentDown I'm warm
NestQuickIntentDown that I'm too warm
NestQuickIntentDown I'm too warm
NestQuickIntentDown that I'm too warm
NestQuickIntentDown go down
NestQuickIntentDown go lower
NestQuickIntentDown go cooler
NestQuickIntentDown adjust down
NestQuickIntentDown adjust lower
NestQuickIntentDown adjust cooler
NestQuickIntentDown adjust colder
NestQuickIntentDown cool it down
NestQuickIntentDown cool it down a little
NestQuickIntentDown a little hot
NestQuickIntentDown I'm a little hot
NestQuickIntentDown It's a little hot
NestQuickIntentDown It's hot in here
NestQuickIntentDown It's a little hot in here
NestQuickIntentDown It's too hot in here
NestQuickIntentDown It's a little too hot in here
NestQuickIntentDown It's a little warm in here
NestQuickIntentDown It's a little warm
NestQuickIntentDown It's a little too hot
NestQuickIntentDown It's a little hot
NestQuickIntentDown turn on the ac
NestQuickIntentDown turn on the cooler
NestQuickIntentDown cool down a little
NestQuickIntentDown cool it down a bit
NestQuickIntentDown make it a bit cooler
NestQuickIntentDown make it a little cooler
NestQuickIntentDown cool down a little in here
NestQuickIntentDown cool it down a bit in here
NestQuickIntentDown make it a bit cooler in here
NestQuickIntentDown make it a little cooler in here
NestQuickIntentDown make the house cooler
NestQuickIntentDown make the house colder
NestAwayIntent switch to {AWAYSTATE}
NestAwayIntent change to {AWAYSTATE}
NestAwayIntent that we are {AWAYSTATE}
NestAwayIntent that i am {AWAYSTATE}
NestAwayIntent that we're {AWAYSTATE}
NestAwayIntent that i'm {AWAYSTATE}
NestAwayIntent we are at {AWAYSTATE}
NestAwayIntent i'm {AWAYSTATE}
NestAwayIntent we're {AWAYSTATE}
NestAwayIntent to switch to {AWAYSTATE}
NestAwayIntent to switch to {AWAYSTATE} mode
NestAwayIntent to go to {AWAYSTATE}
NestAwayIntent to go to {AWAYSTATE} mode
NestAwayIntent tell the nest i am {AWAYSTATE}
NestAwayIntent tell the nest we are {AWAYSTATE}
NestAwayIntent tell the nest i'm {AWAYSTATE}
NestAwayIntent tell the nest we're {AWAYSTATE}
NestAwayIntent put the nest in {AWAYSTATE}
NestAwayIntent put the nest in {AWAYSTATE} mode
NestAwayIntent put the thermostat in {AWAYSTATE}
NestAwayIntent put the thermostat in {AWAYSTATE} mode
NestAwayIntent tell the thermostat i am {AWAYSTATE}
NestAwayIntent tell the thermostat we are {AWAYSTATE}
NestAwayIntent tell the thermostat i'm {AWAYSTATE}
NestAwayIntent tell the thermostat we're {AWAYSTATE}
NestIntent set the temperature between {LOWTEMP} and {HIGHTEMP}
NestIntent set the {RANGEEND} temperature to {LOWTEMP}
NestIntent set the temperature to {LOWTEMP} and {HIGHTEMP}
NestIntent set the {RANGEEND} to {LOWTEMP}
NestIntent set the temperature from {LOWTEMP} to {HIGHTEMP}
NestIntent set the temperature between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {RANGEEND} temperature to {LOWTEMP} degrees
NestIntent set the temperature to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {RANGEEND} to {LOWTEMP} degrees
NestIntent set the temperature from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent adjust the temperature between {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {RANGEEND} temperature to {LOWTEMP}
NestIntent adjust the temperature to {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {RANGEEND} to {LOWTEMP}
NestIntent adjust the temperature from {LOWTEMP} to {HIGHTEMP}
NestIntent adjust the temperature between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {RANGEEND} temperature to {LOWTEMP} degrees
NestIntent adjust the temperature to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {RANGEEND} to {LOWTEMP} degrees
NestIntent adjust the temperature from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent keep the temperature from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent set the range between {LOWTEMP} and {HIGHTEMP}
NestIntent set the {RANGEEND} limit to {LOWTEMP}
NestIntent set the range to {LOWTEMP} and {HIGHTEMP}
NestIntent set the {RANGEEND} limit to {LOWTEMP}
NestIntent set the temp from {LOWTEMP} to {HIGHTEMP}
NestIntent set the temp between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {RANGEEND} limit to {LOWTEMP} degrees
NestIntent set the {RANGEEND} temp to {LOWTEMP} degrees
NestIntent set the temp to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {RANGEEND} limit to {LOWTEMP} degrees
NestIntent set the temp from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent set the range from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent adjust the temp between {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the temp range {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {RANGEEND} temp to {LOWTEMP}
NestIntent adjust the {RANGEEND} limit to {LOWTEMP}
NestIntent adjust the temp to {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {RANGEEND} limit to {LOWTEMP}
NestIntent adjust the temp from {LOWTEMP} to {HIGHTEMP}
NestIntent adjust the temp between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the range from {LOWTEMP} to {HIGHTEMP}
NestIntent adjust the range between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {RANGEEND} temp to {LOWTEMP} degrees
NestIntent adjust the {RANGEEND} limit to {LOWTEMP} degrees
NestIntent adjust the temp to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the range to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {RANGEEND} to {LOWTEMP} degrees
NestIntent adjust the temp from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent adjust the range from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent keep the temp from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent keep the range from {LOWTEMP} to {HIGHTEMP} degrees
NestSingleIntent set the temperature to {TEMPVAL}
NestSingleIntent set the thermostat to {TEMPVAL}
NestSingleIntent set the nest to {TEMPVAL}
NestSingleIntent make the nest {TEMPVAL}
NestSingleIntent make the temperature {TEMPVAL}
NestSingleIntent make the thermostat {TEMPVAL}
NestSingleIntent change the temperature to {TEMPVAL}
NestSingleIntent change the nest to {TEMPVAL}
NestSingleIntent change the thermostat to {TEMPVAL}
NestSingleIntent set the nest to {TEMPVAL}
NestSingleIntent put the temperature to {TEMPVAL}
NestSingleIntent put the thermostat at {TEMPVAL}
NestSingleIntent put the nest to {TEMPVAL}
NestSingleIntent adjust the temperature to {TEMPVAL}
NestSingleIntent adjust the thermostat at {TEMPVAL}
NestSingleIntent adjust the nest to {TEMPVAL}
NestSingleIntent can you change the nest temp to {TEMPVAL}
NestSingleIntent will you change the nest temp to {TEMPVAL}
NestSingleIntent please change the nest temp to {TEMPVAL}
NestSingleIntent will you change the nest temp to {TEMPVAL}
NestSingleIntent can you change the nest temperature to {TEMPVAL}
NestSingleIntent will you change the nest temperature to {TEMPVAL}
NestSingleIntent please change the nest temperature to {TEMPVAL}
NestSingleIntent can you change the thermostat temp to {TEMPVAL}
NestSingleIntent will you change the thermostat temp to {TEMPVAL}
NestSingleIntent please change the thermostat temp to {TEMPVAL}
NestSingleIntent can you change the thermostat temperature to {TEMPVAL}
NestSingleIntent please change the thermostat temperature to {TEMPVAL}
NestSingleIntent will you change the thermostat temperature to {TEMPVAL}
NestSingleIntent set the temperature to {TEMPVAL} degrees
NestSingleIntent set the thermostat to {TEMPVAL} degrees
NestSingleIntent set the nest to {TEMPVAL} degrees
NestSingleIntent make the nest {TEMPVAL} degrees
NestSingleIntent make the temperature {TEMPVAL} degrees
NestSingleIntent make the thermostat {TEMPVAL} degrees
NestSingleIntent change the temperature to {TEMPVAL} degrees
NestSingleIntent change the nest to {TEMPVAL} degrees
NestSingleIntent change the thermostat to {TEMPVAL} degrees
NestSingleIntent set the nest to {TEMPVAL} degrees
NestSingleIntent put the temperature to {TEMPVAL} degrees
NestSingleIntent put the thermostat at {TEMPVAL} degrees
NestSingleIntent put the nest to {TEMPVAL} degrees
NestSingleIntent {TEMPVAL} degrees
NestSingleIntent make it {TEMPVAL}
NestSingleIntent go to {TEMPVAL}
NestSingleIntent make it {TEMPVAL} degrees
NestSingleIntent go to {TEMPVAL} degrees
NestModeIntent set the mode to {MODE}
NestModeIntent change to {MODE} mode
NestModeIntent switch the nest to {MODE} mode
NestModeIntent {MODE} mode
NestFanIntentOn turn the fan on
NestFanIntentOn start the fan
NestFanIntentOn run the fan
NestFanIntentOn turn on the fan
NestFanIntentOn make the fan run
NestFanIntentOff turn the fan off
NestFanIntentOff stop the fan
NestFanIntentOff turn off the fan
NestFanIntentOff make the fan stop
NestTempQueryIntent what the temperature is
NestTempQueryIntent the temperature inside
NestTempQueryIntent what the temperature is inside.
NestTempQueryIntent the temperature
NestTempQueryIntent the nest settings
NestTempQueryIntent how hot it is in here
NestTempQueryIntent how cold it is in here
NestTempQueryIntent how cold it is inside
NestTempQueryIntent how hot it is inside
NestTempQueryIntent what it's doing
NestTempQueryIntent what it's set to
NestTempQueryIntent what the temperature is set to
NestTempQueryIntent what mode it's in
NestTempQueryIntent what the settings are
NestTempQueryIntent it's heating or cooling
NestTempQueryIntent it's heating
NestTempQueryIntent it's cooling
NestTempQueryIntent what the temperature is set at
NestTempQueryIntent what it's set at
NestTempQueryIntent what temperature it is
NestTempQueryIntent what temperature it's set to
NestTempQueryIntent temperature
AMAZON.CancelIntent cancel
AMAZON.CancelIntent exit
AMAZON.CancelIntent stop
AMAZON.CancelIntent quit
AMAZON.CancelIntent leave
AMAZON.CancelIntent goodbye
AMAZON.CancelIntent end
AMAZON.CancelIntent please stop
AMAZON.CancelIntent never mind
AMAZON.CancelIntent forget it
AMAZON.CancelIntent shut up
AMAZON.CancelIntent off
AMAZON.HelpIntent what can I say
AMAZON.HelpIntent what do I say
AMAZON.HelpIntent help
AMAZON.HelpIntent options
AMAZON.HelpIntent guide
AMAZON.HelpIntent user's guide
AMAZON.HelpIntent help me
GreetingIntent hello
GreetingIntent hi
GreetingIntent hey
GreetingIntent what's up
NestSpecIntent {DIRECTION} the {THERMNAME} {DEGREES} degrees
NestSpecIntent {DIRECTION} the {THERMNAME} {DEGREES}
NestSpecIntent {DIRECTION} the {THERMNAME} temperature {DEGREES} degrees
NestSpecIntent {DIRECTION} the {THERMNAME} temperature {DEGREES}
NestSpecIntent {DIRECTION} the {THERMNAME} temp {DEGREES} degrees
NestSpecIntent {DIRECTION} the {THERMNAME} temp {DEGREES}
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature {DEGREES} degrees
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature {DEGREES}
NestSpecIntent {DIRECTION} the {THERMNAME} temperature by {DEGREES} degrees
NestSpecIntent {DIRECTION} the {THERMNAME} temperature by {DEGREES}
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature by {DEGREES} degrees
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature by {DEGREES}
NestSpecIntent set the {THERMNAME} temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent set the {THERMNAME} temperature {DIRECTION} {DEGREES} degrees
NestSpecIntent set the {THERMNAME} temperature {DIRECTION} {DEGREES}
NestSpecIntent set the {THERMNAME} temp {DEGREES} degrees {DIRECTION}
NestSpecIntent set the {THERMNAME} temp {DIRECTION} {DEGREES} degrees
NestSpecIntent set the {THERMNAME} temp {DIRECTION} {DEGREES}
NestSpecIntent set the {THERMNAME} temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent set the {THERMNAME} temperature {DIRECTION} by {DEGREES} degrees
NestSpecIntent set the {THERMNAME} temperature {DIRECTION} by {DEGREES}
NestSpecIntent set the {THERMNAME} temp {DEGREES} degrees {DIRECTION}
NestSpecIntent set the {THERMNAME} temp {DIRECTION} {DEGREES} degrees
NestSpecIntent set the {THERMNAME} temp {DIRECTION} {DEGREES}
NestSpecIntent please set the {THERMNAME} temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the {THERMNAME} temperature {DIRECTION} {DEGREES} degrees
NestSpecIntent please set the {THERMNAME} temperature {DIRECTION} {DEGREES}
NestSpecIntent please set the {THERMNAME} temp {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the {THERMNAME} temp {DIRECTION} {DEGREES} degrees
NestSpecIntent please set the {THERMNAME} temp {DIRECTION} {DEGREES}
NestSpecIntent please set the {THERMNAME} temperature {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the {THERMNAME} temperature {DIRECTION} by {DEGREES} degrees
NestSpecIntent please set the {THERMNAME} temperature {DIRECTION} by {DEGREES}
NestSpecIntent please set the {THERMNAME} temp {DEGREES} degrees {DIRECTION}
NestSpecIntent please set the {THERMNAME} temp {DIRECTION} by {DEGREES} degrees
NestSpecIntent please set the {THERMNAME} temp {DIRECTION} by {DEGREES}
NestSpecIntent go {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent go {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent move {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent move {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent adjust {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent adjust {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent go {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent go {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent move {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent move {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent adjust {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent adjust {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent adjust the {THERMNAME} temperature {DIRECTION} {DEGREES} degrees
NestSpecIntent adjust the {THERMNAME} temperature {DIRECTION} {DEGREES}
NestSpecIntent adjust the {THERMNAME} temperature {DIRECTION} by {DEGREES} degrees
NestSpecIntent adjust the {THERMNAME} temperature {DIRECTION} by {DEGREES}
NestSpecIntent please go {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please go {DIRECTION} {DEGREES}
NestSpecIntent please move {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please move {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please go {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please go {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent please move {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please move {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent {DIRECTION} the temperature {DEGREES} in the {THERMNAME}
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature {DEGREES}
NestSpecIntent {DIRECTION} the {THERMNAME} temperature by {DEGREES}
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature by {DEGREES}
NestSpecIntent {DIRECTION} the temperature {DEGREES} degrees in the {THERMNAME}
NestSpecIntent {DIRECTION} the temperature {DEGREES} in the {THERMNAME}
NestSpecIntent {DIRECTION} the temp {DEGREES} degrees in the {THERMNAME}
NestSpecIntent {DIRECTION} the temp {DEGREES} in the {THERMNAME}
NestSpecIntent please {DIRECTION} the temperature {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please {DIRECTION} the temperature {DEGREES} in the {THERMNAME}
NestSpecIntent {DIRECTION} the temperature by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent {DIRECTION} the temperature by {DEGREES}
NestSpecIntent please {DIRECTION} the temperature by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please {DIRECTION} the temperature by {DEGREES} in the {THERMNAME}
NestSpecIntent set the temperature {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent set the temperature {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent set the temperature {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent set the temp {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent set the temp {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent set the temp {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent set the temperature {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent set the temperature {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent set the temperature {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent set the temp {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent set the temp {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent set the temp {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please set the temperature {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent please set the temperature {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please set the temperature {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please set the temp {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent please set the temp {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please set the temp {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please set the temperature {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent please set the temperature {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please set the temperature {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent please set the temp {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent please set the temp {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please set the temp {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent adjust the temperature {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent adjust the temperature {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent adjust the temperature {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent adjust the temperature {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent please go {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please go {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please move {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please move {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} {DEGREES} in the {THERMNAME}
NestSpecIntent please go {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please go {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent please move {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please move {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} by {DEGREES} degrees in the {THERMNAME}
NestSpecIntent please adjust {DIRECTION} by {DEGREES} in the {THERMNAME}
NestSpecIntent {DIRECTION} the temperature {DEGREES} in the {THERMNAME}
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature {DEGREES}
NestSpecIntent {DIRECTION} the {THERMNAME} temperature by {DEGREES}
NestSpecIntent please {DIRECTION} the {THERMNAME} temperature by {DEGREES}
NestSpecIntent I want it to be {DEGREES} {DIRECTION} in the {THERMNAME}
NestSpecIntent I want it to be {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent make it {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent make it {DEGREES} {DIRECTION} in the {THERMNAME}
NestSpecIntent I want the {THERMNAME} to be {DEGREES} {DIRECTION}
NestSpecIntent I want the {THERMNAME} to be {DEGREES} degrees {DIRECTION}
NestSpecIntent make the {THERMNAME} {DEGREES} degrees {DIRECTION}
NestSpecIntent make the {THERMNAME} t {DEGREES} {DIRECTION}
NestSpecIntent I want it to be {DEGREES} {DIRECTION} in the {THERMNAME}
NestSpecIntent I want it to be {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent make it {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent make it {DEGREES} {DIRECTION} in the {THERMNAME}
NestSpecIntent I want the {THERMNAME} to be {DEGREES} {DIRECTION}
NestSpecIntent I want the {THERMNAME} to be {DEGREES} degrees {DIRECTION}
NestSpecIntent make the {THERMNAME} {DEGREES} degrees {DIRECTION}
NestSpecIntent make the {THERMNAME} {DEGREES} {DIRECTION}
NestSpecIntent I want to make it {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent I want to make it {DEGREES} {DIRECTION} in the {THERMNAME}
NestSpecIntent I want to make it {DEGREES} degrees {DIRECTION} in the {THERMNAME}
NestSpecIntent I want to make it {DEGREES} {DIRECTION} in the {THERMNAME}
NestSpecIntent I want to make the {THERMNAME} {DEGREES} degrees {DIRECTION}
NestSpecIntent I want to make the {THERMNAME} {DEGREES} {DIRECTION}
NestSpecIntent I want to make the {THERMNAME} {DEGREES} degrees {DIRECTION}
NestSpecIntent I want to make the {THERMNAME} {DEGREES} {DIRECTION}
NestQuickFilterIntent {DIRECTION} the {THERMNAME} temperature
NestQuickFilterIntent {DIRECTION} the {THERMNAME} temp
NestQuickFilterIntent {DIRECTION} the {THERMNAME} nest
NestQuickFilterIntent turn the {THERMNAME} {DIRECTION} on
NestQuickFilterIntent turn on the {THERMNAME} {DIRECTION}
NestQuickFilterIntent adjust the {THERMNAME} temperature {DIRECTION}
NestQuickFilterIntent turn the {DIRECTION} on in the {THERMNAME}
NestQuickFilterIntent turn on the {THERMNAME} {DIRECTION}
NestQuickFilterIntent adjust the {THERMNAME} temperature {DIRECTION}
NestQuickFilterIntent {DIRECTION} the {THERMNAME} nest
NestQuickFilterIntent {DIRECTION} the {THERMNAME} temp
NestQuickFilterIntent {DIRECTION} the {THERMNAME} temperature
NestQuickFilterIntent turn the {THERMNAME} {DIRECTION} on
NestQuickFilterIntent turn on the {THERMNAME} {DIRECTION}
NestQuickFilterIntent adjust the {THERMNAME} temperature {DIRECTION}
NestQuickFilterIntent turn on the {THERMNAME} {DIRECTION}
NestIntent set the {THERMNAME} temperature between {LOWTEMP} and {HIGHTEMP}
NestIntent set the {THERMNAME} {RANGEEND} temperature to {LOWTEMP}
NestIntent set the {THERMNAME} temperature to {LOWTEMP} and {HIGHTEMP}
NestIntent set the {THERMNAME} {RANGEEND} to {LOWTEMP}
NestIntent set the {THERMNAME} temperature from {LOWTEMP} to {HIGHTEMP}
NestIntent set the {THERMNAME} temperature between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {THERMNAME} {RANGEEND} temperature to {LOWTEMP} degrees
NestIntent set the {THERMNAME} temperature to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {THERMNAME} {RANGEEND} to {LOWTEMP} degrees
NestIntent set the {THERMNAME} temperature from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} temperature between {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {THERMNAME} {RANGEEND} temperature to {LOWTEMP}
NestIntent adjust the {THERMNAME} temperature to {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {THERMNAME} {RANGEEND} to {LOWTEMP}
NestIntent adjust the {THERMNAME} temperature from {LOWTEMP} to {HIGHTEMP}
NestIntent adjust the {THERMNAME} temperature between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} {RANGEEND} temperature to {LOWTEMP} degrees
NestIntent adjust the {THERMNAME} temperature to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} {RANGEEND} to {LOWTEMP} degrees
NestIntent adjust the {THERMNAME} temperature from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent keep the {THERMNAME} temperature from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent set the {RANGEEND} temperature to {LOWTEMP} in the {THERMNAME}
NestIntent set the temperature to {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent set the {RANGEEND} to {LOWTEMP} in the {THERMNAME}
NestIntent set the temperature from {LOWTEMP} to {HIGHTEMP} in the {THERMNAME}
NestIntent set the temperature between {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent set the {RANGEEND} temperature to {LOWTEMP} degrees in the {THERMNAME}
NestIntent set the temperature to {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent set the {RANGEEND} to {LOWTEMP} degrees in the {THERMNAME}
NestIntent set the temperature from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the temperature between {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the {RANGEEND} temperature to {LOWTEMP} in the {THERMNAME}
NestIntent adjust the temperature to {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the {RANGEEND} to {LOWTEMP} in the {THERMNAME}
NestIntent adjust the temperature from {LOWTEMP} to {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the temperature between {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the {RANGEEND} temperature to {LOWTEMP} degrees in the {THERMNAME}
NestIntent adjust the temperature to {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the {RANGEEND} to {LOWTEMP} degrees in the {THERMNAME}
NestIntent adjust the temperature from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent keep the temperature from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent set the {RANGEEND} {THERMNAME} temperature to {LOWTEMP} in the {THERMNAME}
NestIntent set the {THERMNAME} temperature to {LOWTEMP} and {HIGHTEMP}
NestIntent set the {RANGEEND} {THERMNAME} temperature to {LOWTEMP} degrees
NestIntent set the {RANGEEND} {THERMNAME} to {LOWTEMP} degrees
NestIntent adjust the {RANGEEND} {THERMNAME} temperature to {LOWTEMP}
NestIntent adjust the {RANGEEND} {THERMNAME} temp to {LOWTEMP}
NestIntent adjust the {RANGEEND} {THERMNAME} temperature to {LOWTEMP}
NestIntent adjust the {RANGEEND} {THERMNAME} temperature to {LOWTEMP} degrees
NestIntent set the range between {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent set the {RANGEEND} limit to {LOWTEMP} in the {THERMNAME}
NestIntent set the range to {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent set the {RANGEEND} limit to {LOWTEMP} in the {THERMNAME}
NestIntent set the temp from {LOWTEMP} to {HIGHTEMP} in the {THERMNAME}
NestIntent set the temp between {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent set the {RANGEEND} limit to {LOWTEMP} degrees in the {THERMNAME}
NestIntent set the {RANGEEND} temp to {LOWTEMP} degrees in the {THERMNAME}
NestIntent set the temp to {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent set the {RANGEEND} limit to {LOWTEMP} degrees in the {THERMNAME}
NestIntent set the temp from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent set the range from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the temp between {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the temp range {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the {RANGEEND} temp to {LOWTEMP} in the {THERMNAME}
NestIntent adjust the {RANGEEND} limit to {LOWTEMP} in the {THERMNAME}
NestIntent adjust the temp to {LOWTEMP} and {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the {RANGEEND} limit to {LOWTEMP} in the {THERMNAME}
NestIntent adjust the temp from {LOWTEMP} to {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the temp between {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the range from {LOWTEMP} to {HIGHTEMP} in the {THERMNAME}
NestIntent adjust the range between {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the {RANGEEND} temp to {LOWTEMP} degrees in the {THERMNAME}
NestIntent adjust the {RANGEEND} limit to {LOWTEMP} degrees in the {THERMNAME}
NestIntent adjust the temp to {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the range to {LOWTEMP} and {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the {RANGEEND} to {LOWTEMP} degrees in the {THERMNAME}
NestIntent adjust the temp from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent adjust the range from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent keep the temp from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent keep the range from {LOWTEMP} to {HIGHTEMP} degrees in the {THERMNAME}
NestIntent set the {THERMNAME} range between {LOWTEMP} and {HIGHTEMP}
NestIntent set the {THERMNAME} {RANGEEND} limit to {LOWTEMP}
NestIntent set the {THERMNAME} range to {LOWTEMP} and {HIGHTEMP}
NestIntent set the {THERMNAME} {RANGEEND} limit to {LOWTEMP}
NestIntent set the {THERMNAME} temp from {LOWTEMP} to {HIGHTEMP}
NestIntent set the {THERMNAME} temp between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {THERMNAME} {RANGEEND} limit to {LOWTEMP} degrees
NestIntent set the {THERMNAME} {RANGEEND} temp to {LOWTEMP} degrees
NestIntent set the {THERMNAME} temp to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent set the {THERMNAME} {RANGEEND} limit to {LOWTEMP} degrees
NestIntent set the {THERMNAME} temp from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent set the {THERMNAME} range from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} temp between {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {THERMNAME} temp range {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {THERMNAME} {RANGEEND} temp to {LOWTEMP}
NestIntent adjust the {THERMNAME} {RANGEEND} limit to {LOWTEMP}
NestIntent adjust the {THERMNAME} temp to {LOWTEMP} and {HIGHTEMP}
NestIntent adjust the {THERMNAME} {RANGEEND} limit to {LOWTEMP}
NestIntent adjust the {THERMNAME} temp from {LOWTEMP} to {HIGHTEMP}
NestIntent adjust the {THERMNAME} temp between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} range from {LOWTEMP} to {HIGHTEMP}
NestIntent adjust the {THERMNAME} range between {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} {RANGEEND} temp to {LOWTEMP} degrees
NestIntent adjust the {THERMNAME} {RANGEEND} limit to {LOWTEMP} degrees
NestIntent adjust the {THERMNAME} temp to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} range to {LOWTEMP} and {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} {RANGEEND} to {LOWTEMP} degrees
NestIntent adjust the {THERMNAME} temp from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent adjust the {THERMNAME} range from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent keep the {THERMNAME} temp from {LOWTEMP} to {HIGHTEMP} degrees
NestIntent keep the {THERMNAME} range from {LOWTEMP} to {HIGHTEMP} degrees
NestSingleIntent set the temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent set the thermostat to {TEMPVAL} in the {THERMNAME}
NestSingleIntent set the nest to {TEMPVAL} in the {THERMNAME}
NestSingleIntent make the nest {TEMPVAL} in the {THERMNAME}
NestSingleIntent make the temperature {TEMPVAL} in the {THERMNAME}
NestSingleIntent make the thermostat {TEMPVAL} in the {THERMNAME}
NestSingleIntent change the temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent change the nest to {TEMPVAL} in the {THERMNAME}
NestSingleIntent change the thermostat to {TEMPVAL} in the {THERMNAME}
NestSingleIntent set the nest to {TEMPVAL} in the {THERMNAME}
NestSingleIntent put the temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent put the thermostat at {TEMPVAL} in the {THERMNAME}
NestSingleIntent put the nest to {TEMPVAL} in the {THERMNAME}
NestSingleIntent adjust the temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent adjust the thermostat at {TEMPVAL} in the {THERMNAME}
NestSingleIntent adjust the nest to {TEMPVAL} in the {THERMNAME}
NestSingleIntent can you change the nest temp to {TEMPVAL} in the {THERMNAME}
NestSingleIntent will you change the nest temp to {TEMPVAL} in the {THERMNAME}
NestSingleIntent please change the nest temp to {TEMPVAL} in the {THERMNAME}
NestSingleIntent will you change the nest temp to {TEMPVAL} in the {THERMNAME}
NestSingleIntent can you change the nest temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent will you change the nest temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent please change the nest temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent can you change the thermostat temp to {TEMPVAL} in the {THERMNAME}
NestSingleIntent will you change the thermostat temp to {TEMPVAL} in the {THERMNAME}
NestSingleIntent please change the thermostat temp to {TEMPVAL} in the {THERMNAME}
NestSingleIntent can you change the thermostat temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent please change the thermostat temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent will you change the thermostat temperature to {TEMPVAL} in the {THERMNAME}
NestSingleIntent set the temperature to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent set the thermostat to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent set the nest to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent make the nest {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent make the temperature {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent make the thermostat {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent change the temperature to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent change the nest to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent change the thermostat to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent set the nest to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent put the temperature to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent put the thermostat at {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent put the nest to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent set the {THERMNAME} temperature to {TEMPVAL}
NestSingleIntent set the {THERMNAME} thermostat to {TEMPVAL}
NestSingleIntent set the {THERMNAME} nest to {TEMPVAL}
NestSingleIntent make the {THERMNAME} nest {TEMPVAL}
NestSingleIntent make the {THERMNAME} temperature {TEMPVAL}
NestSingleIntent make the {THERMNAME} thermostat {TEMPVAL}
NestSingleIntent change the {THERMNAME} temperature to {TEMPVAL}
NestSingleIntent change the {THERMNAME} nest to {TEMPVAL}
NestSingleIntent change the {THERMNAME} thermostat to {TEMPVAL}
NestSingleIntent set the {THERMNAME} nest to {TEMPVAL}
NestSingleIntent put the {THERMNAME} temperature to {TEMPVAL}
NestSingleIntent put the {THERMNAME} thermostat at {TEMPVAL}
NestSingleIntent put the {THERMNAME} nest to {TEMPVAL}
NestSingleIntent adjust the {THERMNAME} temperature to {TEMPVAL}
NestSingleIntent adjust the {THERMNAME} thermostat at {TEMPVAL}
NestSingleIntent adjust the {THERMNAME} nest to {TEMPVAL}
NestSingleIntent can you change the {THERMNAME} nest temp to {TEMPVAL}
NestSingleIntent will you change the {THERMNAME} nest temp to {TEMPVAL}
NestSingleIntent please change the {THERMNAME} nest temp to {TEMPVAL}
NestSingleIntent will you change the {THERMNAME} nest temp to {TEMPVAL}
NestSingleIntent can you change the {THERMNAME} nest temperature to {TEMPVAL}
NestSingleIntent will you change the {THERMNAME} nest temperature to {TEMPVAL}
NestSingleIntent please change the {THERMNAME} nest temperature to {TEMPVAL}
NestSingleIntent can you change the {THERMNAME} thermostat temp to {TEMPVAL}
NestSingleIntent will you change the {THERMNAME} thermostat temp to {TEMPVAL}
NestSingleIntent please change the {THERMNAME} thermostat temp to {TEMPVAL}
NestSingleIntent can you change the {THERMNAME} thermostat temperature to {TEMPVAL}
NestSingleIntent please change the {THERMNAME} thermostat temperature to {TEMPVAL}
NestSingleIntent will you change the {THERMNAME} thermostat temperature to {TEMPVAL}
NestSingleIntent set the {THERMNAME} temperature to {TEMPVAL} degrees
NestSingleIntent set the {THERMNAME} thermostat to {TEMPVAL} degrees
NestSingleIntent set the {THERMNAME} nest to {TEMPVAL} degrees
NestSingleIntent make the {THERMNAME} nest {TEMPVAL} degrees
NestSingleIntent make the {THERMNAME} temperature {TEMPVAL} degrees
NestSingleIntent make the {THERMNAME} thermostat {TEMPVAL} degrees
NestSingleIntent change the {THERMNAME} temperature to {TEMPVAL} degrees
NestSingleIntent change the {THERMNAME} nest to {TEMPVAL} degrees
NestSingleIntent change the {THERMNAME} thermostat to {TEMPVAL} degrees
NestSingleIntent set the {THERMNAME} nest to {TEMPVAL} degrees
NestSingleIntent put the {THERMNAME} temperature to {TEMPVAL} degrees
NestSingleIntent put the {THERMNAME} thermostat at {TEMPVAL} degrees
NestSingleIntent put the {THERMNAME} nest to {TEMPVAL} degrees
NestSingleIntent {THERMNAME} {TEMPVAL} degrees
NestSingleIntent make it {TEMPVAL} in the {THERMNAME}
NestSingleIntent go to {TEMPVAL} in the {THERMNAME}
NestSingleIntent make it {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent go to {TEMPVAL} degrees in the {THERMNAME}
NestSingleIntent make the {THERMNAME} {TEMPVAL}
NestSingleIntent make the {THERMNAME} {TEMPVAL} degrees
NestModeIntent set the mode to {MODE} in the {THERMNAME}
NestModeIntent change to {MODE} mode in the {THERMNAME}
NestModeIntent switch the nest to {MODE} mode in the {THERMNAME}
NestModeIntent {MODE} mode in the {THERMNAME}
NestModeIntent set the {THERMNAME} mode to {MODE}
NestModeIntent change the {THERMNAME} to {MODE} mode
NestModeIntent switch the {THERMNAME} nest to {MODE} mode
NestModeIntent {THERMNAME} {MODE} mode
NestFanIntentOn turn the {THERMNAME} fan on
NestFanIntentOn start the {THERMNAME} fan
NestFanIntentOn run the {THERMNAME} fan
NestFanIntentOn turn on the {THERMNAME} fan
NestFanIntentOn make the {THERMNAME} fan run
NestFanIntentOn turn the fan on in the {THERMNAME}
NestFanIntentOn start the fan in the {THERMNAME}
NestFanIntentOn run the fan in the {THERMNAME}
NestFanIntentOn turn on the fan in the {THERMNAME}
NestFanIntentOn make the fan run in the {THERMNAME}
NestFanIntentOff turn the fan off in the {THERMNAME}
NestFanIntentOff stop the fan in the {THERMNAME}
NestFanIntentOff turn off the fan in the {THERMNAME}
NestFanIntentOff make the fan stop in the {THERMNAME}
NestFanIntentOff turn the {THERMNAME} fan off
NestFanIntentOff stop the {THERMNAME} fan
NestFanIntentOff turn off the {THERMNAME} fan
NestFanIntentOff make the {THERMNAME} fan stop
NestTempQueryIntent what the {THERMNAME} temperature is
NestTempQueryIntent the {THERMNAME} temperature inside
NestTempQueryIntent what the {THERMNAME} temperature is inside.
NestTempQueryIntent the {THERMNAME} temperature
NestTempQueryIntent the {THERMNAME} nest settings
NestTempQueryIntent how hot the {THERMNAME} is
NestTempQueryIntent how cold the {THERMNAME} is
NestTempQueryIntent how cold the {THERMNAME} is
NestTempQueryIntent how hot the {THERMNAME} is
NestTempQueryIntent what the {THERMNAME} is doing
NestTempQueryIntent what the {THERMNAME} is set to
NestTempQueryIntent what the {THERMNAME} temperature is set to
NestTempQueryIntent what mode the {THERMNAME} is in
NestTempQueryIntent what the the {THERMNAME} settings are
NestTempQueryIntent {THERMNAME} is heating or cooling
NestTempQueryIntent the {THERMNAME} is heating
NestTempQueryIntent the {THERMNAME} is cooling
NestTempQueryIntent what the {THERMNAME} temperature is set at
NestTempQueryIntent what the {THERMNAME} set at
NestTempQueryIntent what temperature the {THERMNAME} is
NestTempQueryIntent what temperature the {THERMNAME} is set to
NestTempQueryIntent {THERMNAME} temperature
NestTempQueryIntent what the temperature is in the {THERMNAME}
NestTempQueryIntent the temperature in the {THERMNAME}
NestTempQueryIntent what the temperature is in the {THERMNAME}
NestTempQueryIntent the temperature in the {THERMNAME}
NestTempQueryIntent the nest settings in the {THERMNAME}
NestTempQueryIntent how hot it is n the {THERMNAME}
NestTempQueryIntent how cold it is in the {THERMNAME}
NestTempQueryIntent how cold it is in the {THERMNAME}
NestTempQueryIntent how hot it is in the {THERMNAME}
NestTempQueryIntent what it's doing in the {THERMNAME}
NestTempQueryIntent what it's set to in the {THERMNAME}
NestTempQueryIntent what the temperature is set to in the {THERMNAME}
NestTempQueryIntent what mode it's in in the {THERMNAME}
NestTempQueryIntent what the settings are in the {THERMNAME}
NestTempQueryIntent it's heating or cooling in the {THERMNAME}
NestTempQueryIntent it's heating in the {THERMNAME}
NestTempQueryIntent it's cooling in the {THERMNAME}
NestTempQueryIntent what the temperature is set at in the {THERMNAME}
NestTempQueryIntent what it's set at in the {THERMNAME}
NestTempQueryIntent what temperature it is in the {THERMNAME}
NestTempQueryIntent what temperature it's set to in the {THERMNAME}
NestTempQueryIntent temperature in the {THERMNAME}
NestAwayIntent switch {THERMNAME} to {AWAYSTATE}
NestAwayIntent change the {THERMENAME} to {AWAYSTATE}
NestAwayIntent the {THERMENAME} nest that we are {AWAYSTATE}
NestAwayIntent the {THERMENAME} thermostat that we are {AWAYSTATE}
NestAwayIntent the {THERMNAME} nest that i am {AWAYSTATE}
NestAwayIntent the {THERMNAME} thermostat that i am {AWAYSTATE}
NestAwayIntent the {THERMNAME} nest that we're {AWAYSTATE}
NestAwayIntent the {THERMNAME} thermostat that we're {AWAYSTATE}
NestAwayIntent the {THERMNAME} thermostat that i'm {AWAYSTATE}
NestAwayIntent the {THERMNAME} thermostat we are at {AWAYSTATE}
NestAwayIntent the {THERMNAME} thermostat i'm {AWAYSTATE}
NestAwayIntent the {THERMNAME} we're {AWAYSTATE}
NestAwayIntent the {THERMNAME} to switch to {AWAYSTATE}
NestAwayIntent the {THERMNAME} to switch to {AWAYSTATE} mode
NestAwayIntent the {THERMNAME} to go to {AWAYSTATE}
NestAwayIntent the {THERMNAME} to go to {AWAYSTATE} mode
NestAwayIntent tell the {THERMNAME} nest i am {AWAYSTATE}
NestAwayIntent tell the {THERMNAME} nest we are {AWAYSTATE}
NestAwayIntent tell the {THERMNAME} nest i'm {AWAYSTATE}
NestAwayIntent tell the {THERMNAME} nest we're {AWAYSTATE}
NestAwayIntent put the {THERMNAME} nest in {AWAYSTATE}
NestAwayIntent put the {THERMNAME} nest in {AWAYSTATE} mode
NestAwayIntent put the {THERMNAME} thermostat in {AWAYSTATE}
NestAwayIntent put the {THERMNAME} thermostat in {AWAYSTATE} mode
NestAwayIntent tell the {THERMNAME} thermostat i am {AWAYSTATE}
NestAwayIntent tell the {THERMNAME} thermostat we are {AWAYSTATE}
NestAwayIntent tell the {THERMNAME}thermostat i'm {AWAYSTATE}
NestAwayIntent tell the {THERMNAME}thermostat we're {AWAYSTATE}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment