1414 via Omoron LY1F SPDT 15amp relay. For only pump control any switch could work like the Enerwave ZWN-RSM1S
1515 or Monoprice #11989 Z-Wave In-Wall On/Off module
1616
17+
18+
1719 Change Log
20+ 2016-07-04 b. removed dynamic feedback section, bug preventing saving, minor grammitical edits
21+ .. changed true to false install on dynamicPage(name: "aboutPage", title: none, install: false
1822 2016-07-02b. fixed mode bug not shutting of evap by changing mode technique, cleaned up code with shutdownEvap()
1923 a. modify dynamic feedback of inputs to be via paragraph technique
2024 2016-07-01 changed user select mode method, changed default delay-on to 1.5, removed the default setpoint because
4852*/
4953
5054definition(
51- name : " Evap. Cooler Thermostat" ,
55+ name : " Evap Cooler Thermostat" ,
5256 namespace : " dcoffing" ,
5357 author : " Dale Coffing, SmartThings" ,
5458 description : " Automatic control for an Evaporative Cooler with a 2-speed motor, water pump and any temp sensor." ,
@@ -78,8 +82,10 @@ def mainPage() {
7882
7983 section(" Enter the desired room temperature setpoint..." ){
8084 input " setpoint" , " decimal" , title : " Room Setpoint Temp" , required : true
81- }
82-
85+ }
86+
87+ // IS this little section below buggy or is it ST again? It won't let you save the app when clicking Done???
88+
8389 section(" Current Conditions are" ){ // The 'if' statements used below prevent null error crash
8490 if (fanMotor) {
8591 paragraph (" ${ fanMotor.displayName} is ${ fanMotor.currentSwitch} " )
@@ -94,6 +100,7 @@ def mainPage() {
94100 paragraph (" ${ fanSpeed.displayName} is ${ fanSpeed.currentSwitch} " )
95101 }
96102 }
103+
97104
98105 section(" Optional Settings (Fan Speed, Timers, Motion, etc)" ) {
99106 href (name : " optionsPage" ,
@@ -107,7 +114,7 @@ def mainPage() {
107114// VERSION
108115 section(" Version Info, User's Guide" ) {
109116 href (name : " aboutPage" ,
110- title : " Evap Cooler Thermostat \n " + " Version: 1.0.160702c \n " + " Copyright © 2016 Dale Coffing" ,
117+ title : " Evap Cooler Thermostat \n " + " Version: 1.0.160704b \n " + " Copyright © 2016 Dale Coffing" ,
111118 description : " Tap to access user's guide." ,
112119 image : " https://raw.githubusercontent.com/dcoffing/SmartThingsPublic/master/smartapps/dcoffing/evap-cooler-thermostat.src/ect250x250.png" ,
113120 required : false ,
@@ -120,18 +127,18 @@ def mainPage() {
120127def optionsPage () {
121128 dynamicPage(name : " optionsPage" , title : " Configure Optional Settings" , install : false , uninstall : false ) {
122129
123- section(" Select the Evap Cooler Fan Speed switch control hardware (optional, leave blank for single speed)...." ){
130+ section(" Select the Evap Cooler Fan 2- Speed switch control hardware (optional, leave blank for single speed)...." ){
124131 input " fanSpeed" , " capability.switch" ,
125- multiple :false , title : " Fan Hi-Lo Speed Control device" , required : false , submitOnChange : true
132+ multiple :false , title : " Fan Hi-Lo 2- Speed Control device" , required : false , submitOnChange : true
126133 }
127134
128135 section(" Enter the desired differential temp between fan speeds (default=1.0)..." ){
129136 input " fanDiffTempString" , " enum" , title : " Fan Differential Temp" , options : [" 0.5" ," 1.0" ," 1.5" ," 2.0" ], required : false
130137 }
131138
132- section(" Select the Evap Cooler pump switch hardware..." ){
139+ section(" Select the Evap Cooler water pump switch hardware..." ){
133140 input " fanPump" , " capability.switch" ,
134- multiple :false , title : " Fan Pump On-Off Control device" , required : false , submitOnChange : true
141+ multiple :false , title : " Water Pump On-Off Control device" , required : false , submitOnChange : true
135142 }
136143 section(" Enter the desired minutes to delay start of fan to allow for wetting of pads. (default=1.5)..." ){
137144 input " fanDelayOnString" , " enum" , title : " Fan Delay On Timer" , options : [" 0.0" ," 0.5" ," 1.0" ," 1.5" ," 2.0" ," 2.5" ], required : false
@@ -150,16 +157,16 @@ def optionsPage() {
150157 input " autoMode" , " enum" , title : " Enable Evap Cooler Thermostat?" , options : [" NO-Manual" ," YES-Auto" ], required : false
151158 }
152159
153- section (" Change SmartApp name, Mode selector" ) {
160+ section (" Change SmartApp name, Mode selector" ) {
154161 label title : " Assign a name" , required : false
155- // mode(title: "Set for specific mode(s)"), required: false //this technique for User mode fails for this smartapp
162+ // mode(title: "Set for specific mode(s)"), required: false //this technique for User mode fails tempHandler still executes for this smartapp?
156163 input " selectedModes" , " mode" , title : " Select specific mode(s) to run (default is ALL modes)" , multiple : true , required : false
157164 }
158165 }
159166 }
160167
161168def aboutPage () {
162- dynamicPage(name : " aboutPage" , title : none, install : true , uninstall : true ) {
169+ dynamicPage(name : " aboutPage" , title : none, install : false , uninstall : true ) {
163170 section(" User's Guide for Evap Cooler Thermostat" ) {
164171 paragraph textHelp()
165172 }
@@ -206,8 +213,7 @@ def handleTemperature(temp) { //
206213 // motion detected recently
207214 tempCheck(temp, setpoint)
208215 log. debug " handleTemperature ISACTIVE($isActive )"
209- }
210- else {
216+ } else {
211217 shutdownEvap()
212218 }
213219}
@@ -229,9 +235,8 @@ def motionHandler(evt) {
229235 if (lastTemp != null ) { // lastTemp not equal to null (value never been set)
230236 tempCheck(lastTemp, setpoint)
231237 }
232- }
233- else {
234- shutdownEvap()
238+ } else {
239+ shutdownEvap()
235240 }
236241 }
237242}
@@ -246,7 +251,7 @@ private tempCheck(currentTemp, desiredTemp) {
246251 // convert Fan Diff Temp input enum string to number value and if user doesn't select a Fan Diff Temp default to 1.0
247252 def fanDiffTempValue = (settings. fanDiffTempString != null && settings. fanDiffTempString != " " ) ? Double . parseDouble(settings. fanDiffTempString): 1.0
248253
249- // if user doesn't select autoMode then default to "YES-Auto"
254+
250255 def autoModeValue = (settings. autoMode != null && settings. autoMode != " " ) ? settings. autoMode : " YES-Auto"
251256
252257 def LowDiff = fanDiffTempValue* 1
@@ -255,48 +260,44 @@ private tempCheck(currentTemp, desiredTemp) {
255260 log. debug " TEMPCHECK#2(CT=$currentTemp , SP=$desiredTemp , FM=$fanMotor . currentSwitch , automode=$autoMode , FDTstring=$fanDiffTempString , FDTvalue=$fanDiffTempValue )"
256261
257262
258- if (currentModeAllowed(settings. selectedModes)) {
263+ if (currentModeAllowed(settings. selectedModes)) {
259264 // Executes if current ST mode matches one of the user selected modes.
260265
261- if (autoModeValue == " YES-Auto" ) {
262- switch (currentTemp - desiredTemp) {
263- case { it >= HighDiff }:
264- // turn on fan high speed
265- fanSpeed. on() // set fan Hi speed
266- if (fanMotor. currentSwitch == " off" ) { // if fan is OFF turn everything on
267- fanPump. on() // set water pump on
268- fanMotor. on([delay : (fanDelayOnValue* 60 * 1000 )]) // delay starting fan to allow pump to wet pads
269- log. debug " HI speed(CT=$currentTemp , SP=$desiredTemp , HighDiff=$HighDiff , fanDelayOnValue=$fanDelayOnValue )"
270- } else { // fan and pump already running
271- }
272-
273- break // exit switch statement
274- case { it >= LowDiff }:
275- // turn on fan low speed
276- if (fanMotor. currentSwitch == " off" ) { // if fan is OFF turn everything on
277- fanSpeed. off() // set fan Lo speed
278- fanPump. on() // set water pump on
279- fanMotor. on([delay : (fanDelayOnValue* 60 * 1000 )]) // delay starting fan to allow pump to wet pads
280-
281- log. debug " Fan Lo speed in fanDelayOn min (CT=$currentTemp , SP=$desiredTemp , LowDiff=$LowDiff )"
282- }
283- else {
284- fanSpeed. off() // fan is already running, set Low speed immediately
285- }
286- log. debug " LO speed skip pump (CT=$currentTemp , SP=$desiredTemp , LowDiff=$LowDiff )"
287- break
288- default :
289- // check to see if fan should be turned off
290- if (desiredTemp - currentTemp >= 0 ) { // below or equal to setpoint, turn off fan,
291- shutdownEvap()
292- log. debug " below SP+Diff=fan OFF (CT=$currentTemp , SP=$desiredTemp , FD=$fanMotor . currentSwitch , autoMode=$autoMode ,)"
293- }
294- log. debug " autoMode YES-MANUAL? else OFF(CT=$currentTemp , SP=$desiredTemp , FD=$fanMotor . currentSwitch , autoMode=$autoMode ,)"
295- }
296- }
266+ if (autoModeValue == " YES-Auto" ) {
267+ switch (currentTemp - desiredTemp) {
268+ case { it >= HighDiff }:
269+ // turn on fan high speed
270+ fanSpeed. on() // set fan Hi speed
271+ if (fanMotor. currentSwitch == " off" ) { // if fan is OFF turn everything on
272+ fanPump. on() // set water pump on
273+ fanMotor. on([delay : (fanDelayOnValue* 60 * 1000 )]) // delay starting fan to allow pump to wet pads
274+ log. debug " HI speed(CT=$currentTemp , SP=$desiredTemp , HighDiff=$HighDiff , fanDelayOnValue=$fanDelayOnValue )"
275+ } else { // fan and pump already running
276+ }
277+ break // exit switch statement
278+ case { it >= LowDiff }:
279+ // turn on fan low speed
280+ if (fanMotor. currentSwitch == " off" ) { // if fan is OFF turn everything on
281+ fanSpeed. off() // set fan Lo speed
282+ fanPump. on() // set water pump on
283+ fanMotor. on([delay : (fanDelayOnValue* 60 * 1000 )]) // delay starting fan to allow pump to wet pads
284+ log. debug " Fan Lo speed in fanDelayOn min (CT=$currentTemp , SP=$desiredTemp , LowDiff=$LowDiff )"
285+ } else {
286+ fanSpeed. off() // fan is already running, set Low speed immediately
287+ }
288+ log. debug " LO speed skip pump (CT=$currentTemp , SP=$desiredTemp , LowDiff=$LowDiff )"
289+ break
290+ default :
291+ // check to see if fan should be turned off
292+ if (desiredTemp - currentTemp >= 0 ) { // below or equal to setpoint, turn off fan,
293+ shutdownEvap()
294+ log. debug " below SP+Diff=fan OFF (CT=$currentTemp , SP=$desiredTemp , FD=$fanMotor . currentSwitch , autoMode=$autoMode ,)"
295+ }
296+ log. debug " autoMode YES-MANUAL? else OFF(CT=$currentTemp , SP=$desiredTemp , FD=$fanMotor . currentSwitch , autoMode=$autoMode ,)"
297+ }
298+ }
297299
298- }
299- else { // if current ST mode does NOT match one of the user selected modes.
300+ } else { // if current ST mode does NOT match one of the user selected modes.
300301 shutdownEvap()
301302 }
302303}
@@ -316,8 +317,7 @@ private hasBeenRecentMotion() {
316317 isActive = true
317318 }
318319 }
319- }
320- else {
320+ } else {
321321 isActive = true
322322 }
323323 isActive
@@ -337,6 +337,6 @@ private def textHelp() {
337337 " to control hi-lo speed via Omoron LY1F SPDT 15amp relay. For only pump control any single switch could" +
338338 " work like the Enerwave ZWN-RSM1S or Monoprice #11989 Z-Wave In-Wall On/Off module. \n\n " +
339339
340- " To uninstall the smartapp simply click REMOVE below"
340+ " To uninstall the smartapp simply tap REMOVE below"
341341
342342}
0 commit comments