Created
November 5, 2019 03:48
-
-
Save cramforce/5b90fd80e4336225a7e28db22c867d9a to your computer and use it in GitHub Desktop.
Revisions
-
cramforce created this gist
Nov 5, 2019 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,69 @@ definition( name: "Outdoor Thermostat", namespace: "cramforce", author: "Malte", description: "Simple SmartThings Thermostat", category: "Convenience", iconUrl: "https://s3.images-iherb.com/sns/sns01567/u/3.jpg", iconX2Url: "https://s3.images-iherb.com/sns/sns01567/u/3.jpg" ) preferences { section("Heater") { input "heater", "capability.switch", title: "Heater", required: true } section("Thermometer") { input "temperature", "capability.temperatureMeasurement", title: "Thermometer", required: true input "temperatureConfigure", "capability.configuration", title: "Thermometer for configuration", required: true } section("Controller") { input "controller", "capability.switch", title: "Controlling switch", required: true } section("Temperature") { input "targetTemp", "number", title: "Target Temperature", defaultValue: 80, required: true } } def installed() { subscribe(temperature, "temperature", tempChanged) subscribe(controller, "switch", tempChanged) runEvery1Minute(minute) } def updated() { unsubscribe() unschedule() installed() tempChanged() minute() } def minute() { if (controller.currentValue("switch") != "on") { return; } // This triggers a new measurement because otherwise we only get a valu every 8 minutes log.debug "Configure thermostat" temperatureConfigure.configure(); } def tempChanged(evt) { if (controller.currentValue("switch") != "on") { log.debug "Controller switch off" if (heater.currentValue("switch") == "on") { heater.off(); } return; } def temp = temperature.currentValue("temperature"); log.debug "Temp changed: $temp" if (temp < targetTemp) { log.debug "Turning on heater: $temp < $targetTemp" sendNotificationEvent("$app.label: Turning on heater: $temp < $targetTemp"); heater.on(); } else { log.debug "Turning off heater: $temp >= $targetTemp" sendNotificationEvent("$app.label: Turning off heater: $temp >= $targetTemp"); heater.off(); } }