How to create a Virtual Switch in SmartThings

This is a step by step guide on how to create a Virtual Switch on SmartThings. This could be useful to trigger certen apps with IFTTT or custom integration.

  • Log in to SmartThings IDE
  • Go to “My Device Type” and create a new device type by clicking on “+ New SmartDevice”
  • Write the name “Virtual Switch” and click Create
  • Paste this code

 *  Virtual Switch
 *  Copyright 2014 Juan Risso
 *  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:
 *  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 Switch", namespace: "juano2310", author: "Juan Risso") {
        capability "Switch"
        capability "Refresh"        

	// simulator metadata
	simulator {

	// UI tile definitions
	tiles {
		standardTile("button", "device.switch", width: 2, height: 2, canChangeIcon: false) {
			state "off", label: 'Off', action: "switch.on", icon: "st.Kids.kid10", backgroundColor: "#ffffff", nextState: "on"
			state "on", label: 'On', action: "", icon: "st.Kids.kid10", backgroundColor: "#79b821", nextState: "off"
		standardTile("refresh", "device.switch", inactiveLabel: false, decoration: "flat") {
			state "default", label:'', action:"refresh.refresh", icon:"st.secondary.refresh"
		main "button"
		details(["button", "refresh"])

def parse(String description) {

def on() {
	sendEvent(name: "switch", value: "on")

def off() {
	sendEvent(name: "switch", value: "off")

  • Go to “My Devices” and create a new device by clicking on “+ New Device”
  • Write the name “Virtual Switch”, Device Network “2323”, select “Virtual Switch” for Type and click Create
  • Now if you go to the app you should be able to see the newly created switch. You can use this to trigger songs or playlist on Sonos with IFTTT for example 🙂



13 thoughts on “How to create a Virtual Switch in SmartThings

  1. Manuel Plascencia

    I love this Virtual Switch. I am creating Virtual Switches that sends commands to Indigo via w/ HAM Bridge . So cool . Question is there a way to change the Buttons image. I created to Virtual Switches for Alarm and Irrigation , is there a way to customize the button?

    Thank you great work

      1. Manuel Plascencia

        If I did it that way, I would have to create multiple device types, right with different icons?A lot more icons available this way.

  2. Peabods

    Hello, I don’t know where to paste in the code? I create a custom device but i don’t get an option to paste anything, can someone tell me what i am doing wrong? thanks

      1. Peabods

        No i have not, I will do this now and see if i have some expanded options once i have access, thanks for the nudge!

        Edit* I didn’t realize that it is just a button click for developer access!

  3. Michele

    Hello, with this recipe I can trigger Tunein radio on Sonos with IFTTT???
    And, I don’t have a SmartThings product at my home, it will be run equally???

  4. Eryu

    This is really great Juano2310! I was able to have my living room lights come on when it’s rainy/cloudy and we are home. Very cool!

    I’m struggling with another layer of complexity. I presently have a door sensor which activates our hallway lights when it is open, but only in the evenings. I’d like it to also activate the light when the door is opened and it’s rainy/cloudy. Essentially, I need to have a SmartApp that checks if (A) the door is opened and (B) the “Rain” virtual switch you created (THANKS!) is on, before it turns on the lights. Any clever ideas on how to do this? I thought about modes, but I don’t want IFTTT changing my modes every time it rains.

  5. Pingback: Samsung SmartThings Hub Review -

Leave a Reply to Manuel Plascencia Cancel reply

Your email address will not be published. Required fields are marked *