SmartThings Community

Using Contact and Motion Sensors to Trigger Alexa Routines (DTH in post 97) (Official Amazon Feature)


(Mike) #83

In the Alexa App when you create a Routine and select an Alexa Says Action, you can then select Phrases and there is a selection of categories. In many, if not all, of the categories there is a “Say a random phrase” option. I have not played with it much, but it may or may not cover what you are looking for in terms of random.

Since you can add multiple Alexa Says Actions to a Routine you might be able to get clever by combining a Random phrase with a fixed Custom response.


#84

I can’t find a place to add a Phrases category where she can pick random phrases from. I will have to play with the app some more.


(Mike) #85

I attempted to highlight in screen shots…


#86

Yep, got that, I want to make my own category in the spot where Confirmations, Good Bye, etc are so I can make random phrases within in.


(Mike) #87

Yeah, I don’t think that is an option. That would be a great feature for them to add and should be pretty easy to do.


(Mark) #88

Yes, Amazon should fix this.


(Mark) #89

Here is my current first-world problem.

In my bedroom I have an Ecobee temperature sensor and Iris motion sensor. Until Alexa added sensors to her bag of tricks, I could just ask: “Alexa, what is the temperature in the bedroom?”. Alexa would respond with the temperature from the Ecobee sensor. Now that Alexa knows about the Iris sensor, she responds: “There is more than one thermostat in the bedroom. Please ask again with the name of the thermostat.”.

Any suggestions?


(Terry Grant) #90

My sensors with temp aren’t showing temps with Alexa?? Any help appreciated


(Mark) #91

The temps aren’t showing up in the Alexa app; but if you ask Alexa for the temperature of the sensor, she will respond.


(Scott) #92

Simulated Switches and Contacts did not work for me, but the uDTH Universal Device Type did work if I removed the Lock and Door capabilities. Maybe @Mike_Maxwell can create a uDTHlite version that does not have these features so they can be used by Alexa.


#93

If Alexa can see a simulated temperature device then you can average out those two temps in webCoRE and send it to to the virtual temp device. I am not home to test it.


(Kraeg) #94

Is this actually working in the UK or is it US only at the moment?

All my devices are showing up in the Alexa app (I can ask her for the temperatures of my contact sensors etc) but I can’t create any routines with a device:

I’m running iOS with all the latest app updates etc

Kraeg


(Mark) #95

This would just compound the problem as there would then be three temperature reporting devices in the bedroom.


(Tyler Durden) #96

I’m not sure about the UK, but I’m in the US and had the same experience as you did. If you can see your sensors in Alexa’s smart home devices, but don’t see the option to use sensors in the routines, try signing out of the Alexa app and signing back in. (Restarting the phone, or killing the app doesn’t help.)


(Brian Pierron) #97

I combined two device handlers into one, so that the device can be triggered like a switch (I used it to turn the switch on when I arrive home, and off when I leave), but is also recognized in alexa as a contact sensor so that it can trigger an alexa routine. I only put this together as a proof of concept, so the code can probably be cleaned up, but it appears to be working.

The two device handlers I combined were the simulated switch:


and joshualyon’s simulated contact sensor:

Result:

/**
 *  Copyright 2015 SmartThings
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 */
metadata {

    definition (name: "Alexa Switch", namespace: "bjpierron", author: "bjpierron", runLocally: false, mnmn: "SmartThings", vid: "generic-switch") {
        capability "Switch"
        capability "Relay Switch"
        capability "Sensor"
        capability "Actuator"
        capability "Health Check"
        
        capability "Contact Sensor"

        command    "markDeviceOnline"
        command    "markDeviceOffline"
    }
    
    simulator {
		status "open": "contact:open"
		status "closed": "contact:closed"
	}

    tiles {
        standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
            state "off", label: '${currentValue}', action: "switch.on", icon: "st.switches.switch.off", backgroundColor: "#ffffff"
            state "on", label: '${currentValue}', action: "switch.off", icon: "st.switches.switch.on", backgroundColor: "#00A0DC"
        }
        standardTile("deviceHealthControl", "device.healthStatus", decoration: "flat", width: 1, height: 1, inactiveLabel: false) {
            state "online",  label: "ONLINE", backgroundColor: "#00A0DC", action: "markDeviceOffline", icon: "st.Health & Wellness.health9", nextState: "goingOffline", defaultState: true
            state "offline", label: "OFFLINE", backgroundColor: "#E86D13", action: "markDeviceOnline", icon: "st.Health & Wellness.health9", nextState: "goingOnline"
            state "goingOnline", label: "Going ONLINE", backgroundColor: "#FFFFFF", icon: "st.Health & Wellness.health9"
            state "goingOffline", label: "Going OFFLINE", backgroundColor: "#FFFFFF", icon: "st.Health & Wellness.health9"
        }
        main "switch"
        details(["switch","on","off","deviceHealthControl"])
    }
}

def installed() {
    log.trace "Executing 'installed'"
    markDeviceOnline()
    off()
    initialize()
}

def updated() {
    log.trace "Executing 'updated'"
    initialize()
}

def markDeviceOnline() {
    setDeviceHealth("online")
}

def markDeviceOffline() {
    setDeviceHealth("offline")
}

private setDeviceHealth(String healthState) {
    log.debug("healthStatus: ${device.currentValue('healthStatus')}; DeviceWatch-DeviceStatus: ${device.currentValue('DeviceWatch-DeviceStatus')}")
    // ensure healthState is valid
    List validHealthStates = ["online", "offline"]
    healthState = validHealthStates.contains(healthState) ? healthState : device.currentValue("healthStatus")
    // set the healthState
    sendEvent(name: "DeviceWatch-DeviceStatus", value: healthState)
    sendEvent(name: "healthStatus", value: healthState)
}

private initialize() {
    log.trace "Executing 'initialize'"
    sendEvent(name: "DeviceWatch-Enroll", value: [protocol: "cloud", scheme:"untracked"].encodeAsJson(), displayed: false)
}

def parse(description) {
}

def on() {
    log.debug "$version on()"
    sendEvent(name: "switch", value: "on")
    sendEvent(name: "contact", value: "open")
}

def off() {
    log.debug "$version off()"
    sendEvent(name: "switch", value: "off")
    sendEvent(name: "contact", value: "closed")
}



private getVersion() {
    "PUBLISHED"
}

How do I change the state of a Virtual sensor using a virtual Switch?
Alexa "Middleman" Issue
(Sidney) #98

How do you tell webCoRE to ‘open virtual contact’. I’m trying to create this in the webCoRE inside of my smartthings app.

What I want to do is: If a switch is turned “on”, then change the virtual contact to “open”.

I get all the way through, but there is no option to set the state of the virtual contact to “open”.

The last step = Using ‘Virtual Contact Sensor 01’… Add a Task… but there is nothing in the task list to set the state to “open”.

I’ve searched over on webCoRE and found nothing.

Any help would be greatly appreciated.


#99

Check the device handler you’re using in the ide. Mine has close and open as available actions/command.


(Jimmy) #100


(Sidney) #101

Thank you! I had ‘Contact Sensor’ selected, instead of Simulated.

It’s working now.

Thank you!!


(Kraeg) #102

Thanks for the suggestion, didnt work for me sadly. Maybe this is US only at the moment then.