[RELEASE] Simple Device Info Viewer

With the IDE going away, I thought I would write a simple device viewer as a front end for the smartthings API to see information that is not visible in the app. One of my drivers requires the user to be able to get the zigbee network id of a device, this also provides a way to do that.

The App is just HTML & Javascript (I’m not a webdev so please be kind) - there is no server component other than the smartthings server - so if you like you can just save it as a webpage down to your machine, or you can run it in-place on github pages.

How to use

  1. Go to SmartThings. Add a little smartness to your things. and create a new PAT (personal access token), you will need to give it at least devices and locations permissions - you need to keep this secure and save it for re-use - this is affectively your username and password for the API
  2. Go to ST Device Info Viewer, enter your token and click submit - now explore your devices

Your PAT is never sent anywhere other than https://api.smartthings.com/v1/ all of the code used for this is available in github here lrmulli.github.io/st at main · lrmulli/lrmulli.github.io · GitHub

Louis

20 Likes

This is awesome! :sunglasses:

for getting network device information without having to check one device at a time, very nice.

@Automated_House @Mariano_Colmenarejo @krlaframboise @TAustin @philh30 @nayelyz @nathancu @ygerlovin @orangebucket @martin.borg

(I have tagged this as “miscellaneous” for the quick browse lists even though it’s not an Edge Driver, because that’s where I think most people would be looking for this functionality.)

Note: I originally didn’t see my Linked Services devices, but after including Device Profiles in the scopes, they showed up.

4 Likes

There should be no reason why it wouldn’t show linked services - I can see my Yeelight bulb (which is a linked service, can also see my hub itself, my mobile phone, my smart meter - none of them are hub devices). Not sure why you can’t see your meross devices. All the page does is call the devices endpoint of the API

@JDRoberts

I have probably messed something up in the code then - I’ve only been able to test with my own setup obviously

When the page is loaded

If you are on a PC and open up dev tools, F12 in the browser

Go to console and type console.log(devices)

it should list out the devices it has received from the API,

if you go to the network tab and resubmit the pat token while open, you should see the api calls, and be able to see if there is an error

Very nice.

1 Like

Sorry, I don’t have a pc, only a tablet.

But the good news is when I generated a new token with scope of devices, locations, and device profiles, everything shows up! :tada:

They have the type of VIPER.

1 Like

Ah that makes sense - you probably didn’t have the devices scope on your original PAT

That is why I was asking you to go into developer tools, as we would have seen that as a permissions error on the API call

1 Like

I don’t really know what VIPER means, I have it on my linked service devices too

1 Like

VIPER is the device type for the C2C Schema. There are some weird and wonderful device types like PENGYOU. The big surprise to me is that no one is jumping up and down at EDGE_CHILD …

2 Likes

In case anyone is wondering, the public API admits to the existence of these device types:

  • BLE
  • BLE_D2D
  • DTH
  • EDGE_CHILD
  • ENDPOINT_APP
  • GROUP
  • HUB
  • IR
  • IR_OCF
  • LAN
  • MATTER
  • MOBILE
  • MQTT
  • OCF
  • PENGYOU
  • SHP
  • VIDEO
  • VIPER
  • VIRTUAL
  • WATCH
  • ZIGBEE
  • ZWAVE
2 Likes

Works perfectly! Thanks!

1 Like

Nifty! Is anybody else with multiple locations seeing their devices duplicated by the number of locations? (I currently have two location and am seeing two entries for the same device)

Yes, they show up twice for me too

This is a very handy tool (I’m sure the ST devs have something like this and it’s too bad they haven’t opened it up to users). Well done!

I’m definitely going to want to keep referring back to this as migration moves forward. Is there a way to pass the token as an argument, so I can bookmark the address and view it from multiple devices, or otherwise maintain access without generating new tokens? Or would it be easiest to copy the page to my own github and hard code the token in? I’m looking for a way around having to save the string somewhere and enter it repeatedly.

I can’t see what is going wrong there, but I am wondering how anyone with more than 100 devices is getting on as I don’t see where the API paging is being handled.

2 Likes

@orangebucket
API Paging isn’t yet handled - I’ll add it to the todo list

3 Likes

@MarkTr You can add ?pat=MyPat to the end of the URL - just be aware that your pat will be in any screenshots you might share to the community

Other option is to save it as a password in your browser, that way it will auto-populate (thats what im doing)

2 Likes

That was my fault, I was calling getDevices() at the end of processing the rooms - meaning if you had 2 locations it called it twice.

I’ve just published a hacky fix for that, but worried it might mean devices try to load before rooms have finished loading - hopefully that won’t happen.

If you could test again and let me know please @Automated_House @Jepajo

3 Likes

I don’t know what the hacky fix is, but you should be able to filter the device listing using the locationId in the query string.

I’m only calling the /devices endpoint once for all devices - i will look at changing it though to do it location specific as it seems a better idea

1 Like