Does your incoming data really look like this without the opening curly braces?
Also if you parser.addString()
you should make sure the original string is empty since when you already have a string stored that contains invalid data and add (aka append) to that you'll always ever see the old data and never parse the newly added.
See more elaborate discussion here
Try reading out the JSON buffer via Serial.println(parser.getBuffer());
BTW, you are violating the 1/sec rate limit for Particle.publish()
when the condition is satisfied.