#include <Adafruit_SSD1306.h>
#include <splash.h>
#include <Adafruit_GrayOLED.h>
#include <gfxfont.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SPITFT.h>
#include <Adafruit_SPITFT_Macros.h>
#include <SPI.h>
#include <Wire.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#include "USE_ESP8266.h"
#include <TimeLib.h>
char server [] = "api.open-notify.org";
void digitalClockDisplay();
void setup ()
{
display.begin(SSD1306_SWITCHCAPVCC, 0X3C);
display.clearDisplay ();
Serial.begin(115200);
if (!configureNetwork()) //start the network
{
Serial.println("Failed to configure the network");
while(1)
{
delay(0); //halt; ESP8266 does not like infinity loop without a delay
}
}
int ret = client.connect(server, 80);
if (ret == 1)
{
Serial.println("Connected");
client.println("GET /iss-now.json HTTP/1.0"); //the http request
client.print("Host: "); client.println(server);
client.println("Connection: close");
client.println();
}
else
{
Serial.println("Connection failed, error was: ");
Serial.print(ret, DEC);
while(1)
{
delay(0); //halt; esp8266 does not like infinite loop without a delay
}
}
}
char timestampMarker[] = "\"timestamp\":";
char posMarker[] = "\"iss_position\":";
void loop ()
{
if (client.available())
{
String id = client.readStringUntil('"');
if (id.equals("timestamp")) //start of timestamp
{
if (client.find(':')) //a ":" follows each identifier
{
unsigned long timestamp = client.parseInt();
setTime(timestamp);
digitalClockDisplay();
}
else
{
Serial.println("failed to parse timestamp.");
}
}
if (id.equals("iss_position")) //start of position data
{
if (client.find(':'))
{
display.setTextSize(1);
display.setTextColor(WHITE);
while(client.peek () != '}' && client.find('"')) {
String id = client.readStringUntil ('"');
float val = client.parseFloat ();
client.find ('"');
Serial.print(id + ":"); Serial.println(val, 4);
if(id == "longitude"){
display.setCursor(0,20);
display.print("longitude:");
display.setCursor(0,30);
display.print(val);
}
if(id == "latitude"){
display.setCursor(0,40);
display.print("latitude:");
display.setCursor(0,50);
display.print(val);
}
}//end while
display.display();
}
else
{
Serial.print("Failed to parse position data.");
}
}
}
if (!client.connected())
{
Serial.println();
Serial.println("disconnecting.");
client.stop();
while(1)
{
delay (0); //halt, esp8266 does not like loop w/o delay
}
}
}
String padDigits(int digit)
{
String str = String("0") + digit; //put a zero in front of digit
return str.substring(str.length() - 2);
}
void digitalClockDisplay ()
{
String datestr = String(year()) + "-" + padDigits(month()) +
"-" + padDigits(day());
String timestr = String(hour()) + ":" + padDigits(minute()) +
":" + padDigits(second());
Serial.println(datestr + " " + timestr);
}
Comments
Please log in or sign up to comment.