/**
 *  Copyright 2017 KongQun Yang
 *
 *  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.
 *
 */

metadata {
  definition (name: "Virtual Device", namespace: "xyy", author: "KongQun Yang") {
    capability "Actuator"
    capability "Switch"
    capability "Lock"
  }

  simulator {
  }

  tiles {
    standardTile("button", "device.switch", width: 2, height: 2,
                 canChangeIcon: true) {
      state("off", label: 'Off', action: "switch.on",
            icon: "st.switches.switch.off", backgroundColor: "#ffffff",
            nextState: "on")
      state("on", label: 'On', action: "switch.off",
            icon: "st.switches.switch.on", backgroundColor: "#79b821",
            nextState: "off")
    }

    main "button"
    details "button"
  }
}

def parse(String description) {
}

def on() {
  sendEvent(name: "switch", value: "on")
  if (parent.switches != null) parent.switches.on()
}

def off() {
  sendEvent(name: "switch", value: "off")
  if (parent.switches != null) parent.switches.off()
}

def lock() {
  if (parent.locks != null) parent.locks.lock()
}

def unlock() {
  if (parent.locks != null) parent.locks.unlock()
}
