Keep getting `Error 422` upon setting switch state
Ostromogilski opened this issue · 3 comments
Describe the bug
For some unknown for me reason, I'm keeping to receive Error 422
sending POST request to SmartThings API to start my vacuum cleaner. I tried the same request in Postman and it works as expected. But once I put the request into plugin config I get Error occurred setting state of switch: HTTP request returned with error code 422
upon triggering the switch
Version (output of npm list -g homebridge homebridge-http-switch
)
- homebridge:
1.6.0
- homebridge-http-switch:
0.5.36
Configuration
{
"accessories": [
{
"accessory": "HTTP-SWITCH",
"name": "Samsung Powerbot",
"switchType": "stateful",
"onUrl": {
"url": "https://api.smartthings.com/v1/devices/4076b244-****-****-****-3315d7085113/commands",
"method": "POST",
"body": {
"commands": [
{
"component": "main",
"capability": "robotCleanerCleaningMode",
"command": "setRobotCleanerCleaningMode",
"arguments": [
"cleaning"
]
}
]
},
"headers": {
"Authorization": "Bearer 22afc817-****-****-****-5fda2d54af7c",
"Content-Type": "application/json"
}
},
"offUrl": {
"url": "https://api.smartthings.com/v1/devices/4076b244-****-****-****-3315d7085113/commands",
"method": "POST",
"body": {
"commands": [
{
"component": "main",
"capability": "robotCleanerCleaningMode",
"command": "setRobotCleanerCleaningMode",
"arguments": [
"homing"
]
}
]
},
"headers": {
"Authorization": "Bearer 22afc817-****-****-****-5fda2d54af7cc",
"Content-Type": "application/json"
}
},
"pullInterval": 5000,
"statusUrl": {
"url": "https://api.smartthings.com/v1/devices/4076b244-****-****-****-3315d7085113/components/main/capabilities/samsungce.robotCleanerOperatingState/status",
"method": "GET",
"headers": {
"Authorization": "Bearer 22afc817-****-****-****-5fda2d54af7c",
"Content-Type": "application/json"
},
"statusPattern": "true"
}
}
],
"platforms": [
{
"platform": "homebridge-http-switch"
}
]
}
I would greatly appreciate any advise on this matter.
it seems that plugin is adding \
for every line break, that doesn't work with SmartThings API:
{\"commands\":[{\"component\":\"main\",\"capability\":\"robotCleanerCleaningMode\",\"command\":\"setRobotCleanerCleaningMode\",\"arguments\":[\"homing\"]}]}
Is it possible to avoid adding this behavior?
Working format should be like this:
{"commands":[{"component":"main","capability":"robotCleanerMovement","command":"setRobotCleanerMovement","arguments":["homing"]}]}
My working configuration for Samsung PowerBot :
{
"accessories": [
{
"accessory": "HTTP-SWITCH",
"name": "Samsung Powerbot",
"switchType": "stateful",
"debug": false,
"onUrl": {
"url": "https://api.smartthings.com/v1/devices/YOUR_DEVICE_ID/commands",
"method": "POST",
"body": {
"commands": [
{
"component": "main",
"capability": "robotCleanerMovement",
"command": "setRobotCleanerMovement",
"arguments": [
"cleaning"
]
}
]
},
"headers": {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
}
},
"offUrl": {
"url": "https://api.smartthings.com/v1/devices/YOUR_DEVICE_ID/commands",
"method": "POST",
"body": {
"commands": [
{
"component": "main",
"capability": "robotCleanerMovement",
"command": "setRobotCleanerMovement",
"arguments": [
"homing"
]
}
]
},
"headers": {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
}
},
"pullInterval": 5000,
"statusUrl": {
"url": "https://api.smartthings.com/v1/devices/YOUR_DEVICE_ID/components/main/capabilities/samsungce.robotCleanerOperatingState/status",
"method": "GET",
"headers": {
"Authorization": "Bearer YOUR_TOKEN",
"Content-Type": "application/json"
}
},
"statusPattern": ".*\"value\":\"cleaning\".*"
}
],
"platforms": [
{
"platform": "homebridge-http-switch"
}
]
}