Vid: What's available and what does it do?

I’ll be honest - I’m not 100% on exactly what the “vid” tag in the metadata does. But I know ya gotta have’em for the new app. I saw a list of “known vid” in another thread, but it was quite old. So I went through the entire public github and compiled the list below after adding it to the other list. The interesting thing about this list is I made up “generic-2-button” on a whim. I ended up with a device with 2 buttons.

Does anyone know of an authoritative source for these? Or more that I missed? Or distinctions between them (the numbered ones in particular)?

SmartThings-smartthings-Aeon_Home_Energy_Meter
SmartThings-smartthings-Eaton_5-Scene_Keypad
SmartThings-smartthings-LAN_Wemo_Motion
SmartThings-smartthings-Orvibo_Gas_Sensor
SmartThings-smartthings-SmartSense_Button
SmartThings-smartthings-Z-Wave_Metering_Switch
SmartThings-smartthings-Z-Wave_Range_Extender
SmartThings-smartthings-Z-Wave_Siren
SmartThings-smartthings-Z-Wave_Thermostat
generic-2-button
generic-4-button
generic-arrival
generic-button
generic-button-2
generic-button-4
generic-carbon-monoxide
generic-carbon-monoxide-3
generic-contact (contact, battery)
generic-contact-2
generic-contact-3
generic-dimmer
generic-dimmer-power
generic-dimmer-power-energy
generic-doorbell
generic-humidity
generic-humidity-3
generic-leak
generic-leak-4
generic-lock
generic-lock-2
generic-motion (motion, temp, battery)
generic-motion-2
generic-motion-3 (Motion, Acceleration, Battery)
generic-motion-4 (motion, Temp, Illuminance, battery)
generic-motion-5 (motion, temp, illuminance, tamper, battery)
generic-motion-6 (motion, temp, humidity, illuminance, battery)
generic-motion-7 (motion, temp, humidity, illuminance, tamper, battery)
generic-motion-8
generic-motion-9
generic-motion-light
generic-pestcontrol-1
generic-rgb-color-bulb (edited)
generic-rgbw-color-bulb
generic-shade
generic-shade-2
generic-siren
generic-siren-11
generic-siren-8
generic-smoke
generic-smoke-co
generic-stateless-curtain
generic-switch
generic-switch-power
generic-switch-power-energy
generic-temperature-measurement
generic-thermostat-1
generic-trisensor-1
generic-valve

3 Likes

Tagging @jody.albritton

1 Like

We are all waiting for the documentation of all the men and vid, and all the custom capabilities and device profiles for months.

It will come sooner or later. Before the old app will be phased out. But…

Have a read and you will understand more, what is missing and what you are waiting for.

1 Like

We have a tool that displays what all of these are and what capabilties they support. Should be released in the next week or so. All the vid does is map to an existing set of metadata that allows display in the new app. Porting the VID from an existing device will allow you to take any device with a standard set of compatible capabilties and get it up and running in the new UI. Further out we are going to release a tool that will allow you to generate your own custom capabilties and describe how they will be displayed in the new UI. Custom capability generation should come around March-April time frame to some device developers in the community. That said, none of these options are going to allow an approximation of the old ui where you could render any sort of html display. For really custom UI we are developing something else and that is too far out to talk about at this point.

All that said. Tools are coming.

9 Likes

Thanks for the info. Must admit I’m disappointed we’re still at this stage with the “big switch” so close at hand.

The control of these seems all over the place. Playing around with some of the existing handlers out there (by creating virtual devices), I see buttons that come up with all kinds of available states by default but then don’t reflect ones that they are programmed for. Just seems like we are a LONG way away from being able to use this stuff still.

The big switch is not going to happen until we are ready and we aren’t there yet so please keep the feedback coming.

Understandably it’s hard not to have rose colored glasses for the the old groovy way of doing things. For me it was a game changer being able to hack around and automate my home for very little startup costs back in 2012-2013. As the platform expanded though the gaps became obvious and the gaps we had for developers and hardware couldn’t just be bolted on to the old groovy way of doing things at our scale. I am one of the “heavy hobbyist users” and I advocate for things to not only match what we already have/had, but to be better than we imagined back in the day. I have plenty of history asking for more advanced tools both before and after I started at ST so I know the pain of having to wait for things to materialize personally. I don’t have any grand promises or empty excuses, only the notion that I am more excited today than I was 7 years ago about what people are going to be able to do with home automation.

5 Likes

I really liked both your replies @jody.albritton, thank you. I believe that “7 years ago” profile picture is somewhere in the current community’s homepage picture:

