A few questions

I have a bunch of SmartThings (a couple hubs, Arduino shields, various SmartThings sensors/devices) that I’m trying to work with. It’s been a bit frustrating thus far, and I have quite a few questions that might be simply a matter of finding the right documentation/references. Thanks in advance for help/guidance!

  1. In the SMART language, there is a log.debug function. it isn’t clear to me where that output goes or how to view it. I tried the “Logs” view at https://graph.api.smartthings.com/ide/logs but there’s nothing showing up in there

  2. Is there a comprehensive summary of the SMART language and syntax? I must admit that it has been a VERY painful process to try to get stuff working - a lot of trial and error, mostly error. Even with the demo apps, it isn’t intuitive how or why they are structured the way they are (particularly event handling)

  3. Is there a document/reference that describes the difference between a “device type handler” (and associated code) and a smart app? Are there differences in the language or supported functions?

  4. I know it has been mentioned in other forum posts, but I wanted to add my support to requests for ignoring SSL certificate chains (specifically for self-signed certs) and also for supporting custom HTTP headers in the various HTTP methods (note that this is very different than the HTTP “HEAD” method)

  5. Are there any examples of a custom device (custom attributes, commands, etc.)? We have a couple of the Arduino shields and would like to model some devices, but the documentation is a bit light on how to do so and how to actually implement those custom attributes and associate them with sensors/actuators/data

  6. How does one characterize attributes that are read only vs read/write?

  7. Can commands return data?

  8. There doesn’t seem to be any type of “guaranteed delivery” or error callback to know if a command was successfully received/processed by the device. Is there such a capability or plans to provide it?

  9. I’ve (somewhat) figured out the REST API, but mostly just to access metadata and entity definitions (hubs, devices, location etc.) and not how to interact with them (read the latest attribute data, send commands). Can’t find any docs other than some passing mentions in a couple forum posts, none of which seem to really explain how to make it work

  10. When a device has its device type changed or device handler updated, it doesn’t appear that the SmartThings mobile app (iOS) recognizes it unless you kill the app and restart it. Is that the expected behavior?

Thanks!

Rick

Can’t help on some of the more technical questions, but the log.debug is something that only shows up in the console when you are running the simulator. (or at least that’s how I view it–I haven’t seen them come up in the official “Logs” screen) You can install the app on the right side of where you write the code and watch the debugs in the console at the bottom of the screen to see what your app is doing. I use the debugs to help me figure out what it’s doing and for trial and error.

There is no official documentation right now. The forums are the best place for help. I’ve used the sample code that is provided to figure out how the event handlers work and such.

I am not a programmer, so I can’t address the more technical stuff you’re asking about.

-Paul

  1. log.debug will output to your log when you’re in the simulator. When you are using a published app with log.debug statements, the logs will show up in the Logs view, but only going forward from when you open that page.

  2. The best source of documentation is here: https://graph.api.smartthings.com/ide/documentation. It isn’t complete though. The forums are a good resource.

  3. A Device Type Handler tells SmartThings how to interact with actual devices. A SmartApp is what allows you to do the neat automation stuff. There are some differences between them, but I’m not sure what all they are as there isn’t really any documentation for device types yet.

  4. You can use custom headers.

def params = [
    uri: "your-url",
    headers: [ 'X-Auth': device.deviceNetworkId ]
]
httpGet(params)
  1. If you create a new device type, you can see sample code for a number of different device types that already exist. Device types are how you add new types of devices.

6-9) I don’t know

  1. I hope that plan to fix that. The Android app has a similar problem. In addition, SmartApps/Device Types don’t seem to automatically update.