2 * Copyright 2015 SmartThings
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at:
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
10 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
11 * for the specific language governing permissions and limitations under the License.
19 namespace: "smartthings",
20 author: "SmartThings",
21 description: "Send a text when movement is detected",
22 category: "Fun & Social",
23 iconUrl: "https://s3.amazonaws.com/smartapp-icons/Meta/text_accelerometer.png",
24 iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Meta/text_accelerometer@2x.png"
28 section("When movement is detected...") {
29 input "accelerationSensor", "capability.accelerationSensor", title: "Where?"
31 section("Text me at...") {
32 input("recipients", "contact", title: "Send notifications to") {
33 input "phone1", "phone", title: "Phone number?"
39 subscribe(accelerationSensor, "acceleration.active", accelerationActiveHandler)
44 subscribe(accelerationSensor, "acceleration.active", accelerationActiveHandler)
47 def accelerationActiveHandler(evt) {
48 // Don't send a continuous stream of text messages
50 def timeAgo = new Date(now() - (1000 * deltaSeconds))
51 def recentEvents = accelerationSensor.eventsSince(timeAgo)
52 log.trace "Found ${recentEvents?.size() ?: 0} events in the last $deltaSeconds seconds"
53 def alreadySentSms = recentEvents.count { it.value && it.value == "active" } > 1
56 log.debug "SMS already sent within the last $deltaSeconds seconds"
58 if (location.contactBookEnabled) {
59 log.debug "accelerationSensor has moved, texting contacts: ${recipients?.size()}"
60 sendNotificationToContacts("${accelerationSensor.label ?: accelerationSensor.name} moved", recipients)
63 log.debug "accelerationSensor has moved, sending text message"
64 sendSms(phone1, "${accelerationSensor.label ?: accelerationSensor.name} moved")