image

2 Likes

Haha. Yeah me like 50 lbs ago. My picture is the top left corner, one down from the top.

2 Likes

So I learned something today…not sure if this is new to anyone else, but I was experimenting a bit. I found that, while it’s difficult to find and use the right vid for devices that have the right capabilities, you can remove “tiles” in the new app. For example, generic-contact-2 has a contact, temperature, and battery. But if the battery capability isn’t listed in the handler, it won’t show up on the new app. This was good because I just wanted temperature and contact.

2 Likes

Are there any news about the “tools that are coming”? I’m eagerly waiting for more documentation and tools regarding vids. In particular, I need to know how the vid affects not only the display but also the function of a device handlers.

@frayer, this is what you need.

Custom Capability and CLI Developer Preview

1 Like

Is there any update on list of available VIDs?

It is waste to create custom VIDs, just because we don’t have information about generic VIDs.

The ‘vid-selector’ only contains a few VIDs out of all available VIDs.

1 Like

In addition to the ones listed in the start of the thread, these are the ones mentioned in examples in the glitch.me list:

SmartThings-smartthings-Aeon_Key_Fob
SmartThings-smartthings-Aeon_Led_Bulb
SmartThings-smartthings-Aeon_Minimote
SmartThings-smartthings-Aeon_Multisensor_6
SmartThings-smartthings-Aeon_Multisensor_Gen5
SmartThings-smartthings-Aeon_Outlet
SmartThings-smartthings-Aeon_Siren
SmartThings-smartthings-Arlo_Camera
SmartThings-smartthings-Arrival_Sensor
SmartThings-smartthings-Arrival_Sensor_HA
SmartThings-smartthings-Bose_SoundTouch
SmartThings-smartthings-Cree_Bulb
SmartThings-smartthings-EcoNet_Vent
SmartThings-smartthings-Everspring_Flood_Sensor
SmartThings-smartthings-Fibaro_Flood_Sensor
SmartThings-smartthings-Fibaro_Flood_Sensor_ZW5
SmartThings-smartthings-Fibaro_Motion_Sensor
SmartThings-smartthings-Fibaro_Motion_Sensor_ZW5
SmartThings-smartthings-Fortrezz_Water_Valve
SmartThings-smartthings-GE_ZigBee_Dimmer
SmartThings-smartthings-Halo
SmartThings-smartthings-HaloPlus
SmartThings-smartthings-Hue_Bloom
SmartThings-smartthings-Hue_Bulb
SmartThings-smartthings-Hue_Lux_Bulb
SmartThings-smartthings-Hue_White_Ambiance_Bulb
SmartThings-smartthings-Keen_Home_Smart_Vent
SmartThings-smartthings-LAN_Bose_SoundTouch
SmartThings-smartthings-LAN_SamsungAudio
SmartThings-smartthings-LAN_Wemo_Switch
SmartThings-smartthings-LIFX_Color_Bulb
SmartThings-smartthings-LIFX_White_Bulb
SmartThings-smartthings-Leviton_Decora_Wifi_Dimmer
SmartThings-smartthings-Leviton_Decora_Wifi_Switch
SmartThings-smartthings-Lutron_Caseta_Shade
SmartThings-smartthings-Ring_Doorbell
SmartThings-smartthings-Ring_Doorbell_Pro
SmartThings-smartthings-Samsung_SmartCam
SmartThings-smartthings-SkyBell_HD_Doorbell
SmartThings-smartthings-SmartAlert_Siren
SmartThings-smartthings-SmartPower_Outlet
SmartThings-smartthings-SmartSense_Moisture_Sensor
SmartThings-smartthings-SmartSense_Motion_Sensor
SmartThings-smartthings-SmartSense_Multi_Sensor
SmartThings-smartthings-Spruce_Controller
SmartThings-smartthings-Z-Wave_Basic_Smoke_Alarm
SmartThings-smartthings-Z-Wave_Dimmer_Switch_Generic
SmartThings-smartthings-Z-Wave_Garage_Door_Opener
SmartThings-smartthings-Z-Wave_Lock
SmartThings-smartthings-Z-Wave_Metering_Dimmer
SmartThings-smartthings-Z-Wave_Metering_Switch
SmartThings-smartthings-Z-Wave_Motion_Sensor
SmartThings-smartthings-Z-Wave_Smoke_Alarm
SmartThings-smartthings-Z-Wave_Water_Sensor
SmartThings-smartthings-Z-Wave_Water_Valve
SmartThings-smartthings-Z-wave_Dimmer_Switch
SmartThings-smartthings-Z-wave_Switch
SmartThings-smartthings-Z-wave_Switch_Generic
SmartThings-smartthings-ZLL_White_Color_Temperature_Bulb_5000K
SmartThings-smartthings-ZigBee_Dimmer
SmartThings-smartthings-ZigBee_Dimmer_Power
SmartThings-smartthings-ZigBee_Lock
SmartThings-smartthings-ZigBee_RGBW_Bulb
SmartThings-smartthings-ZigBee_RGB_Bulb
SmartThings-smartthings-ZigBee_Switch_Power
SmartThings-smartthings-ZigBee_Valve
SmartThings-smartthings-ZigBee_White_Color_Temperature_Bulb
SmartThings-smartthings-iHomeSmartPlug-iSP5
SmartThings-smartthings-iHomeSmartPlug-iSP6
SmartThings-smartthings-iHomeSmartPlug-iSP8

