|
|
@@ -0,0 +1,74 @@
|
|
|
+// Sample Arduino Json Web Server
|
|
|
+// Created by Benoit Blanchon.
|
|
|
+// Heavily inspired by "Web Server" from David A. Mellis and Tom Igoe
|
|
|
+
|
|
|
+#include <SPI.h>
|
|
|
+#include <Ethernet.h>
|
|
|
+#include <ArduinoJson.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) {
|
|
|
+ StaticJsonBuffer<500> jsonBuffer;
|
|
|
+ JsonObject& json = prepareResponse(jsonBuffer);
|
|
|
+ writeResponse(client, json);
|
|
|
+ }
|
|
|
+ delay(1);
|
|
|
+ client.stop();
|
|
|
+ }
|
|
|
+}
|