#include <WiFi.h>
#include <Wire.h>
#include <HTTPClient.h>
//#include <SPI.h>
#include <WiFi.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ArduinoJson.h>
// Just the base of the URL you want to connect to
#define TEST_HOST "api.sl.se"
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// For HTTP requests
WiFiClient client;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3c);
Serial.begin(115200);
Serial.println("Hello, ESP32!");
display.clearDisplay();
display.display();
display.setTextSize(1); // Draw 1X-scale text
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Hello, ESP32!");
display.display(); // Show initial text
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
display.setTextSize(1); // Draw 1X-scale text
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 16);
display.println("Connetcted!");
display.display(); // Show initial text
Serial.println(" Connected!");
// This will verify the server is trusted.
//client.setCACert(server_cert);
}
void loop() {
// Opening connection to server (Use 80 as port if HTTP)
if (!client.connect(TEST_HOST, 80)) {
Serial.println(F("Connection failed"));
return;
}
Serial.println(F("Connected to server!"));
// give the esp a breather
yield();
// Send HTTP request
client.print(F("GET "));
// This is the second half of a request (everything that comes after the base URL)
client.print("/api2/TravelplannerV3_1/trip.json?key=53923817916e45488fc78e5d752ecd76&originId=9701&destId=1080&numF=3&numB=0"); // %2C == ,
client.println(F(" HTTP/1.1"));
//Headers
client.print(F("Host: "));
client.println(TEST_HOST);
client.println(F("Cache-Control: no-cache"));
if (client.println() == 0) {
Serial.println(F("Failed to send request"));
return;
}
delay(100);
// Check HTTP status
char status[32] = { 0 };
client.readBytesUntil('\r', status, sizeof(status));
if (strcmp(status, "HTTP/1.1 200 OK") != 0) {
Serial.print(F("Unexpected response: "));
Serial.println(status); //here I might consider to add restart of esp
return;
}
// Skip HTTP headers
char endOfHeaders[] = "\r\n\r\n";
if (!client.find(endOfHeaders)) {
Serial.println(F("Invalid response"));
return;
}
// sometimes there were random
// characters coming back before the body of the response.
// This will cause no hard to leave it in
// peek() will look at the character, but not take it off the queue
while (client.available() && client.peek() != '{') {
char c = 0;
client.readBytes(&c, 1);
Serial.print(c);
Serial.println("BAD");
}
// // While the client is still availble read each
// // byte and print to the serial monitor
// while (client.available()) {
// char c = 0;
// client.readBytes(&c, 1);
// Serial.print(c);
// }
// Stream& input;
DynamicJsonDocument doc(8192);
DeserializationError error = deserializeJson(doc, client);
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return;
}
JsonArray Trip = doc["Trip"];
JsonObject Trip_0 = Trip[0];
JsonObject Trip_0_ServiceDays_0 = Trip_0["ServiceDays"][0];
const char* Trip_0_ServiceDays_0_planningPeriodBegin = Trip_0_ServiceDays_0["planningPeriodBegin"];
const char* Trip_0_ServiceDays_0_planningPeriodEnd = Trip_0_ServiceDays_0["planningPeriodEnd"];
const char* Trip_0_ServiceDays_0_sDaysR = Trip_0_ServiceDays_0["sDaysR"]; // "varje dag"
const char* Trip_0_ServiceDays_0_sDaysB = Trip_0_ServiceDays_0["sDaysB"];
JsonObject Trip_0_LegList_Leg_0 = Trip_0["LegList"]["Leg"][0];
JsonObject Trip_0_LegList_Leg_0_Origin = Trip_0_LegList_Leg_0["Origin"];
const char* Trip_0_LegList_Leg_0_Origin_name = Trip_0_LegList_Leg_0_Origin["name"]; // "Kallhäll"
const char* Trip_0_LegList_Leg_0_Origin_type = Trip_0_LegList_Leg_0_Origin["type"]; // "ST"
const char* Trip_0_LegList_Leg_0_Origin_id = Trip_0_LegList_Leg_0_Origin["id"];
const char* Trip_0_LegList_Leg_0_Origin_extId = Trip_0_LegList_Leg_0_Origin["extId"]; // "400106071"
double Trip_0_LegList_Leg_0_Origin_lon = Trip_0_LegList_Leg_0_Origin["lon"]; // 17.807927
double Trip_0_LegList_Leg_0_Origin_lat = Trip_0_LegList_Leg_0_Origin["lat"]; // 59.451886
const char* Trip_0_LegList_Leg_0_Origin_prognosisType = Trip_0_LegList_Leg_0_Origin["prognosisType"];
const char* Trip_0_LegList_Leg_0_Origin_time = Trip_0_LegList_Leg_0_Origin["time"]; // "16:10:00"
const char* Trip_0_LegList_Leg_0_Origin_date = Trip_0_LegList_Leg_0_Origin["date"]; // "2023-02-18"
const char* Trip_0_LegList_Leg_0_Origin_track = Trip_0_LegList_Leg_0_Origin["track"]; // "2"
const char* Trip_0_LegList_Leg_0_Origin_rtTime = Trip_0_LegList_Leg_0_Origin["rtTime"]; // "16:10:00"
const char* Trip_0_LegList_Leg_0_Origin_rtDate = Trip_0_LegList_Leg_0_Origin["rtDate"]; // "2023-02-18"
bool Trip_0_LegList_Leg_0_Origin_hasMainMast = Trip_0_LegList_Leg_0_Origin["hasMainMast"]; // true
const char* Trip_0_LegList_Leg_0_Origin_mainMastId = Trip_0_LegList_Leg_0_Origin["mainMastId"];
const char* Trip_0_LegList_Leg_0_Origin_mainMastExtId = Trip_0_LegList_Leg_0_Origin["mainMastExtId"];
bool Trip_0_LegList_Leg_0_Origin_additional = Trip_0_LegList_Leg_0_Origin["additional"]; // false
JsonObject Trip_0_LegList_Leg_0_Destination = Trip_0_LegList_Leg_0["Destination"];
const char* Trip_0_LegList_Leg_0_Destination_name = Trip_0_LegList_Leg_0_Destination["name"];
const char* Trip_0_LegList_Leg_0_Destination_type = Trip_0_LegList_Leg_0_Destination["type"]; // "ST"
const char* Trip_0_LegList_Leg_0_Destination_id = Trip_0_LegList_Leg_0_Destination["id"];
const char* Trip_0_LegList_Leg_0_Destination_extId = Trip_0_LegList_Leg_0_Destination["extId"];
float Trip_0_LegList_Leg_0_Destination_lon = Trip_0_LegList_Leg_0_Destination["lon"]; // 18.0595
double Trip_0_LegList_Leg_0_Destination_lat = Trip_0_LegList_Leg_0_Destination["lat"]; // 59.331143
const char* Trip_0_LegList_Leg_0_Destination_prognosisType = Trip_0_LegList_Leg_0_Destination["prognosisType"];
const char* Trip_0_LegList_Leg_0_Destination_time = Trip_0_LegList_Leg_0_Destination["time"];
const char* Trip_0_LegList_Leg_0_Destination_date = Trip_0_LegList_Leg_0_Destination["date"];
const char* Trip_0_LegList_Leg_0_Destination_track = Trip_0_LegList_Leg_0_Destination["track"]; // "4"
const char* Trip_0_LegList_Leg_0_Destination_rtTime = Trip_0_LegList_Leg_0_Destination["rtTime"];
const char* Trip_0_LegList_Leg_0_Destination_rtDate = Trip_0_LegList_Leg_0_Destination["rtDate"];
bool Trip_0_LegList_Leg_0_Destination_hasMainMast = Trip_0_LegList_Leg_0_Destination["hasMainMast"];
const char* Trip_0_LegList_Leg_0_Destination_mainMastId = Trip_0_LegList_Leg_0_Destination["mainMastId"];
const char* Trip_0_LegList_Leg_0_Destination_mainMastExtId = Trip_0_LegList_Leg_0_Destination["mainMastExtId"];
bool Trip_0_LegList_Leg_0_Destination_additional = Trip_0_LegList_Leg_0_Destination["additional"];
const char* Trip_0_LegList_Leg_0_JourneyDetailRef_ref = Trip_0_LegList_Leg_0["JourneyDetailRef"]["ref"];
const char* Trip_0_LegList_Leg_0_JourneyStatus = Trip_0_LegList_Leg_0["JourneyStatus"]; // "P"
JsonObject Trip_0_LegList_Leg_0_Product = Trip_0_LegList_Leg_0["Product"];
const char* Trip_0_LegList_Leg_0_Product_name = Trip_0_LegList_Leg_0_Product["name"]; // "Pendeltåg 43"
const char* Trip_0_LegList_Leg_0_Product_num = Trip_0_LegList_Leg_0_Product["num"]; // "2551"
const char* Trip_0_LegList_Leg_0_Product_line = Trip_0_LegList_Leg_0_Product["line"]; // "43"
const char* Trip_0_LegList_Leg_0_Product_catOut = Trip_0_LegList_Leg_0_Product["catOut"]; // "TRAIN "
const char* Trip_0_LegList_Leg_0_Product_catIn = Trip_0_LegList_Leg_0_Product["catIn"]; // "TRN"
const char* Trip_0_LegList_Leg_0_Product_catCode = Trip_0_LegList_Leg_0_Product["catCode"]; // "0"
const char* Trip_0_LegList_Leg_0_Product_catOutS = Trip_0_LegList_Leg_0_Product["catOutS"]; // "TRN"
const char* Trip_0_LegList_Leg_0_Product_catOutL = Trip_0_LegList_Leg_0_Product["catOutL"];
const char* Trip_0_LegList_Leg_0_Product_operatorCode = Trip_0_LegList_Leg_0_Product["operatorCode"];
const char* Trip_0_LegList_Leg_0_Product_operator = Trip_0_LegList_Leg_0_Product["operator"];
const char* Trip_0_LegList_Leg_0_Product_admin = Trip_0_LegList_Leg_0_Product["admin"]; // "102043"
// Trip_0_LegList_Leg_0["Stops"] is null
const char* Trip_0_LegList_Leg_0_idx = Trip_0_LegList_Leg_0["idx"]; // "0"
const char* Trip_0_LegList_Leg_0_name = Trip_0_LegList_Leg_0["name"]; // "Pendeltåg 43"
const char* Trip_0_LegList_Leg_0_number = Trip_0_LegList_Leg_0["number"]; // "2551"
const char* Trip_0_LegList_Leg_0_category = Trip_0_LegList_Leg_0["category"]; // "TRN"
const char* Trip_0_LegList_Leg_0_type = Trip_0_LegList_Leg_0["type"]; // "JNY"
bool Trip_0_LegList_Leg_0_reachable = Trip_0_LegList_Leg_0["reachable"]; // true
bool Trip_0_LegList_Leg_0_redirected = Trip_0_LegList_Leg_0["redirected"]; // false
const char* Trip_0_LegList_Leg_0_direction = Trip_0_LegList_Leg_0["direction"]; // "Västerhaninge"
JsonObject Trip_0_TariffResult_fareSetItem_0 = Trip_0["TariffResult"]["fareSetItem"][0];
for (JsonObject Trip_0_TariffResult_fareSetItem_0_fareItem_item : Trip_0_TariffResult_fareSetItem_0["fareItem"].as<JsonArray>()) {
const char* Trip_0_TariffResult_fareSetItem_0_fareItem_item_name = Trip_0_TariffResult_fareSetItem_0_fareItem_item["name"];
const char* Trip_0_TariffResult_fareSetItem_0_fareItem_item_desc = Trip_0_TariffResult_fareSetItem_0_fareItem_item["desc"];
int Trip_0_TariffResult_fareSetItem_0_fareItem_item_price = Trip_0_TariffResult_fareSetItem_0_fareItem_item["price"];
const char* Trip_0_TariffResult_fareSetItem_0_fareItem_item_cur = Trip_0_TariffResult_fareSetItem_0_fareItem_item["cur"];
}
const char* Trip_0_TariffResult_fareSetItem_0_name = Trip_0_TariffResult_fareSetItem_0["name"];
const char* Trip_0_TariffResult_fareSetItem_0_desc = Trip_0_TariffResult_fareSetItem_0["desc"]; // "SL"
bool Trip_0_alternative = Trip_0["alternative"]; // false
bool Trip_0_valid = Trip_0["valid"]; // true
int Trip_0_idx = Trip_0["idx"]; // 0
const char* Trip_0_tripId = Trip_0["tripId"]; // "C-0"
const char* Trip_0_ctxRecon = Trip_0["ctxRecon"];
const char* Trip_0_duration = Trip_0["duration"]; // "PT24M"
bool Trip_0_return = Trip_0["return"]; // false
const char* Trip_0_checksum = Trip_0["checksum"]; // "33E55DEB_4"
int Trip_0_transferCount = Trip_0["transferCount"]; // 0
JsonObject Trip_1 = Trip[1];
JsonObject Trip_1_ServiceDays_0 = Trip_1["ServiceDays"][0];
const char* Trip_1_ServiceDays_0_planningPeriodBegin = Trip_1_ServiceDays_0["planningPeriodBegin"];
const char* Trip_1_ServiceDays_0_planningPeriodEnd = Trip_1_ServiceDays_0["planningPeriodEnd"];
const char* Trip_1_ServiceDays_0_sDaysR = Trip_1_ServiceDays_0["sDaysR"]; // "varje dag"
const char* Trip_1_ServiceDays_0_sDaysB = Trip_1_ServiceDays_0["sDaysB"];
JsonObject Trip_1_LegList_Leg_0 = Trip_1["LegList"]["Leg"][0];
JsonObject Trip_1_LegList_Leg_0_Origin = Trip_1_LegList_Leg_0["Origin"];
const char* Trip_1_LegList_Leg_0_Origin_name = Trip_1_LegList_Leg_0_Origin["name"]; // "Kallhäll"
const char* Trip_1_LegList_Leg_0_Origin_type = Trip_1_LegList_Leg_0_Origin["type"]; // "ST"
const char* Trip_1_LegList_Leg_0_Origin_id = Trip_1_LegList_Leg_0_Origin["id"];
const char* Trip_1_LegList_Leg_0_Origin_extId = Trip_1_LegList_Leg_0_Origin["extId"]; // "400106071"
double Trip_1_LegList_Leg_0_Origin_lon = Trip_1_LegList_Leg_0_Origin["lon"]; // 17.807927
double Trip_1_LegList_Leg_0_Origin_lat = Trip_1_LegList_Leg_0_Origin["lat"]; // 59.451886
const char* Trip_1_LegList_Leg_0_Origin_prognosisType = Trip_1_LegList_Leg_0_Origin["prognosisType"];
const char* Trip_1_LegList_Leg_0_Origin_time = Trip_1_LegList_Leg_0_Origin["time"]; // "16:25:00"
const char* Trip_1_LegList_Leg_0_Origin_date = Trip_1_LegList_Leg_0_Origin["date"]; // "2023-02-18"
const char* Trip_1_LegList_Leg_0_Origin_track = Trip_1_LegList_Leg_0_Origin["track"]; // "2"
bool Trip_1_LegList_Leg_0_Origin_hasMainMast = Trip_1_LegList_Leg_0_Origin["hasMainMast"]; // true
const char* Trip_1_LegList_Leg_0_Origin_mainMastId = Trip_1_LegList_Leg_0_Origin["mainMastId"];
const char* Trip_1_LegList_Leg_0_Origin_mainMastExtId = Trip_1_LegList_Leg_0_Origin["mainMastExtId"];
bool Trip_1_LegList_Leg_0_Origin_additional = Trip_1_LegList_Leg_0_Origin["additional"]; // false
JsonObject Trip_1_LegList_Leg_0_Destination = Trip_1_LegList_Leg_0["Destination"];
const char* Trip_1_LegList_Leg_0_Destination_name = Trip_1_LegList_Leg_0_Destination["name"];
const char* Trip_1_LegList_Leg_0_Destination_type = Trip_1_LegList_Leg_0_Destination["type"]; // "ST"
const char* Trip_1_LegList_Leg_0_Destination_id = Trip_1_LegList_Leg_0_Destination["id"];
const char* Trip_1_LegList_Leg_0_Destination_extId = Trip_1_LegList_Leg_0_Destination["extId"];
float Trip_1_LegList_Leg_0_Destination_lon = Trip_1_LegList_Leg_0_Destination["lon"]; // 18.0595
double Trip_1_LegList_Leg_0_Destination_lat = Trip_1_LegList_Leg_0_Destination["lat"]; // 59.331143
const char* Trip_1_LegList_Leg_0_Destination_prognosisType = Trip_1_LegList_Leg_0_Destination["prognosisType"];
const char* Trip_1_LegList_Leg_0_Destination_time = Trip_1_LegList_Leg_0_Destination["time"];
const char* Trip_1_LegList_Leg_0_Destination_date = Trip_1_LegList_Leg_0_Destination["date"];
const char* Trip_1_LegList_Leg_0_Destination_track = Trip_1_LegList_Leg_0_Destination["track"]; // "4"
bool Trip_1_LegList_Leg_0_Destination_hasMainMast = Trip_1_LegList_Leg_0_Destination["hasMainMast"];
const char* Trip_1_LegList_Leg_0_Destination_mainMastId = Trip_1_LegList_Leg_0_Destination["mainMastId"];
const char* Trip_1_LegList_Leg_0_Destination_mainMastExtId = Trip_1_LegList_Leg_0_Destination["mainMastExtId"];
bool Trip_1_LegList_Leg_0_Destination_additional = Trip_1_LegList_Leg_0_Destination["additional"];
const char* Trip_1_LegList_Leg_0_JourneyDetailRef_ref = Trip_1_LegList_Leg_0["JourneyDetailRef"]["ref"];
const char* Trip_1_LegList_Leg_0_JourneyStatus = Trip_1_LegList_Leg_0["JourneyStatus"]; // "P"
JsonObject Trip_1_LegList_Leg_0_Product = Trip_1_LegList_Leg_0["Product"];
const char* Trip_1_LegList_Leg_0_Product_name = Trip_1_LegList_Leg_0_Product["name"]; // "Pendeltåg 43"
const char* Trip_1_LegList_Leg_0_Product_num = Trip_1_LegList_Leg_0_Product["num"]; // "2851"
const char* Trip_1_LegList_Leg_0_Product_line = Trip_1_LegList_Leg_0_Product["line"]; // "43"
const char* Trip_1_LegList_Leg_0_Product_catOut = Trip_1_LegList_Leg_0_Product["catOut"]; // "TRAIN "
const char* Trip_1_LegList_Leg_0_Product_catIn = Trip_1_LegList_Leg_0_Product["catIn"]; // "TRN"
const char* Trip_1_LegList_Leg_0_Product_catCode = Trip_1_LegList_Leg_0_Product["catCode"]; // "0"
const char* Trip_1_LegList_Leg_0_Product_catOutS = Trip_1_LegList_Leg_0_Product["catOutS"]; // "TRN"
const char* Trip_1_LegList_Leg_0_Product_catOutL = Trip_1_LegList_Leg_0_Product["catOutL"];
const char* Trip_1_LegList_Leg_0_Product_operatorCode = Trip_1_LegList_Leg_0_Product["operatorCode"];
const char* Trip_1_LegList_Leg_0_Product_operator = Trip_1_LegList_Leg_0_Product["operator"];
const char* Trip_1_LegList_Leg_0_Product_admin = Trip_1_LegList_Leg_0_Product["admin"]; // "102043"
// Trip_1_LegList_Leg_0["Stops"] is null
const char* Trip_1_LegList_Leg_0_idx = Trip_1_LegList_Leg_0["idx"]; // "0"
const char* Trip_1_LegList_Leg_0_name = Trip_1_LegList_Leg_0["name"]; // "Pendeltåg 43"
const char* Trip_1_LegList_Leg_0_number = Trip_1_LegList_Leg_0["number"]; // "2851"
const char* Trip_1_LegList_Leg_0_category = Trip_1_LegList_Leg_0["category"]; // "TRN"
const char* Trip_1_LegList_Leg_0_type = Trip_1_LegList_Leg_0["type"]; // "JNY"
bool Trip_1_LegList_Leg_0_reachable = Trip_1_LegList_Leg_0["reachable"]; // true
bool Trip_1_LegList_Leg_0_redirected = Trip_1_LegList_Leg_0["redirected"]; // false
const char* Trip_1_LegList_Leg_0_direction = Trip_1_LegList_Leg_0["direction"]; // "Västerhaninge"
JsonObject Trip_1_TariffResult_fareSetItem_0 = Trip_1["TariffResult"]["fareSetItem"][0];
for (JsonObject Trip_1_TariffResult_fareSetItem_0_fareItem_item : Trip_1_TariffResult_fareSetItem_0["fareItem"].as<JsonArray>()) {
const char* Trip_1_TariffResult_fareSetItem_0_fareItem_item_name = Trip_1_TariffResult_fareSetItem_0_fareItem_item["name"];
const char* Trip_1_TariffResult_fareSetItem_0_fareItem_item_desc = Trip_1_TariffResult_fareSetItem_0_fareItem_item["desc"];
int Trip_1_TariffResult_fareSetItem_0_fareItem_item_price = Trip_1_TariffResult_fareSetItem_0_fareItem_item["price"];
const char* Trip_1_TariffResult_fareSetItem_0_fareItem_item_cur = Trip_1_TariffResult_fareSetItem_0_fareItem_item["cur"];
}
const char* Trip_1_TariffResult_fareSetItem_0_name = Trip_1_TariffResult_fareSetItem_0["name"];
const char* Trip_1_TariffResult_fareSetItem_0_desc = Trip_1_TariffResult_fareSetItem_0["desc"]; // "SL"
bool Trip_1_alternative = Trip_1["alternative"]; // false
bool Trip_1_valid = Trip_1["valid"]; // true
int Trip_1_idx = Trip_1["idx"]; // 1
const char* Trip_1_tripId = Trip_1["tripId"]; // "C-1"
const char* Trip_1_ctxRecon = Trip_1["ctxRecon"];
const char* Trip_1_duration = Trip_1["duration"]; // "PT24M"
bool Trip_1_return = Trip_1["return"]; // false
const char* Trip_1_checksum = Trip_1["checksum"]; // "42E56CEB_4"
int Trip_1_transferCount = Trip_1["transferCount"]; // 0
JsonObject Trip_2 = Trip[2];
JsonObject Trip_2_ServiceDays_0 = Trip_2["ServiceDays"][0];
const char* Trip_2_ServiceDays_0_planningPeriodBegin = Trip_2_ServiceDays_0["planningPeriodBegin"];
const char* Trip_2_ServiceDays_0_planningPeriodEnd = Trip_2_ServiceDays_0["planningPeriodEnd"];
const char* Trip_2_ServiceDays_0_sDaysR = Trip_2_ServiceDays_0["sDaysR"]; // "varje dag"
const char* Trip_2_ServiceDays_0_sDaysB = Trip_2_ServiceDays_0["sDaysB"];
JsonObject Trip_2_LegList_Leg_0 = Trip_2["LegList"]["Leg"][0];
JsonObject Trip_2_LegList_Leg_0_Origin = Trip_2_LegList_Leg_0["Origin"];
const char* Trip_2_LegList_Leg_0_Origin_name = Trip_2_LegList_Leg_0_Origin["name"]; // "Kallhäll"
const char* Trip_2_LegList_Leg_0_Origin_type = Trip_2_LegList_Leg_0_Origin["type"]; // "ST"
const char* Trip_2_LegList_Leg_0_Origin_id = Trip_2_LegList_Leg_0_Origin["id"];
const char* Trip_2_LegList_Leg_0_Origin_extId = Trip_2_LegList_Leg_0_Origin["extId"]; // "400106071"
double Trip_2_LegList_Leg_0_Origin_lon = Trip_2_LegList_Leg_0_Origin["lon"]; // 17.807927
double Trip_2_LegList_Leg_0_Origin_lat = Trip_2_LegList_Leg_0_Origin["lat"]; // 59.451886
const char* Trip_2_LegList_Leg_0_Origin_prognosisType = Trip_2_LegList_Leg_0_Origin["prognosisType"];
const char* Trip_2_LegList_Leg_0_Origin_time = Trip_2_LegList_Leg_0_Origin["time"]; // "16:40:00"
const char* Trip_2_LegList_Leg_0_Origin_date = Trip_2_LegList_Leg_0_Origin["date"]; // "2023-02-18"
const char* Trip_2_LegList_Leg_0_Origin_track = Trip_2_LegList_Leg_0_Origin["track"]; // "2"
bool Trip_2_LegList_Leg_0_Origin_hasMainMast = Trip_2_LegList_Leg_0_Origin["hasMainMast"]; // true
const char* Trip_2_LegList_Leg_0_Origin_mainMastId = Trip_2_LegList_Leg_0_Origin["mainMastId"];
const char* Trip_2_LegList_Leg_0_Origin_mainMastExtId = Trip_2_LegList_Leg_0_Origin["mainMastExtId"];
bool Trip_2_LegList_Leg_0_Origin_additional = Trip_2_LegList_Leg_0_Origin["additional"]; // false
JsonObject Trip_2_LegList_Leg_0_Destination = Trip_2_LegList_Leg_0["Destination"];
const char* Trip_2_LegList_Leg_0_Destination_name = Trip_2_LegList_Leg_0_Destination["name"];
const char* Trip_2_LegList_Leg_0_Destination_type = Trip_2_LegList_Leg_0_Destination["type"]; // "ST"
const char* Trip_2_LegList_Leg_0_Destination_id = Trip_2_LegList_Leg_0_Destination["id"];
const char* Trip_2_LegList_Leg_0_Destination_extId = Trip_2_LegList_Leg_0_Destination["extId"];
float Trip_2_LegList_Leg_0_Destination_lon = Trip_2_LegList_Leg_0_Destination["lon"]; // 18.0595
double Trip_2_LegList_Leg_0_Destination_lat = Trip_2_LegList_Leg_0_Destination["lat"]; // 59.331143
const char* Trip_2_LegList_Leg_0_Destination_prognosisType = Trip_2_LegList_Leg_0_Destination["prognosisType"];
const char* Trip_2_LegList_Leg_0_Destination_time = Trip_2_LegList_Leg_0_Destination["time"];
const char* Trip_2_LegList_Leg_0_Destination_date = Trip_2_LegList_Leg_0_Destination["date"];
const char* Trip_2_LegList_Leg_0_Destination_track = Trip_2_LegList_Leg_0_Destination["track"]; // "4"
bool Trip_2_LegList_Leg_0_Destination_hasMainMast = Trip_2_LegList_Leg_0_Destination["hasMainMast"];
const char* Trip_2_LegList_Leg_0_Destination_mainMastId = Trip_2_LegList_Leg_0_Destination["mainMastId"];
const char* Trip_2_LegList_Leg_0_Destination_mainMastExtId = Trip_2_LegList_Leg_0_Destination["mainMastExtId"];
bool Trip_2_LegList_Leg_0_Destination_additional = Trip_2_LegList_Leg_0_Destination["additional"];
const char* Trip_2_LegList_Leg_0_JourneyDetailRef_ref = Trip_2_LegList_Leg_0["JourneyDetailRef"]["ref"];
const char* Trip_2_LegList_Leg_0_JourneyStatus = Trip_2_LegList_Leg_0["JourneyStatus"]; // "P"
JsonObject Trip_2_LegList_Leg_0_Product = Trip_2_LegList_Leg_0["Product"];
const char* Trip_2_LegList_Leg_0_Product_name = Trip_2_LegList_Leg_0_Product["name"]; // "Pendeltåg 43"
const char* Trip_2_LegList_Leg_0_Product_num = Trip_2_LegList_Leg_0_Product["num"]; // "2553"
const char* Trip_2_LegList_Leg_0_Product_line = Trip_2_LegList_Leg_0_Product["line"]; // "43"
const char* Trip_2_LegList_Leg_0_Product_catOut = Trip_2_LegList_Leg_0_Product["catOut"]; // "TRAIN "
const char* Trip_2_LegList_Leg_0_Product_catIn = Trip_2_LegList_Leg_0_Product["catIn"]; // "TRN"
const char* Trip_2_LegList_Leg_0_Product_catCode = Trip_2_LegList_Leg_0_Product["catCode"]; // "0"
const char* Trip_2_LegList_Leg_0_Product_catOutS = Trip_2_LegList_Leg_0_Product["catOutS"]; // "TRN"
const char* Trip_2_LegList_Leg_0_Product_catOutL = Trip_2_LegList_Leg_0_Product["catOutL"];
const char* Trip_2_LegList_Leg_0_Product_operatorCode = Trip_2_LegList_Leg_0_Product["operatorCode"];
const char* Trip_2_LegList_Leg_0_Product_operator = Trip_2_LegList_Leg_0_Product["operator"];
const char* Trip_2_LegList_Leg_0_Product_admin = Trip_2_LegList_Leg_0_Product["admin"]; // "101043"
// Trip_2_LegList_Leg_0["Stops"] is null
const char* Trip_2_LegList_Leg_0_idx = Trip_2_LegList_Leg_0["idx"]; // "0"
const char* Trip_2_LegList_Leg_0_name = Trip_2_LegList_Leg_0["name"]; // "Pendeltåg 43"
const char* Trip_2_LegList_Leg_0_number = Trip_2_LegList_Leg_0["number"]; // "2553"
const char* Trip_2_LegList_Leg_0_category = Trip_2_LegList_Leg_0["category"]; // "TRN"
const char* Trip_2_LegList_Leg_0_type = Trip_2_LegList_Leg_0["type"]; // "JNY"
bool Trip_2_LegList_Leg_0_reachable = Trip_2_LegList_Leg_0["reachable"]; // true
bool Trip_2_LegList_Leg_0_redirected = Trip_2_LegList_Leg_0["redirected"]; // false
const char* Trip_2_LegList_Leg_0_direction = Trip_2_LegList_Leg_0["direction"]; // "Västerhaninge"
JsonObject Trip_2_TariffResult_fareSetItem_0 = Trip_2["TariffResult"]["fareSetItem"][0];
for (JsonObject Trip_2_TariffResult_fareSetItem_0_fareItem_item : Trip_2_TariffResult_fareSetItem_0["fareItem"].as<JsonArray>()) {
const char* Trip_2_TariffResult_fareSetItem_0_fareItem_item_name = Trip_2_TariffResult_fareSetItem_0_fareItem_item["name"];
const char* Trip_2_TariffResult_fareSetItem_0_fareItem_item_desc = Trip_2_TariffResult_fareSetItem_0_fareItem_item["desc"];
int Trip_2_TariffResult_fareSetItem_0_fareItem_item_price = Trip_2_TariffResult_fareSetItem_0_fareItem_item["price"];
const char* Trip_2_TariffResult_fareSetItem_0_fareItem_item_cur = Trip_2_TariffResult_fareSetItem_0_fareItem_item["cur"];
}
const char* Trip_2_TariffResult_fareSetItem_0_name = Trip_2_TariffResult_fareSetItem_0["name"];
const char* Trip_2_TariffResult_fareSetItem_0_desc = Trip_2_TariffResult_fareSetItem_0["desc"]; // "SL"
bool Trip_2_alternative = Trip_2["alternative"]; // false
bool Trip_2_valid = Trip_2["valid"]; // true
int Trip_2_idx = Trip_2["idx"]; // 2
const char* Trip_2_tripId = Trip_2["tripId"]; // "C-2"
const char* Trip_2_ctxRecon = Trip_2["ctxRecon"];
const char* Trip_2_duration = Trip_2["duration"]; // "PT24M"
bool Trip_2_return = Trip_2["return"]; // false
const char* Trip_2_checksum = Trip_2["checksum"]; // "51E57BEB_4"
int Trip_2_transferCount = Trip_2["transferCount"]; // 0
const char* scrB = doc["scrB"];
const char* scrF = doc["scrF"];
const char* serverVersion = doc["serverVersion"]; // "1.4"
const char* dialectVersion = doc["dialectVersion"]; // "1.23"
const char* requestId = doc["requestId"]; // "1676732595584"
Serial.print("Next train to Stockholm - "); Serial.println(Trip_0_LegList_Leg_0_Origin_time);
Serial.print("Then - "); Serial.println(Trip_1_LegList_Leg_0_Origin_time);
Serial.print("Then - "); Serial.println(Trip_2_LegList_Leg_0_Origin_time);
display.clearDisplay();
display.display();
display.setTextSize(1); // Draw 1X-scale text
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Next train to Stockholm");
display.setCursor(0, 32);
display.println(Trip_0_LegList_Leg_0_Origin_time);
display.display(); // Show initial text
// Disconnect
client.stop();
/***************************************************************************
FOR TIME
***************************************************************************/
//String Time = datetime.substring(11, 16);
//String Hour = datetime.substring(11, 13);
//24 hour to 12 hour conversion
/*int h = Hour.toInt();
if (h > 12)
h = h - 12;
else
h = h;
Serial.println(h);
Hour = (String)h;
Time = Time.substring(2);
if (h > 10)
Time = Hour + Time;
else
Time = "0" + Hour + Time;
Serial.print("time - "); Serial.println(Time);
*/
/***************************************************************************
FOR DATE
***************************************************************************/
/*
String Date = datetime.substring(0, 10);
String Day_str = "";
if (Day == 0)
Day_str = "Sv.";
if (Day == 1)
Day_str = "Pirmd.";
if (Day == 2)
Day_str = "Otrd.";
if (Day == 3)
Day_str = "Tr.";
if (Day == 4)
Day_str = "Cet.";
if (Day == 5)
Day_str = "Piektd.";
if (Day == 6)
Day_str = "Sestd.";
Serial.print("date - "); Serial.println(Date);
Serial.print("day - "); Serial.println(Day_str);
display.clearDisplay();
display.setTextSize(2); // Draw 2X-scale text
display.setTextColor(SSD1306_WHITE);
display.setCursor(40, 0);
display.println(Time);
display.setCursor(6, 20);
display.println(Date);
//display.print(",");
display.setCursor(56,40);
display.println(Day_str);
display.display();
*/
delay(60000);
}