| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- Dweet.io GET client for ArduinoHttpClient library
- Connects to dweet.io once every ten seconds,
- sends a GET request and a request body. Uses SSL
- Shows how to use Strings to assemble path and parse content
- from response. dweet.io expects:
- https://dweet.io/get/latest/dweet/for/thingName
- For more on dweet.io, see https://dweet.io/play/
- note: WiFi SSID and password are stored in config.h file.
- If it is not present, add a new tab, call it "config.h"
- and add the following variables:
- char ssid[] = "ssid"; // your network SSID (name)
- char pass[] = "password"; // your network password
- created 15 Feb 2016
- updated 16 Feb 2016
- by Tom Igoe
- this example is in the public domain
- */
- #include <ArduinoHttpClient.h>
- #include <WiFi101.h>
- #include "config.h"
- const char serverAddress[] = "dweet.io"; // server address
- int port = 80;
- String dweetName = "scandalous-cheese-hoarder"; // use your own thing name here
- WiFiClient wifi;
- HttpClient client = HttpClient(wifi, serverAddress, port);
- int status = WL_IDLE_STATUS;
- int statusCode = 0;
- String response;
- void setup() {
- Serial.begin(9600);
- while (!Serial);
- while ( status != WL_CONNECTED) {
- Serial.print("Attempting to connect to Network named: ");
- Serial.println(ssid); // print the network name (SSID);
- // Connect to WPA/WPA2 network:
- status = WiFi.begin(ssid, pass);
- }
- // print the SSID of the network you're attached to:
- Serial.print("SSID: ");
- Serial.println(WiFi.SSID());
- // print your WiFi shield's IP address:
- IPAddress ip = WiFi.localIP();
- Serial.print("IP Address: ");
- Serial.println(ip);
- }
- void loop() {
- // assemble the path for the GET message:
- String path = "/get/latest/dweet/for/" + dweetName;
- // send the GET request
- Serial.println("making GET request");
- client.get(path);
- // read the status code and body of the response
- statusCode = client.responseStatusCode();
- response = client.responseBody();
- Serial.print("Status code: ");
- Serial.println(statusCode);
- Serial.print("Response: ");
- Serial.println(response);
- /*
- Typical response is:
- {"this":"succeeded",
- "by":"getting",
- "the":"dweets",
- "with":[{"thing":"my-thing-name",
- "created":"2016-02-16T05:10:36.589Z",
- "content":{"sensorValue":456}}]}
- You want "content": numberValue
- */
- // now parse the response looking for "content":
- int labelStart = response.indexOf("content\":");
- // find the first { after "content":
- int contentStart = response.indexOf("{", labelStart);
- // find the following } and get what's between the braces:
- int contentEnd = response.indexOf("}", labelStart);
- String content = response.substring(contentStart + 1, contentEnd);
- Serial.println(content);
- // now get the value after the colon, and convert to an int:
- int valueStart = content.indexOf(":");
- String valueString = content.substring(valueStart + 1);
- int number = valueString.toInt();
- Serial.print("Value string: ");
- Serial.println(valueString);
- Serial.print("Actual value: ");
- Serial.println(number);
- Serial.println("Wait ten seconds\n");
- delay(10000);
- }
|