| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- // Sample Arduino Json Web Server
- // Created by Benoit Blanchon.
- // Heavily inspired by "Web Server" from David A. Mellis and Tom Igoe
- #include <ArduinoJson.h>
- #include <Ethernet.h>
- #include <SPI.h>
- byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
- IPAddress ip(192, 168, 0, 177);
- EthernetServer server(80);
- bool readRequest(EthernetClient& client) {
- bool currentLineIsBlank = true;
- while (client.connected()) {
- if (client.available()) {
- char c = client.read();
- if (c == '\n' && currentLineIsBlank) {
- return true;
- } else if (c == '\n') {
- currentLineIsBlank = true;
- } else if (c != '\r') {
- currentLineIsBlank = false;
- }
- }
- }
- return false;
- }
- JsonObject& prepareResponse(JsonBuffer& jsonBuffer) {
- JsonObject& root = jsonBuffer.createObject();
- JsonArray& analogValues = root.createNestedArray("analog");
- for (int pin = 0; pin < 6; pin++) {
- int value = analogRead(pin);
- analogValues.add(value);
- }
- JsonArray& digitalValues = root.createNestedArray("digital");
- for (int pin = 0; pin < 14; pin++) {
- int value = digitalRead(pin);
- digitalValues.add(value);
- }
- return root;
- }
- void writeResponse(EthernetClient& client, JsonObject& json) {
- client.println("HTTP/1.1 200 OK");
- client.println("Content-Type: application/json");
- client.println("Connection: close");
- client.println();
- json.prettyPrintTo(client);
- }
- void setup() {
- Ethernet.begin(mac, ip);
- server.begin();
- }
- void loop() {
- EthernetClient client = server.available();
- if (client) {
- bool success = readRequest(client);
- if (success) {
- // Use https://bblanchon.github.io/ArduinoJson/assistant/ to
- // compute the right size for the buffer
- StaticJsonBuffer<500> jsonBuffer;
- JsonObject& json = prepareResponse(jsonBuffer);
- writeResponse(client, json);
- }
- delay(1);
- client.stop();
- }
- }
|