<?xml version="1.0" encoding="utf-8"?>
<!--C:\Users\james\Desktop\VcCollection_Nest with Python option (March 2016).xml-->
<!--This groupCollection xml file was exported from VoxCommando-->
<VoiceCommands version="2.2.1.6">
    <groupCollection open="True" name="Nest with Python option (March 2016)">
        <commandGroup open="True" name="Nest with Python set-up" enabled="True" prefix="" priority="0" requiredProcess="" description="">
            <command id="482" name="1. Create Nest folder (Execute just once)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="You only need to run this command once. This creates a Nest folder in your VC directory, and some payloadXML. (Nest commands hat-tip: Scott M. Baker's nest.py interface was very helpful to learn the Nest's authentication and request syntax. http://www.smbaker.com/)">
                <action>
                    <cmdType>File.MakeDir</cmdType>
                    <params>
                        <param>Nest</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.Clear</cmdType>
                    <params>
                        <param>Nest\Nest_therm_max-min.xml</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.AddPair</cmdType>
                    <params>
                        <param>Nest\Nest_therm_max-min.xml</param>
                        <param>high</param>
                        <param>maximum, max, high, highest</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.AddPair</cmdType>
                    <params>
                        <param>Nest\Nest_therm_max-min.xml</param>
                        <param>low</param>
                        <param>minimum, min, low, lowest</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.Clear</cmdType>
                    <params>
                        <param>Nest\protectFeatures.xml</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.AddPair</cmdType>
                    <params>
                        <param>Nest\protectFeatures.xml</param>
                        <param>night light enable</param>
                        <param>night light, path light</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.AddPair</cmdType>
                    <params>
                        <param>Nest\protectFeatures.xml</param>
                        <param>gesture hush enable</param>
                        <param>gesture, gesture feature, gesture hush</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.AddPair</cmdType>
                    <params>
                        <param>Nest\protectFeatures.xml</param>
                        <param>hushed state</param>
                        <param>hush state, hushed state</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.AddPair</cmdType>
                    <params>
                        <param>Nest\protectFeatures.xml</param>
                        <param>heads up enable</param>
                        <param>heads up, heads up alert, alert mode</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PayloadXML.AddPair</cmdType>
                    <params>
                        <param>Nest\protectFeatures.xml</param>
                        <param>ntp green led enable</param>
                        <param>nightly promise, green light, green LED</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <phrase>Create Nest folder</phrase>
            </command>
            <command id="1214" name="2. Nest authorization (Edit to add your info)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="EDIT USERNAME &amp; PASSWORD in Scrape.Post. You'll need to run this cmd every month or so, when your previous authorization token expires. If you use Google Calendar, you could automate this to run on a schedule.">
                <action>
                    <cmdType>Map.DropTable</cmdType>
                    <params>
                        <param>Nest</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Map.CreateTable</cmdType>
                    <params>
                        <param>Nest</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Scrape.Post</cmdType>
                    <params>
                        <param>https://home.nest.com/user/login</param>
                        <param>username=youremail@email.com&amp;password=your_password</param>
                        <param />
                        <param />
                        <param>application/x-www-form-urlencoded</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Results.RegEx</cmdType>
                    <params>
                        <param>"user":"(user).(.*?)","(access_token)":"(.*?)".*?(transport_url)":"(.*?)"</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Map.Set</cmdType>
                    <params>
                        <param>Nest</param>
                        <param>{Match.1.1}</param>
                        <param>{Match.1.2}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Map.Set</cmdType>
                    <params>
                        <param>Nest</param>
                        <param>{Match.1.3}</param>
                        <param>{Match.1.4}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Map.Set</cmdType>
                    <params>
                        <param>Nest</param>
                        <param>{Match.1.5}</param>
                        <param>{Match.1.6}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>VC.TriggerEvent</cmdType>
                    <params>
                        <param>reload Nest.py</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <phrase>Log in to Nest</phrase>
            </command>
            <command id="1245" name="3. Generate device list" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>myNest.getDevices()</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>LastActionSuccess</ifType>
                    <ifParams>&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>Scanning Nest ... Generating payload XML files for your Nest products.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Group.Rebuild</cmdType>
                            <params>
                                <param>Nest with Python commands</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>There was a problem generating your device list.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Generate device list</phrase>
                <event>deviceList</event>
            </command>
            <command id="341" name="Load python file for Nest commands" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>PY.ExecFile</cmdType>
                    <params>
                        <param>Nest.py</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>myNest.readNest()</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <event>python ready</event>
                <event>reload Nest.py</event>
            </command>
            <command id="1225" name="Update Nest data" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="This will run automatically when you run the authorization command. You may want to run this once a day as well, on a timer, to refresh your data. Or just ask VC to &quot;Refresh Nest data&quot; before you ask for any new status information.">
                <action>
                    <cmdType>Scrape.Get</cmdType>
                    <params>
                        <param>{M:Nest.transport_url}/v2/mobile/user.{M:Nest.user}</param>
                        <param>application/x-www-form-urlencoded</param>
                        <param>Nest/1.1.0.10 CFNetwork/548.0.4</param>
                        <param />
                        <param />
                        <param>Authorization: Basic {M:Nest.access_token}</param>
                        <param>X-nl-user-id:{M:Nest.user}</param>
                        <param>X-nl-protocol-version:1</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>File.Write</cmdType>
                    <params>
                        <param>Nest\Nest_dev_status.txt</param>
                        <param>{LastResult}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <phrase>Update, Refresh</phrase>
                <phrase> Nest device info, Nest data</phrase>
                <event>nestUpdate</event>
            </command>
        </commandGroup>
        <commandGroup open="False" name="Nest with Python commands" enabled="True" prefix="" priority="0" requiredProcess="" description="">
            <command id="520" name="What are my Protect units called?" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>File.Read</cmdType>
                    <params>
                        <param>Nest\protectList.xml</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>LastActionSuccess</ifType>
                    <ifParams>&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>Results.RegEx</cmdType>
                            <params>
                                <param>&lt;phrase&gt;(.*?)&lt;/phrase&gt;</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>Your Protect units are named:</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>OSD.AddText</cmdType>
                            <params>
                                <param>{i}. {Match.{i}}</param>
                            </params>
                            <cmdRepeat>{#M}</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Here's a list of your Protect units|The following Nest Protects were found</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>{i}. {Match.{i}}</param>
                            </params>
                            <cmdRepeat>{#M}</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>I'm sorry. There was a problem retrieving that information.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>I'm sorry. There was a problem retrieving that information.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>What are my Protect units called?</phrase>
            </command>
            <command id="483" name="What are my thermostats called?" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>File.Read</cmdType>
                    <params>
                        <param>Nest\thermoList.xml</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>LastActionSuccess</ifType>
                    <ifParams>&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>Results.RegEx</cmdType>
                            <params>
                                <param>&lt;phrase&gt;(.*?)&lt;/phrase&gt;</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>Your thermostats are:</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>OSD.AddText</cmdType>
                            <params>
                                <param>{i}. {Match.{i}}</param>
                            </params>
                            <cmdRepeat>{#M}</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Here's a list of your thermostats|The following Nest thermostats were found</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>{i}. {Match.{i}}</param>
                            </params>
                            <cmdRepeat>{#M}</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>I'm sorry. There was a problem retrieving that information.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>I'm sorry. There was a problem retrieving that information.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>What are my thermostats called?</phrase>
            </command>
            <command id="366" name="Check Protect battery health (all units)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>myNest.getProtectInfo(None,"battery_health_state")</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>OSD.ShowText</cmdType>
                    <params>
                        <param>Protect battery health:</param>
                        <param>5000</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>OSD.AddText</cmdType>
                    <params>
                        <param>{Match.{i}}</param>
                    </params>
                    <cmdRepeat>{#M}</cmdRepeat>
                </action>
                <phrase>Check Protect battery health</phrase>
            </command>
            <command id="377" name="Check battery level of {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>result = myNest.getProtectInfo("{1}","battery_health_state")</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>OSD.ShowText</cmdType>
                    <params>
                        <param>Battery level for {PF.1} is: {LastResult}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Battery level for {PF.1} is: {LastResult}</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <phrase>Check battery level</phrase>
                <phrase>of the, for my</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\protectList.xml</payloadFromXML>
            </command>
            <command id="1295" name="Enable/Disable {2}'s path light" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{1}&amp;&amp;enable</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Enabling path light on {PF.2} </param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/topaz.{2}</param>
                                <param>{"night_light_enable":true}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Disabling path light on {PF.2} </param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/topaz.{2}</param>
                                <param>{"night_light_enable":false}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <payloadList>enable, disable</payloadList>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\protectList.xml</payloadFromXML>
                <phrase>path light</phrase>
            </command>
            <command id="1287" name="Enable/Disable heads up alert on {2}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{1}&amp;&amp;enable</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Enabling heads up on {PF.2} </param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/topaz.{2}</param>
                                <param>{"heads_up_enable":true}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Disabling heads up on {PF.2} </param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/topaz.{2}</param>
                                <param>{"heads_up_enable":false}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <payloadList>enable, disable</payloadList>
                <phrase>heads up alert on</phrase>
                <phrase optional="true">the, my</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\protectList.xml</payloadFromXML>
            </command>
            <command id="1311" name="Enable/Disable nightly promise light on {2}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{1}&amp;&amp;enable</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Enabling nightly promise light on {PF.2} </param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/topaz.{2}</param>
                                <param>{"ntp_green_led_enable":true}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Disabling nightly promise on {PF.2} </param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/topaz.{2}</param>
                                <param>{"ntp_green_led_enable":false}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <payloadList>enable, disable</payloadList>
                <phrase>nightly promise on</phrase>
                <phrase optional="true">the, my</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\protectList.xml</payloadFromXML>
            </command>
            <command id="1241" name="Get current or target temperature for {2} (thermostat)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Units of measurement (C or F) determined by your Nest device settings.">
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>result=myNest.getShared('{2}','{1}')</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="True">
                    <ifType>LastActionSuccess</ifType>
                    <ifParams>&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>Sorry. Request failed.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Sorry. Request failed.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)Contains(B)</ifType>
                    <ifParams>{LastResult}&amp;&amp;heat-cool</ifParams>
                    <then>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>{PF.2} {LastResult}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>{PF.2} {LastResult}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>{PF.2} shows a {1} of {LastResult}.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>{PF.2} shows a {1} of {LastResult}.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Get , What is the</phrase>
                <payloadList>current temperature, target temperature, target temperature high, target temperature low</payloadList>
                <phrase>for, for the, for my</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\thermoList.xml</payloadFromXML>
            </command>
            <command id="534" name="Check status of Protect indicators (e.g. night light)" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>result = myNest.getProtectInfo('{2}','{1}')</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>LastActionSuccess</ifType>
                    <ifParams>&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>{1} on {PF.2}: {LastResult}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>Request failed.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Is</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\protectFeatures.xml</payloadFromXML>
                <phrase>enabled, disabled</phrase>
                <phrase>on, on my, on the</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\protectList.xml</payloadFromXML>
            </command>
            <command id="535" name="Get fan mode/humidity level info for {2}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>result = myNest.getDeviceInfo('{2}','{1}')</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>LastActionSuccess</ifType>
                    <ifParams>&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>{1} on {PF.2}: {LastResult}</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>{1} is currently {LastResult}.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>Request failed.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>What is the, What's the, Get</phrase>
                <payloadList>fan mode, current humidity, target humidity</payloadList>
                <phrase optional="true">level</phrase>
                <phrase>for, for the, on the, on</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\thermoList.xml</payloadFromXML>
            </command>
            <command id="544" name="Is my {1} set to away mode?" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>PY.ExecString</cmdType>
                    <params>
                        <param>result = myNest.getDeviceInfo('{1}','away')</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="True">
                    <ifType>LastActionSuccess</ifType>
                    <ifParams>&amp;&amp;</ifParams>
                    <then>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>Sorry, I'm not sure.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>VC.StopMacro</cmdType>
                            <params />
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else />
                </if>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{LastResult}&amp;&amp;enabled</ifParams>
                    <then>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>{PF.1} is set to away mode.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>{PF.1} is in away mode.|Currently, your {PF.1} is in away mode.|Nest thinks you are away.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>OSD.ShowText</cmdType>
                            <params>
                                <param>{PF.1} is set to home mode.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                        <action>
                            <cmdType>TTS.Speak</cmdType>
                            <params>
                                <param>{PF.1} is in home mode.|Currently, your {PF.1} is in home mode.|Nest thinks you are at home.</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Is my, Is the</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\abodeList.xml</payloadFromXML>
                <phrase>set to, in</phrase>
                <phrase>away mode, home mode</phrase>
            </command>
            <command id="1271" name="Set temperature of {1} to {2}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Nest stores temperature in Celsius only.  If you want to use Fahrenheit then you will need to convert between Fahrenheit and Celsius. This can be done using a simple python script.">
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Setting {PF.1} to {2} degrees.</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>OSD.ShowText</cmdType>
                    <params>
                        <param>Setting {PF.1} to {2} degrees.</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Scrape.Post</cmdType>
                    <params>
                        <param>{M:Nest.transport_url}/v2/put/shared.{1}</param>
                        <param>{"target_change_pending":true,"target_temperature":{2}.0}</param>
                        <param />
                        <param />
                        <param>application/json</param>
                        <param>Authorization: Basic {M:Nest.access_token}</param>
                        <param>X-nl-protocol-version: 1</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <phrase>Set</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\thermoList.xml</payloadFromXML>
                <phrase>to</phrase>
                <payloadRange>10,25</payloadRange>
                <phrase optional="true">degrees, degrees Celsius</phrase>
            </command>
            <command id="1306" name="Set {1} to home/away mode" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="If you have more than one Nest dwelling, consult your Nest map to find the correct struc_id variable. Edit the Post command accordingly.">
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Setting {PF.1} to {2} mode.</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>OSD.ShowText</cmdType>
                    <params>
                        <param>Setting {PF.1} to {2} mode.</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{2}&amp;&amp;away</ifParams>
                    <then>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/structure.{1}</param>
                                <param>{"away":true}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/structure.{1}</param>
                                <param>{"away":false}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Set</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\abodeList.xml</payloadFromXML>
                <phrase optional="true">to</phrase>
                <payloadList>away,home</payloadList>
                <phrase optional="true">mode</phrase>
            </command>
            <command id="1269" name="Set max/min temperature of {2} to {3}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Uses Fahrenheit if your Nest device is set to use Fahrenheit, or Celsius if set to Celsius. You should change the temperature range in the command phrase to the appropriate range for your measurement system.">
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Setting {PF.2}'s {1} to {3} degrees.</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>OSD.ShowText</cmdType>
                    <params>
                        <param>Setting {PF.2}'s {1} to {3} degrees.</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Scrape.Post</cmdType>
                    <params>
                        <param>{M:Nest.transport_url}/v2/put/shared.{2}</param>
                        <param>{"target_temperature_{1}":{3}.0}</param>
                        <param />
                        <param />
                        <param>application/json</param>
                        <param>Authorization: Basic {M:Nest.access_token}</param>
                        <param>X-nl-protocol-version: 1</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <phrase>Set</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\Nest_therm_max-min.xml</payloadFromXML>
                <phrase optional="true">temp, temperature</phrase>
                <phrase>of</phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\thermoList.xml</payloadFromXML>
                <phrase>to</phrase>
                <payloadRange>10,28</payloadRange>
                <phrase optional="true">degrees, degrees Celsius</phrase>
            </command>
            <command id="1284" name="Set {1} to heat/cool/heat and cool mode" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Setting {PF.1} to {2} mode</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <if ifBlockDisabled="False" ifNot="False">
                    <ifType>(A)==(B)</ifType>
                    <ifParams>{2}&amp;&amp;heat and cool</ifParams>
                    <then>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/shared.{1}</param>
                                <param>{"target_temperature_type":"range"}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </then>
                    <else>
                        <action>
                            <cmdType>Scrape.Post</cmdType>
                            <params>
                                <param>{M:Nest.transport_url}/v2/put/shared.{1}</param>
                                <param>{"target_temperature_type":"{2}"}</param>
                                <param />
                                <param />
                                <param>application/json</param>
                                <param>Authorization: Basic {M:Nest.access_token}</param>
                                <param>X-nl-protocol-version: 1</param>
                            </params>
                            <cmdRepeat>1</cmdRepeat>
                        </action>
                    </else>
                </if>
                <phrase>Set </phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\thermoList.xml</payloadFromXML>
                <phrase>to</phrase>
                <payloadList>heat, cool, heat and cool</payloadList>
                <phrase optional="true">mode</phrase>
            </command>
            <command id="1304" name="Set {1} fan to {2} mode" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
                <action>
                    <cmdType>TTS.Speak</cmdType>
                    <params>
                        <param>Setting {PF.1}'s fan to {2} mode</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <action>
                    <cmdType>Scrape.Post</cmdType>
                    <params>
                        <param>{M:Nest.transport_url}/v2/put/device.{1}</param>
                        <param>{"fan_mode":"{2}"}</param>
                        <param />
                        <param />
                        <param>application/json</param>
                        <param>Authorization: Basic {M:Nest.access_token}</param>
                        <param>X-nl-protocol-version: 1</param>
                    </params>
                    <cmdRepeat>1</cmdRepeat>
                </action>
                <phrase>Set </phrase>
                <payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">Nest\thermoList.xml</payloadFromXML>
                <phrase>fan to</phrase>
                <payloadList>on, auto</payloadList>
                <phrase optional="true">mode</phrase>
            </command>
        </commandGroup>
    </groupCollection>
</VoiceCommands>