/**
 *  Weather Station Controller
 *
 *  Copyright 2014 SmartThings
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 */

definition(
    name: "SmartWeather Station Controller",
    namespace: "smartthings",
    author: "SmartThings",
    description: "Updates SmartWeather Station Tile devices every hour.",
    category: "Convenience",
    iconUrl: "https://s3.amazonaws.com/smartapp-icons/SafetyAndSecurity/App-MindYourHome.png",
    iconX2Url: "https://s3.amazonaws.com/smartapp-icons/SafetyAndSecurity/App-MindYourHome@2x.png"
)

preferences {
	section {
		input "weatherDevices", "device.smartweatherStationTile"
	}
}

def installed() {
	log.debug "Installed with settings: ${settings}"

	initialize()
}

def updated() {
	log.debug "Updated with settings: ${settings}"

	unschedule()
	initialize()
}

def initialize() {
    scheduledEvent()
}

def scheduledEvent() {
	log.info "SmartWeather Station Controller / scheduledEvent terminated due to deprecation" // device handles this itself now -- Bob
/*
	log.trace "scheduledEvent()"

	def delayTimeSecs = 60 * 60 // reschedule every 60 minutes
	def runAgainWindowMS = 58 * 60 * 1000 // can run at most every 58 minutes
	def timeSinceLastRunMS = state.lastRunTime ? now() - state.lastRunTime : null //how long since it last ran?

	if(!timeSinceLastRunMS || timeSinceLastRunMS > runAgainWindowMS){
		runIn(delayTimeSecs, scheduledEvent, [overwrite: false])
		state.lastRunTime = now()
		weatherDevices.refresh()
	} else {
		log.trace "Trying to run smartweather-station-controller too soon. Has only been ${timeSinceLastRunMS} ms but needs to be at least ${runAgainWindowMS} ms"
	}
    */
}