I do this in my unofficial Samsung Audio integration using HubAction. It comes across the LAN as a HTTP (vice HTTPS). See thread: {BETA} Samsung Audio including TTS with Voices
The command path is:
smartPhone -> SmartThings ‘Device’ -> SmartThings Hub -> device
Response path is: device -> SmartThings Hub -> SmartThings ‘Device’ ‘action’ parse method.
The Setup:
def on() {
SetPowerStatus("1")
sendEvent(name: "switch", value: "on")
play()
updateDisplay()
}
The device-code (already in url format).
def SetPowerStatus(powerStatus, action = "generalResponse") {
sendCmd("/UIC?cmd=%3Cname%3ESetPowerStatus%3C/name%3E" +
"%3Cp%20type=%22dec%22%20name=%22powerstatus%22%20val=%22${powerStatus}%22/%3E",
action)
}
The hub-action command
private sendCmd(command, action){
def deviceIP = getDataValue("deviceIP")
def cmdStr = new physicalgraph.device.HubAction([
method: "GET",
path: command,
headers: [
HOST: "${deviceIP}:55001"
]],
null,
[callback: action]
)
sendHubCommand(cmdStr)
}
Dave