1
votes

I'm trying to get a Skywire LTE Cat 1 modem (http://nimbelink.com/skywire-4g-lte-cat-1/) to update a thing shadow on AWS IoT. I have the device talking to AWS via HTTP, and am able to execute a GET command per their tutorial.

Now I am trying to execute a POST command to update my thing's shadow. However, whenever I try to send my POST command:

POST /things/AWS_Test_Thing/shadow HTTP/1.1
BODY: {"state":{"reported":{"Temp":55}}}

AWS sends me the following error:

HTTP/1.1 Bad Request
{"message":"Payload contains invalid json","traceId":"e53be1d6-7967f52c-4dd6-d7b95cc20628"}

I've never used JSON before, but from what I can gather,

{"state":{"reported":{"Temp":55}}} 

should be valid JSON and complies with AWS IoT documentation (http://docs.aws.amazon.com/iot/latest/developerguide/thing-shadow-document-syntax.html#thing-shadow-example-request-json). What am I missing?

2

2 Answers

0
votes

If you are updating the shadow via a POST request, you should have a "desired" statement instead of "reported".

0
votes

Make sure you have the Content-Length header included as part of the request and signing procedure. The Content-Length must reflect the size of the JSON payload you are sending.