I started by kind of slapping together the code I had learned to display text on my little OLED, with the code that ive been using to get single readings from a website/JSON to track the longitude and latitude of the International Space Station.
Apparently this approach does not work.....
Can anyone walk me through the protocol for this type of project? not finding what im looking for online...so far...
Here's the code that I threw together, and im not surprised it doesn't work, but maybe it will help you see where im at...
Apparently this approach does not work.....
Can anyone walk me through the protocol for this type of project? not finding what im looking for online...so far...
Here's the code that I threw together, and im not surprised it doesn't work, but maybe it will help you see where im at...
Main file:
#include <Adafruit_EEPROM_I2C.h>
#include <Adafruit_FRAM_I2C.h>
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include <Wire.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#include <WiFiClient.h>
#include <WiFiServer.h>
#include "USE_ESP8266.h"
#include <TimeLib.h>
char server [] = "api.open-notify.org";
void digitalClockDisplay();
#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;
#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);
void setup ()
{
Serial.begin (9600);
Wire.begin ();
display.begin (0x3C);
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(':'))
{
while(client.peek () != '}' && client.find('"'))
{
String id = client.readStringUntil ('"');
float val = client.parseFloat ();
client.find ('"');
Serial.print(id + ":"); Serial.println(val, 4);
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(id + ":"); display.println(val, 4);
display.display();
delay (2000);
}
}
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);
}
Header file:
#include <Adafruit_EEPROM_I2C.h>
#include <Adafruit_FRAM_I2C.h>
#include <Adafruit_SSD1306.h>
#include <splash.h>
#include <Wire.h>
#include <WiFi.h>
#include <WiFiUdp.h>
#include <WiFiClient.h>
#include <WiFiServer.h>
WiFiClient client;
#include <SPI.h>
#include <ESP8266WiFi.h>
const char ssid[] = "Home25";
const char password[] = "6033216098";
#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>
bool configureNetwork()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay (1000);
Serial.print("Waiting for connection to "); Serial.println(ssid);
}
return true;
}