Paso 3: El más difícil parte... el código de
Trate de analizar y entender lo que cada línea está haciendo, que es cómo pueden aprender mejor.
#include // include IoTkit.h to use the Intel IoT Kit#include // must be included to use IoTkit #include #include // create an object of the IoTkit class IoTkit iotkit; const int relayPin = 2; void setup() { Serial.begin(115200); // call begin on the IoTkit object before calling any other methods iotkit.begin(); delay(10500); pinMode(relayPin, OUTPUT); } void loop() { iotkit.receive(callback); delay(5000); } void callback(char* json) { Serial.println(json); aJsonObject* parsed = aJson.parse(json); if (&parsed == NULL) { // invalid or empty JSON // Serial.println("recieved invalid JSON"); // for troubleshooting return; //parsing JSON } aJsonObject* component = aJson.getObjectItem(parsed, "component"); aJsonObject* command = aJson.getObjectItem(parsed, "command"); aJsonObject* argv = aJson.getObjectItem(parsed, "argv"); aJsonObject* argvArray = argv->child; aJsonObject* name = argvArray->child; // name : on aJsonObject* value = name->next; // value: 1/0 if ((component != NULL)) { if (strcmp(component->valuestring, "power") == 0) { if ((command != NULL)) { if (strcmp(command->valuestring, "LED.v1.0") == 0 && strcmp(value->valuestring, "0") == 0) { Serial.println("Light Off!"); digitalWrite(relayPin, false); } if (strcmp(command->valuestring, "LED.v1.0") == 0 && strcmp(value->valuestring, "1") == 0) { Serial.println("Light on!"); digitalWrite(relayPin, true); } } } } }