/**
* BasicHTTPClient.ino
*
* Created on: 24.05.2015
*
*/
#include <Arduino.h>
#include <ArduinoJson.h>
#include <StreamUtils.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
WiFiMulti wifiMulti;
HTTPClient http;
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
String url = "http://IPADDRESS:81/";
float getMetric (String name) {
float met;
String website = url + name;
http.begin(website); //HTTP
http.GET();
String metric = http.getString();
met = metric.toFloat();
return met;
}
void setup() {
// Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
delay(2000);
display.clearDisplay();
display.setCursor(0,0);
display.println("Metrics Display \nSystem starting...");
display.display();
/*
for(uint8_t t = 4; t > 0; t--) {
Serial.printf("[SETUP] WAIT %d...\n", t);
Serial.flush();
delay(500);
}
*/
wifiMulti.addAP("SSID", "PASS");
}
void loop() {
display.clearDisplay();
display.setTextColor(WHITE);
// wait for WiFi connection
if((wifiMulti.run() == WL_CONNECTED)) {
// Serial.print("[HTTP] begin...\n");
http.useHTTP10(true);
http.begin(url); //HTTP
// Serial.print("[HTTP] GET...\n");
// start connection and send HTTP header
int httpCode = http.GET();
// httpCode will be negative on error
if(httpCode > 0) {
// HTTP header has been send and Server response header has been handled
// Serial.printf("[HTTP] GET... code: %d\n", httpCode);
// file found at server
if(httpCode == HTTP_CODE_OK) {
DynamicJsonDocument doc(4096);
deserializeJson(doc, http.getString());
display.clearDisplay();
display.setCursor(0, 0);
for (JsonObject item : doc.as<JsonArray>()) {
String name = item["name"];
// Serial.println(getMetric(name));
if (name == "tank_temp_reading.txt"){
display.print("Tank Temp: ");
}
else if (name == "sump_temp_reading.txt") {
display.print("Sump Temp: ");
}
else if (name == "internal_box_temp_reading.txt") {
display.print("Box Temp: ");
}
else if (name == "equipment_tank_1_heater_1_state.txt") {
display.print("Tank Heater: ");
}
else if (name == "equipment_tank_1_heater_2_state.txt") {
display.print("Sump Heater: ");
}
else if (name == "equipment_fan_state.txt") {
display.print("Fan : ");
}
display.println(getMetric(name));
display.display();
}
}
} else {
// Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
display.clearDisplay();
display.setCursor(0, 0);
display.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
display.display();
}
http.end();
}
delay(10000);
}