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: "Get a push notification or text message when water is detected where it doesn't belong.",
22 category: "Safety & Security",
23 iconUrl: "https://s3.amazonaws.com/smartapp-icons/Meta/water_moisture.png",
24 iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Meta/water_moisture@2x.png"
28 section("When there's water detected...") {
29 input "alarm", "capability.waterSensor", title: "Where?"
31 section("Send a notification to...") {
32 input("recipients", "contact", title: "Recipients", description: "Send notifications to") {
33 input "phone", "phone", title: "Phone number?", required: false
39 subscribe(alarm, "water.wet", waterWetHandler)
44 subscribe(alarm, "water.wet", waterWetHandler)
47 def waterWetHandler(evt) {
50 def timeAgo = new Date(now() - (1000 * deltaSeconds))
51 def recentEvents = alarm.eventsSince(timeAgo)
52 log.debug "Found ${recentEvents?.size() ?: 0} events in the last $deltaSeconds seconds"
54 def alreadySentSms = recentEvents.count { it.value && it.value == "wet" } > 1
57 log.debug "SMS already sent within the last $deltaSeconds seconds"
59 def msg = "${alarm.displayName} is wet!"
60 log.debug "$alarm is wet, texting phone number"
62 if (location.contactBookEnabled) {
63 sendNotificationToContacts(msg, recipients)