4 * Copyright 2014 Cooper Lee
6 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
7 * in compliance with the License. You may obtain a copy of the License at:
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
12 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
13 * for the specific language governing permissions and limitations under the License.
17 name: "Sprayer Controller 2",
18 namespace: "sprayercontroller",
20 description: "Control Sprayers for a period of time a number of times per hour",
22 iconUrl: "http://www.mountpleasantwaterworks.com/images/ground_sprinkler.png",
23 iconX2Url: "http://www.mountpleasantwaterworks.com/images/ground_sprinkler.png"
28 section("Select First Valve(s):") {
29 input name: "valves1", type: "capability.switch", multiple: true
30 input name: "startHour1", title: "Start Hour", type: "number"
31 input name: "stopHour1", title: "Stop Hour", type: "number"
32 input "minutes", "enum", title: "Run how many times an Hour?", expanded: true,
33 options: ["1","2","3","4","5","6","12","20","30","60"] /*/
34 options: ["0", "0,30", "0,20,40", "0,15,30,45", "0, 10, 15, 20, 25,30,35,40,45,50,55", "6", "7"] */
35 input "duration", "number", title: "For how many seconds?"
42 log.debug "Installed with settings: ${settings}"
43 def startHour = startHour1
44 def stopHour = stopHour1
45 def startTime = minutes
47 startTime = "0 0 " + startHour + "-" + stopHour + " * * ?"
48 } else if (minutes == "2") {
49 startTime = "0 0,30 " + startHour + "-" + stopHour + " * * ?"
50 } else if (minutes == "3") {
51 startTime = "0 0,20,40 " + startHour + "-" + stopHour + " * * ?"
52 } else if (minutes == "4") {
53 startTime = "0 0,15,30,45 " + startHour + "-" + stopHour + " * * ?"
54 } else if (minutes == "5") {
55 startTime = "0 0,12,24,36,48 " + startHour + "-" + stopHour + " * * ?"
56 } else if (minutes == "6") {
57 startTime = "0 0,10,20,30,40,50 " + startHour + "-" + stopHour + " * * ?"
58 } else if (minutes == "12") {
59 startTime = "0 0,5,10,15,20,25,30,35,40,45,50,55 " + startHour + "-" + stopHour + " * * ?"
60 } else if (minutes == "20") {
61 startTime = "0 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 " + startHour + "-" + stopHour + " * * ?"
62 } else if (minutes == "30") {
63 startTime = "0 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 " + startHour + "-" + stopHour + " * * ?"
65 startTime = "0 0 " + startHour + "-" + stopHour + " * * ?"
67 log.debug "${startTime}"
69 def stopTime = "0 $minutes $stopHour * * ?" */
70 schedule(startTime, openValve)
71 /* schedule("0 0,5,10,15,20,25,30,35,40,45,50,55 " + startHour + "-" + stopHour + " * * ?", openValve) */
72 /* schedule(stopTime, closeValve) */
73 subscribe(valves1, "switch.on", valveOnHandler, [filterEvents: false])
77 def updated(settings) {
80 log.debug "Installed with settings: ${settings}"
81 def startHour = startHour1
82 def stopHour = stopHour1
83 def startTime = minutes
85 startTime = "0 0 " + startHour + "-" + stopHour + " * * ?"
86 } else if (minutes == "2") {
87 startTime = "0 0,30 " + startHour + "-" + stopHour + " * * ?"
88 } else if (minutes == "3") {
89 startTime = "0 0,20,40 " + startHour + "-" + stopHour + " * * ?"
90 } else if (minutes == "4") {
91 startTime = "0 0,15,30,45 " + startHour + "-" + stopHour + " * * ?"
92 } else if (minutes == "5") {
93 startTime = "0 0,12,24,36,48 " + startHour + "-" + stopHour + " * * ?"
94 } else if (minutes == "6") {
95 startTime = "0 0,10,20,30,40,50 " + startHour + "-" + stopHour + " * * ?"
96 } else if (minutes == "12") {
97 startTime = "0 0,5,10,15,20,25,30,35,40,45,50,55 " + startHour + "-" + stopHour + " * * ?"
98 } else if (minutes == "20") {
99 startTime = "0 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 " + startHour + "-" + stopHour + " * * ?"
100 } else if (minutes == "30") {
101 startTime = "0 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 " + startHour + "-" + stopHour + " * * ?"
103 startTime = "0 0 " + startHour + "-" + stopHour + " * * ?"
105 log.debug "${startTime}"
107 def stopTime = "0 $minutes $stopHour * * ?" */
108 schedule(startTime, openValve)
109 /* schedule(stopTime, closeValve) */
110 subscribe(valves1, "switch.on", valveOnHandler, [filterEvents: false])
111 /* schedule("0 0,5,10,15,20,25,30,35,40,45,50,55 " + startHour + "-" + stopHour + " * * ?", openValve) */
116 log.debug "Turning on Sprinklers ${valves1}"
122 log.debug "Turning off Sprinklers ${valves1}"
126 def valveOnHandler(evt) {
127 log.debug "Valve ${valves1} turned: ${evt.value}"
129 log.debug "Turning off in ${duration/60} minutes (${delay}seconds)"
130 runIn(delay, closeValve)
134 if (minutes == "1") {
135 def startTime = "0 0 $startHour * * ?"
136 } else if (minutes == "2") {
137 def startTime = "0 0,30 $startHour * * ?"
138 } else if (minutes == "3") {
139 def startTime = "0 0,20,40 $startHour * * ?"
140 } else if (minutes == "4") {
141 def startTime = "0 0,15,30,45 $startHour * * ?"
142 } else if (minutes == "5") {
143 def startTime = "0 0,12,24,36,48 $startHour * * ?"
144 } else if (minutes == "6") {
145 def startTime = "0 0,10,20,30,40,50 $startHour * * ?"
146 } else if (minutes == "12") {
147 def startTime = "0 0,5,10,15,20,25,30,35,40,45,50,55 $startHour * * ?"
148 } else if (minutes == "20") {
149 def startTime = "0 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 $startHour * * ?"
150 } else if (minutes == "30") {
151 def startTime = "0 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 $startHour * * ?"
153 def startTime = "0 0 $startHour * * ?"