Vous êtes sur la page 1sur 3

void loop() {

Serial.println("subscribe called");

String sub = "demo";


String pub = "demo";
String chan = "pubnub_iot_house";

String url = "http://pubsub.pubnub.com/subscribe/" + sub + "/" + chan + "/0/" +


timetoken;

char sub_buff[200];
char next_char;
String thejson;

Serial.println(url);
client.getAsynchronously(url);

// Wait for the http request to complete


while (!client.ready()) {

if(asyncdemo) {
pingpong(1);
off();
}

while (client.available()) {

next_char = client.read();

Serial.print(next_char);

if(String(next_char) == '\0') {
break;
} else {
thejson += next_char;
}

Serial.println("the json is");


Serial.println(thejson);

int firstParen = thejson.indexOf('(');


int lastParen = thejson.lastIndexOf(')');

String thejson2 = "";

for(int i = 0; i < thejson.length(); i++){


if(i == lastParen) {
Serial.println("last paren");
break;
}
if(i > firstParen) {
thejson2 += thejson[i];
}
}
Serial.println(thejson2);

thejson2.toCharArray(sub_buff, 200);

JsonParser<32> parser;
JsonArray root = parser.parseArray(sub_buff);

if (!root.success()) {

Serial.println("fail");

} else {

timetoken = root.getString(1);

JsonArray messages = root.getArray(0);

Serial.print("array len ");


Serial.print(messages.getLength());

Serial.println();

if(messages.getLength() < 0) {
Serial.println("no data");
}

for(int i = 0; i < messages.getLength(); i++){

JsonHashTable message = messages.getHashTable(i);

if (!message.success()) {
Serial.println("fail");
}

String name = message.getString("name");


String valueString = message.getString("value");

Serial.println(name + ":" + valueString);

boolean value = false;


if(valueString == "1") {
value = true;
}

if(name == "door") {
door(value);
}

if(name == "garage") {
garage(value);
}

if(name == "lightLeft") {
light(lightLeft, value);
}

if(name == "lightRight") {
light(lightRight, value);
}

if(name == "lightRoom") {
light(lightRoom, value);
}

if(name == "lightGarage") {
light(lightGarage, value);
}

if(name == "blink") {
blink(100, valueString.toInt());
}

if(name == "pingpong") {
pingpong(valueString.toInt());
}

if(name == "demo") {
demo();
}

if(name == "async") {
asyncdemo = value;
}

Serial.flush();

Vous aimerez peut-être aussi