I am having trouble analysing the data returned from an event raised by another particle. I have Particle.subscribe(“Door”, DoorHandler, MY_DEVICES); and void DoorHandler(const char *event, const char *data). The other particle publishes a Door event, which is either “Open” or “Closed”. All works well and I can print the data to the serial screen. However, I am having some trouble referencing the data, I think it is a different data type to string. For example, I cannot use if (data == “Open”), and I have also tried if data.compareTo(“Open”) and neither works. Could someone please point me in the right direction?
data is a const char *
not a String
so you need to use C-style comparisons. For example:
if (strcmp(data, "Door") == 0)
Note that strcmp returns 0 if equal, so it’s kind of backwards (it returns -1 if less than or +1 if greater than). And it’s case-sensitive.
3 Likes
Thanks that worked!
1 Like