I’m not sure where glitch.me is getting their list, so I don’t know if/how that stays current. My intention is to see if I can create virtual devices with each of these VIDs and then get a screen capture of how they appear so that we might have a catalog of all of the different representations available.

OK, but would it not also be useful to see the device config that matches each VID. For example the device config for SmartThings-smartthings-Spruce_Controller is:

{
  "dashboard": {
    "states": [
      {
        "component": "main",
        "capability": "switch",
        "version": 1,
        "values": [],
        "patch": []
      }
    ],
    "actions": [
      {
        "component": "main",
        "capability": "switch",
        "version": 1,
        "values": [],
        "patch": [
          {
            "op": "replace",
            "path": "/0",
            "value": {
              "displayType": "toggleSwitch",
              "toggleSwitch": {
                "command": {
                  "on": "on",
                  "off": "off"
                },
                "state": {
                  "value": "switch.value",
                  "on": "on",
                  "off": "off"
                }
              }
            }
          }
        ]
      }
    ]
  },
  "detailView": [
    {
      "component": "main",
      "capability": "switch",
      "version": 1,
      "values": [],
      "patch": []
    },
    {
      "component": "main",
      "capability": "valve",
      "version": 1,
      "values": [],
      "patch": []
    }
  ],
  "automation": {
    "conditions": [
      {
        "component": "main",
        "capability": "switch",
        "version": 1,
        "values": [],
        "patch": []
      },
      {
        "component": "main",
        "capability": "valve",
        "version": 1,
        "values": [],
        "patch": []
      }
    ],
    "actions": [
      {
        "component": "main",
        "capability": "switch",
        "version": 1,
        "values": [],
        "patch": []
      },
      {
        "component": "main",
        "capability": "valve",
        "version": 1,
        "values": [],
        "patch": []
      }
    ]
  },
  "type": "profile",
  "presentationId": "SmartThings-smartthings-Spruce_Controller",
  "manufacturerName": "SmartThings",
  "vid": "SmartThings-smartthings-Spruce_Controller",
  "mnmn": "SmartThings",
  "version": "0.0.1"
}

In case anyone is wondering, using curl in a Windows CMD shell you can do, for example:

curl --header "Authorization: Bearer <Personal Access Token>" https://api.smartthings.com/presentation/deviceconfig?"manufacturerName=SmartThings&presentationId=SmartThings-smartthings-Spruce_Controller"

Already doing that, too. For example, here are the “rt”, “href”, and “if” values for all of the glitch.me examples:

oic.r.colour.chroma - /capability/colorControl/0 - oic.if.a
oic.r.energy.battery - /capability/battery/0 - oic.if.baseline
oic.r.energy.consumption - /capability/energyMeter/0 - oic.if.s
oic.r.energy.consumption - /capability/powerMeter/0 - oic.if.s
oic.r.humidity - /capability/relativeHumidityMeasurement/0 - oic.if.s
oic.r.light.dimming - /capability/switchLevel/0 - oic.if.a
oic.r.lock.status - /capability/lock/0 - oic.if.a
oic.r.movement.linear - /capability/accelerationSensor/0 - oic.if.s
oic.r.sensor.contact - /capability/contactSensor/0 - oic.if.s
oic.r.sensor.illuminance - /capability/illuminanceMeasurement/0 - oic.if.s
oic.r.sensor.motion - /capability/motionSensor/0 - oic.if.s
oic.r.sensor.presence - /capability/presenceSensor/0 - oic.if.s
oic.r.sensor.radiation.uv - /capability/ultravioletIndex/0 - oic.if.baseline
oic.r.sensor.threeaxis - /capability/threeAxis/0 - oic.if.s
oic.r.sensor.water - /capability/waterSensor/0 - oic.if.s
oic.r.signalstrength - /capability/signalStrength/0 - oic.if.s
oic.r.switch.binary - /capability/switch/0 - oic.if.a
oic.r.temperature - /capability/temperatureMeasurement/0 - oic.if.s
x.com.st.alarm - /capability/alarm/0 - oic.if.a
x.com.st.audioNotification - /capability/audioNotification/0 - oic.if.r
x.com.st.button - /capability/button/0 - x.com.st.if.temporary
x.com.st.button - /capability/button/button1/0 - x.com.st.if.temporary
x.com.st.button - /capability/button/button2/0 - x.com.st.if.temporary
x.com.st.button - /capability/button/button3/0 - x.com.st.if.temporary
x.com.st.button - /capability/button/button4/0 - x.com.st.if.temporary
x.com.st.carbonmonoxidedetector - /capability/carbonMonoxideDetector/0 - oic.if.r
x.com.st.color.temperature - /capability/colorTemperature/0 - oic.if.a
x.com.st.doorcontrol - /capability/doorControl/0 - oic.if.a
x.com.st.mediaPreset - /capability/mediaPresets/0 - oic.if.a
x.com.st.musicplayer - /capability/musicPlayer/0 - oic.if.a
x.com.st.powersource - /capability/powerSource/0 - oic.if.baseline
x.com.st.smokedetector - /capability/smokeDetector/0 - oic.if.baseline
x.com.st.tamperalert - /capability/tamperAlert/0 - oic.if.baseline
x.com.st.tone - /capability/tone/0 - x.com.st.if.temporary
x.com.st.valve - /capability/valve/0 - oic.if.baseline
x.com.st.videostream - /capability/videoStream/0 - oic.if.a
x.com.st.videostream - /capability/videoStream/0 - oic.if.baseline
x.com.st.windowShadePreset - /capability/windowShadePreset/0 - x.com.st.if.command
x.com.st.windowshade - /capability/windowShade/0 - oic.if.baseline

My ultimate goal is to generate a catalog of “If you’re making (such-and-such) kind of thing, then these are the icons/VIDS/etc that you’ll typically select from, here’s what they each look like, and here are the ones which typically are used together”.

Would it have a future though? When using newer integrations the presentations are being built automatically for you from your device profiles. Only for legacy device handlers are presentations (VIDs) being specified manually and their days are numbered. If you have a custom device handler built entirely from stock capabilities you may find a stock presentation that matches up with your handler exactly as you want, in which case that might be useful though there is always the concern that it might get updated in a way you wouldn’t want.

To me it just seems a lot easier to take a minute or two to create the device config you want and then create the presentation from it. If you are using custom capabilities or components it will be necessary anyway.

But I’m not even at that stage, yet. I just got to the point where I can write a working old-style DTH, but, since Tiles are gone, I want to see what my options are for different UI appearances. Once I’ve got that working well enough to “release” into my home, and I make some YouTube videos delving into everything I’ve learned, then I can embark on the process of trying to figure out Smartthings’ new way.

So, as far as it having a future… it buys me about a year to figure out the new system.

What I am really trying to say is that the SmartThings VIDs are likely to prove of very little use to you. The VID Selector was a moderately useful stop gap for those whose handlers had similar functionality to stock handlers as developers were begging for info on how to make handlers behave better in the new app and ST weren’t ready to release it as there were new things still being developed. So they knocked up a tool to show what VIDs the stock handlers were using.

The developer release of the CLI and custom capabilities changed things as it also introduced capability presentations, the SmartThingsCommunity manufacturer name, device config files and device presentations.

A VID, which is now also known as the Presentation ID, is simply an ID. I would recommend you don’t worry too much about the device presentation (also encountered as the UI Manifest or Presentation Resource) associated with that ID. The user configurable bits are in the device config file. That is where you define your UI.

If you do want to use SmartThings stock VIDs that’s fine, but I suggest extracting the device config files, not working with the presentation files, if you want to know what they are doing.

That’s actually what I’m doing. I’ve got a device that controls a bunch of relays, and I want to be able to control how it looks in the mobile app. Originally, before I put the “mnmn”, “vid”, and “ocfDeviceType” keys in the definition, it was just showing up as a 3-prong AC outlet, and I was able to get it to look like an up/down switch, but now I’m curious about what other built-in presentations I could access (and also because I’m indignant about Smartthings trying to limit what devs know about how the system works, so I kinda go all Ed Snowden and drag all the hard-to-discover info into the sunlight).