From ae5fa17cf001b7e8616161d16309f54b16e62c92 Mon Sep 17 00:00:00 2001 From: iosullivan Date: Sat, 18 Jul 2026 18:53:14 +0800 Subject: [PATCH] Updates --- .gitignore | 3 + examples/src/main.cpp | 204 +++++++++++++++++++++++++++---- examples/src/micropython/main.py | 178 +++++++++++++++++++++++++++ examples/src/secrets.h.example | 3 + 4 files changed, 363 insertions(+), 25 deletions(-) create mode 100644 .gitignore create mode 100644 examples/src/micropython/main.py create mode 100644 examples/src/secrets.h.example diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5d05f14 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.env +secrets.h +local_secrets.py \ No newline at end of file diff --git a/examples/src/main.cpp b/examples/src/main.cpp index 87d0417..f71dfbb 100644 --- a/examples/src/main.cpp +++ b/examples/src/main.cpp @@ -1,28 +1,25 @@ +#include "secrets.h" #include #include #include // Include ArduinoJson library #include #include -const char* ssid = "OSULL"; -const char* password = "thisispassword"; -const char* APIKey = "f4b7aff25779483bba8cac91900f6efc"; // Use HTTP instead of HTTPS for a bit more simplicity String serverName = "http://lapi.transitchicago.com/api/1.0/ttpositions.aspx"; - // Last run time for the loop, don't need to query too often, stored in milliseconds unsigned long lastTime = 0; -// How often to update table (every 60 seconds) -// unsigned long queryTime = 60*1000 -unsigned long queryTime = 5*1000; - +// How often to query API server for updates (every 60 seconds) +unsigned long queryTime = 60*1000; // How far away the train (in seconds) should be from the station to trigger unsigned int time_to_led = 120; +// Current time (last API refresh time) +time_t last_api_time; void setup() { Serial.begin(115200); - WiFi.begin(ssid, password); + WiFi.begin(SECRET_SSID, SECRET_PASS); while (WiFi.status() != WL_CONNECTED) { delay(1000); @@ -32,10 +29,163 @@ void setup() { Serial.println("Connected to WiFi!"); Serial.print("IP Address: "); Serial.println(WiFi.localIP()); + + // Setup array of stations and set a starting ETA + // This is really horrible in C/C++ + struct tm def_tm; + const char* def_dt = "2199-01-01T01:01:01"; + strptime(def_dt, "%Y-%m-%dT%H:%M:%S", &def_tm); + time_t def_time = mktime(&def_tm); + std::unordered_map stations; + stations.insert(std::make_pair(41090, def_time)); //Monroe (Red Line) + stations.insert(std::make_pair(40820, def_time)); //Rosemont (Blue Line) + stations.insert(std::make_pair(41010, def_time)); //Rockwell (Brown Line) + stations.insert(std::make_pair(40470, def_time)); //Racine (Blue Line) + stations.insert(std::make_pair(40190, def_time)); //Sox-35th (Red Line) + stations.insert(std::make_pair(40020, def_time)); //Harlem/Lake (Green Line) + stations.insert(std::make_pair(40900, def_time)); //Howard (Red, Purple & Yellow lines) + stations.insert(std::make_pair(41160, def_time)); //Clinton (Green & Pink lines) + stations.insert(std::make_pair(40230, def_time)); //Cumberland (Blue Line) + stations.insert(std::make_pair(40560, def_time)); //Jackson (Red Line) + stations.insert(std::make_pair(41150, def_time)); //Kedzie (Orange Line) + stations.insert(std::make_pair(40780, def_time)); //Central Park (Pink Line) + stations.insert(std::make_pair(41080, def_time)); //47th (Green Line) + stations.insert(std::make_pair(40510, def_time)); //Garfield (Green Line) + stations.insert(std::make_pair(41050, def_time)); //Linden (Purple Line) + stations.insert(std::make_pair(40120, def_time)); //35th/Archer (Orange Line) + stations.insert(std::make_pair(40570, def_time)); //California (Blue Line) + stations.insert(std::make_pair(40260, def_time)); //State/Lake (Brown, Green, Orange, Pink & Purple lines) + stations.insert(std::make_pair(40130, def_time)); //51st (Green Line) + stations.insert(std::make_pair(41700, def_time)); //Washington/Wabash (Brown, Green, Orange, Purple & Pink lines) + stations.insert(std::make_pair(41000, def_time)); //Cermak-Chinatown (Red Line) + stations.insert(std::make_pair(40340, def_time)); //Berwyn (Red Line) + stations.insert(std::make_pair(41690, def_time)); //Cermak-McCormick Place (Green Line) + stations.insert(std::make_pair(40490, def_time)); //Grand (Blue Line) + stations.insert(std::make_pair(41060, def_time)); //Ashland (Orange Line) + stations.insert(std::make_pair(40090, def_time)); //Damen (Brown Line) + stations.insert(std::make_pair(41280, def_time)); //Jefferson Park (Blue Line) + stations.insert(std::make_pair(40520, def_time)); //Foster (Purple Line) + stations.insert(std::make_pair(40330, def_time)); //Grand (Red Line) + stations.insert(std::make_pair(40280, def_time)); //Central (Green Line) + stations.insert(std::make_pair(40250, def_time)); //Kedzie-Homan (Blue Line) + stations.insert(std::make_pair(40870, def_time)); //Francisco (Brown Line) + stations.insert(std::make_pair(41240, def_time)); //Addison (Blue Line) + stations.insert(std::make_pair(40740, def_time)); //Western (Pink Line) + stations.insert(std::make_pair(41360, def_time)); //California (Green Line) + stations.insert(std::make_pair(41400, def_time)); //Roosevelt (Red, Orange & Green lines) + stations.insert(std::make_pair(41410, def_time)); //Chicago (Blue Line) + stations.insert(std::make_pair(40680, def_time)); //Adams/Wabash (Brown, Green, Orange, Pink & Purple lines) + stations.insert(std::make_pair(40920, def_time)); //Pulaski (Blue Line) + stations.insert(std::make_pair(41210, def_time)); //Wellington (Brown & Purple lines) + stations.insert(std::make_pair(41340, def_time)); //LaSalle (Blue Line) + stations.insert(std::make_pair(41490, def_time)); //Harrison (Red Line) + stations.insert(std::make_pair(41350, def_time)); //Oak Park (Green Line) + stations.insert(std::make_pair(40040, def_time)); //Quincy/Wells (Brown, Orange, Purple & Pink lines) + stations.insert(std::make_pair(40390, def_time)); //Forest Park (Blue Line) + stations.insert(std::make_pair(41130, def_time)); //Halsted (Orange Line) + stations.insert(std::make_pair(40960, def_time)); //Pulaski (Orange Line) + stations.insert(std::make_pair(40830, def_time)); //18th (Pink Line) + stations.insert(std::make_pair(40140, def_time)); //Dempster-Skokie  (Yellow Line) + stations.insert(std::make_pair(41320, def_time)); //Belmont (Red, Brown & Purple lines) + stations.insert(std::make_pair(41660, def_time)); //Lake (Red Line) + stations.insert(std::make_pair(40910, def_time)); //63rd (Red Line) + stations.insert(std::make_pair(40690, def_time)); //Dempster (Purple Line) + stations.insert(std::make_pair(40460, def_time)); //Merchandise Mart (Brown & Purple lines) + stations.insert(std::make_pair(40710, def_time)); //Chicago (Brown & Purple lines) + stations.insert(std::make_pair(40530, def_time)); //Diversey (Brown & Purple lines) + stations.insert(std::make_pair(40850, def_time)); //Harold Washington Library-State/Van Buren (Brown, Orange, Purple & Pink lines) + stations.insert(std::make_pair(41020, def_time)); //Logan Square (Blue Line) + stations.insert(std::make_pair(41030, def_time)); //Polk (Pink Line) + stations.insert(std::make_pair(41300, def_time)); //Loyola (Red Line) + stations.insert(std::make_pair(40310, def_time)); //Western (Orange Line) + stations.insert(std::make_pair(40430, def_time)); //Clinton (Blue Line) + stations.insert(std::make_pair(40320, def_time)); //Division (Blue Line) + stations.insert(std::make_pair(41510, def_time)); //Morgan (Green & Pink lines) + stations.insert(std::make_pair(40270, def_time)); //Main (Purple Line) + stations.insert(std::make_pair(41330, def_time)); //Montrose (Blue Line) + stations.insert(std::make_pair(40350, def_time)); //UIC-Halsted (Blue Line) + stations.insert(std::make_pair(40940, def_time)); //Halsted (Green Line) + stations.insert(std::make_pair(41480, def_time)); //Western (Brown Line) + stations.insert(std::make_pair(40030, def_time)); //Pulaski (Green Line) + stations.insert(std::make_pair(41190, def_time)); //Jarvis (Red Line) + stations.insert(std::make_pair(41170, def_time)); //Garfield (Red Line) + stations.insert(std::make_pair(40050, def_time)); //Davis (Purple Line) + stations.insert(std::make_pair(40750, def_time)); //Harlem (Blue Line - O'Hare Branch) + stations.insert(std::make_pair(41200, def_time)); //Argyle (Red Line) + stations.insert(std::make_pair(40440, def_time)); //California (Pink Line) + stations.insert(std::make_pair(40360, def_time)); //Southport (Brown Line) + stations.insert(std::make_pair(40760, def_time)); //Granville (Red Line) + stations.insert(std::make_pair(40480, def_time)); //Cicero (Green Line) + stations.insert(std::make_pair(40730, def_time)); //Washington/Wells (Brown, Orange, Purple & Pink lines) + stations.insert(std::make_pair(40580, def_time)); //54th/Cermak (Pink Line) + stations.insert(std::make_pair(40650, def_time)); //North/Clybourn (Red Line) + stations.insert(std::make_pair(40220, def_time)); //Western (Blue Line - Forest Park Branch) + stations.insert(std::make_pair(40070, def_time)); //Jackson (Blue Line) + stations.insert(std::make_pair(41440, def_time)); //Addison (Brown Line) + stations.insert(std::make_pair(41670, def_time)); //Conservatory (Green Line) + stations.insert(std::make_pair(40790, def_time)); //Monroe (Blue Line) + stations.insert(std::make_pair(40180, def_time)); //Oak Park (Blue Line) + stations.insert(std::make_pair(40400, def_time)); //Noyes (Purple Line) + stations.insert(std::make_pair(41260, def_time)); //Austin (Green Line) + stations.insert(std::make_pair(40600, def_time)); //Kostner (Pink Line) + stations.insert(std::make_pair(40670, def_time)); //Western (Blue Line - O'Hare Branch) + stations.insert(std::make_pair(40100, def_time)); //Morse (Red Line) + stations.insert(std::make_pair(40770, def_time)); //Lawrence (Red Line) + stations.insert(std::make_pair(40150, def_time)); //Pulaski (Pink Line) + stations.insert(std::make_pair(40660, def_time)); //Armitage (Brown & Purple lines) + stations.insert(std::make_pair(40540, def_time)); //Wilson (Red & Purple lines) + stations.insert(std::make_pair(40380, def_time)); //Clark/Lake (Blue, Brown, Green, Orange, Purple & Pink lines) + stations.insert(std::make_pair(40160, def_time)); //LaSalle/Van Buren (Brown, Orange, Purple & Pink lines) + stations.insert(std::make_pair(40700, def_time)); //Laramie (Green Line) + stations.insert(std::make_pair(40240, def_time)); //79th (Red Line) + stations.insert(std::make_pair(40290, def_time)); //Ashland/63rd (Green Line) + stations.insert(std::make_pair(40450, def_time)); //95th/Dan Ryan (Red Line) + stations.insert(std::make_pair(40210, def_time)); //Damen (Pink Line) + stations.insert(std::make_pair(41140, def_time)); //King Drive (Green Line) + stations.insert(std::make_pair(41710, def_time)); //Damen (Green Line) + stations.insert(std::make_pair(40980, def_time)); //Harlem (Blue Line - Forest Park Branch) + stations.insert(std::make_pair(41270, def_time)); //43rd (Green Line) + stations.insert(std::make_pair(40080, def_time)); //Sheridan (Red Line) + stations.insert(std::make_pair(40610, def_time)); //Ridgeland (Green Line) + stations.insert(std::make_pair(41070, def_time)); //Kedzie (Green Line) + stations.insert(std::make_pair(41430, def_time)); //87th (Red Line) + stations.insert(std::make_pair(41250, def_time)); //Central (Purple Line) + stations.insert(std::make_pair(40880, def_time)); //Thorndale (Red Line) + stations.insert(std::make_pair(41680, def_time)); //Oakton-Skokie (Yellow Line) + stations.insert(std::make_pair(41120, def_time)); //35th-Bronzeville-IIT (Green Line) + stations.insert(std::make_pair(41460, def_time)); //Irving Park (Brown Line) + stations.insert(std::make_pair(41220, def_time)); //Fullerton (Red, Brown & Purple lines) + stations.insert(std::make_pair(40990, def_time)); //69th (Red Line) + stations.insert(std::make_pair(41040, def_time)); //Kedzie (Pink Line) + stations.insert(std::make_pair(40800, def_time)); //Sedgwick (Brown & Purple lines) + stations.insert(std::make_pair(40060, def_time)); //Belmont (Blue Line) + stations.insert(std::make_pair(40840, def_time)); //South Boulevard (Purple Line) + stations.insert(std::make_pair(40170, def_time)); //Ashland (Green & Pink lines) + stations.insert(std::make_pair(40810, def_time)); //Illinois Medical District (Blue Line) + stations.insert(std::make_pair(41230, def_time)); //47th (Red Line) + stations.insert(std::make_pair(41500, def_time)); //Montrose (Brown Line) + stations.insert(std::make_pair(40930, def_time)); //Midway (Orange Line) + stations.insert(std::make_pair(40550, def_time)); //Irving Park (Blue Line) + stations.insert(std::make_pair(40370, def_time)); //Washington (Blue Line) + stations.insert(std::make_pair(40890, def_time)); //O'Hare (Blue Line) + stations.insert(std::make_pair(40630, def_time)); //Clark/Division (Red Line) + stations.insert(std::make_pair(41420, def_time)); //Addison (Red Line) + stations.insert(std::make_pair(41290, def_time)); //Kimball (Brown Line) + stations.insert(std::make_pair(40300, def_time)); //Indiana (Green Line) + stations.insert(std::make_pair(40420, def_time)); //Cicero (Pink Line) + stations.insert(std::make_pair(40720, def_time)); //Cottage Grove (Green Line) + stations.insert(std::make_pair(41380, def_time)); //Bryn Mawr (Red Line) + stations.insert(std::make_pair(41450, def_time)); //Chicago (Red Line) + stations.insert(std::make_pair(40590, def_time)); //Damen (Blue Line) + stations.insert(std::make_pair(41180, def_time)); //Kedzie (Brown Line) + stations.insert(std::make_pair(40010, def_time)); //Austin (Blue Line) + stations.insert(std::make_pair(41310, def_time)); //Paulina (Brown Line) + stations.insert(std::make_pair(40970, def_time)); //Cicero (Blue Line) + } void loop() { - // Only run if we haven't run in queryTime + // It's been at least 'queryTime' seconds since we last checked the API. Update the arrival times. if ((millis() - lastTime) > queryTime) { // Query the HTTP endpoint with a POST request and parameters, only interested in Blue route for now const char* route = "Blue"; @@ -43,7 +193,7 @@ void loop() { // http object let's us query a webserver HTTPClient http; - String serverPath = serverName + "?key=" + APIKey + "&rt=" + route + "&outputType=JSON"; + String serverPath = serverName + "?key=" + SECRET_APIKEY + "&rt=" + route + "&outputType=JSON"; http.useHTTP10(true); http.begin(serverPath.c_str()); int httpResponse = http.GET(); @@ -56,34 +206,38 @@ void loop() { const char* time_c = location_json["ctatt"]["tmst"]; struct tm time_tm; strptime(time_c, "%Y-%m-%dT%H:%M:%S", &time_tm); - time_t time = mktime(&time_tm); - - Serial.print("Time of query: "); - Serial.println(time_tm.tm_hour); + last_api_time = mktime(&time_tm); const char* nextStaID = location_json["ctatt"]["route"][0]["train"][0]["nextStaID"]; Serial.println(nextStaID); // Move through the array to find for (JsonObject train : location_json["ctatt"]["route"][0]["train"].as()) { - unsigned int nextSta = train["nextStaId"]; + // Save station ID + unsigned int station = train["nextStaId"]; const char* arrTime = train["arrT"]; // Annoying multistep process to get ISO time into time_t format struct tm eta_tm; strptime(arrTime, "%Y-%m-%dT%H:%M:%S", &eta_tm); - time_t eta = mktime(&eta_tm); - // Save station name for pretty output - const char* stationName = train["nextStaNm"]; + // Update next ETA for this station + stations[station] = mktime(&eta_tm); - double difference = difftime(eta, time); - - if(difference < time_to_led) { - String output = String("Train arriving soon at ") + stationName + " in " + difference + " seconds."; - Serial.println(output); - } + Serial.println(stations[station]) } lastTime = millis(); } + + /* + double difference = difftime(stations[station], last_api_time); + + if(difference < time_to_led) { + String output = String("Train arriving soon at ") + stationName + " in " + difference + " seconds."; + Serial.println(output); + } + */ + + delay(5000) + } \ No newline at end of file diff --git a/examples/src/micropython/main.py b/examples/src/micropython/main.py new file mode 100644 index 0000000..2a9e001 --- /dev/null +++ b/examples/src/micropython/main.py @@ -0,0 +1,178 @@ +import urequests +import time +import network +import local_secrets +import datetime + +# Create network in station mode, activate it and connect +wlan = network.WLAN(network.STA_IF) + +wlan.active(True) +wlan.connect(local_secrets.SSID, local_secrets.PASS) + +# Wait for the connection (esp32 can take some time) +max_wait = 10 +while max_wait > 0: + if wlan.isconnected(): + break + max_wait -= 1 + print('Waiting for connection...') + time.sleep(1) + +# Build up list of stations +# Set ETA as long distance time +eta_def = datetime.datetime(2199,1,1,0,0,0) + +# Stations dictionary contains name, the eta of the next train and the LED index +stations = {} +stations[41090] = { 'name':' Monroe (Red Line)', 'eta':eta_def, 'led_index':'1'} +stations[40820] = { 'name':' Rosemont (Blue Line)', 'eta':eta_def, 'led_index':'2'} +stations[41010] = { 'name':' Rockwell (Brown Line)', 'eta':eta_def, 'led_index':'3'} +stations[40470] = { 'name':' Racine (Blue Line)', 'eta':eta_def, 'led_index':'4'} +stations[40190] = { 'name':' Sox-35th (Red Line)', 'eta':eta_def, 'led_index':'5'} +stations[40020] = { 'name':' Harlem/Lake (Green Line)', 'eta':eta_def, 'led_index':'6'} +stations[40900] = { 'name':' Howard (Red Purple & Yellow lines)', 'eta':eta_def, 'led_index':'7'} +stations[41160] = { 'name':' Clinton (Green & Pink lines)', 'eta':eta_def, 'led_index':'8'} +stations[40230] = { 'name':' Cumberland (Blue Line)', 'eta':eta_def, 'led_index':'9'} +stations[40560] = { 'name':' Jackson (Red Line)', 'eta':eta_def, 'led_index':'10'} +stations[41150] = { 'name':' Kedzie (Orange Line)', 'eta':eta_def, 'led_index':'11'} +stations[40780] = { 'name':' Central Park (Pink Line)', 'eta':eta_def, 'led_index':'12'} +stations[41080] = { 'name':' 47th (Green Line)', 'eta':eta_def, 'led_index':'13'} +stations[40510] = { 'name':' Garfield (Green Line)', 'eta':eta_def, 'led_index':'14'} +stations[41050] = { 'name':' Linden (Purple Line)', 'eta':eta_def, 'led_index':'15'} +stations[40120] = { 'name':' 35th/Archer (Orange Line)', 'eta':eta_def, 'led_index':'16'} +stations[40570] = { 'name':' California (Blue Line)', 'eta':eta_def, 'led_index':'17'} +stations[40260] = { 'name':' State/Lake (Brown Green Orange Pink & Purple lines)', 'eta':eta_def, 'led_index':'18'} +stations[40130] = { 'name':' 51st (Green Line)', 'eta':eta_def, 'led_index':'19'} +stations[41700] = { 'name':' Washington/Wabash (Brown Green Orange Purple & Pink lines)', 'eta':eta_def, 'led_index':'20'} +stations[41000] = { 'name':' Cermak-Chinatown (Red Line)', 'eta':eta_def, 'led_index':'21'} +stations[40340] = { 'name':' Berwyn (Red Line)', 'eta':eta_def, 'led_index':'22'} +stations[41690] = { 'name':' Cermak-McCormick Place (Green Line)', 'eta':eta_def, 'led_index':'23'} +stations[40490] = { 'name':' Grand (Blue Line)', 'eta':eta_def, 'led_index':'24'} +stations[41060] = { 'name':' Ashland (Orange Line)', 'eta':eta_def, 'led_index':'25'} +stations[40090] = { 'name':' Damen (Brown Line)', 'eta':eta_def, 'led_index':'26'} +stations[41280] = { 'name':' Jefferson Park (Blue Line)', 'eta':eta_def, 'led_index':'27'} +stations[40520] = { 'name':' Foster (Purple Line)', 'eta':eta_def, 'led_index':'28'} +stations[40330] = { 'name':' Grand (Red Line)', 'eta':eta_def, 'led_index':'29'} +stations[40280] = { 'name':' Central (Green Line)', 'eta':eta_def, 'led_index':'30'} +stations[40250] = { 'name':' Kedzie-Homan (Blue Line)', 'eta':eta_def, 'led_index':'31'} +stations[40870] = { 'name':' Francisco (Brown Line)', 'eta':eta_def, 'led_index':'32'} +stations[41240] = { 'name':' Addison (Blue Line)', 'eta':eta_def, 'led_index':'33'} +stations[40740] = { 'name':' Western (Pink Line)', 'eta':eta_def, 'led_index':'34'} +stations[41360] = { 'name':' California (Green Line)', 'eta':eta_def, 'led_index':'35'} +stations[41400] = { 'name':' Roosevelt (Red Orange & Green lines)', 'eta':eta_def, 'led_index':'36'} +stations[41410] = { 'name':' Chicago (Blue Line)', 'eta':eta_def, 'led_index':'37'} +stations[40680] = { 'name':' Adams/Wabash (Brown Green Orange Pink & Purple lines)', 'eta':eta_def, 'led_index':'38'} +stations[40920] = { 'name':' Pulaski (Blue Line)', 'eta':eta_def, 'led_index':'39'} +stations[41210] = { 'name':' Wellington (Brown & Purple lines)', 'eta':eta_def, 'led_index':'40'} +stations[41340] = { 'name':' LaSalle (Blue Line)', 'eta':eta_def, 'led_index':'41'} +stations[41490] = { 'name':' Harrison (Red Line)', 'eta':eta_def, 'led_index':'42'} +stations[41350] = { 'name':' Oak Park (Green Line)', 'eta':eta_def, 'led_index':'43'} +stations[40040] = { 'name':' Quincy/Wells (Brown Orange Purple & Pink lines)', 'eta':eta_def, 'led_index':'44'} +stations[40390] = { 'name':' Forest Park (Blue Line)', 'eta':eta_def, 'led_index':'45'} +stations[41130] = { 'name':' Halsted (Orange Line)', 'eta':eta_def, 'led_index':'46'} +stations[40960] = { 'name':' Pulaski (Orange Line)', 'eta':eta_def, 'led_index':'47'} +stations[40830] = { 'name':' 18th (Pink Line)', 'eta':eta_def, 'led_index':'48'} +stations[40140] = { 'name':' Dempster-Skokie  (Yellow Line)', 'eta':eta_def, 'led_index':'49'} +stations[41320] = { 'name':' Belmont (Red Brown & Purple lines)', 'eta':eta_def, 'led_index':'50'} +stations[41660] = { 'name':' Lake (Red Line)', 'eta':eta_def, 'led_index':'51'} +stations[40910] = { 'name':' 63rd (Red Line)', 'eta':eta_def, 'led_index':'52'} +stations[40690] = { 'name':' Dempster (Purple Line)', 'eta':eta_def, 'led_index':'53'} +stations[40460] = { 'name':' Merchandise Mart (Brown & Purple lines)', 'eta':eta_def, 'led_index':'54'} +stations[40710] = { 'name':' Chicago (Brown & Purple lines)', 'eta':eta_def, 'led_index':'55'} +stations[40530] = { 'name':' Diversey (Brown & Purple lines)', 'eta':eta_def, 'led_index':'56'} +stations[40850] = { 'name':' Harold Washington Library-State/Van Buren (Brown Orange Purple & Pink lines)', 'eta':eta_def, 'led_index':'57'} +stations[41020] = { 'name':' Logan Square (Blue Line)', 'eta':eta_def, 'led_index':'58'} +stations[41030] = { 'name':' Polk (Pink Line)', 'eta':eta_def, 'led_index':'59'} +stations[41300] = { 'name':' Loyola (Red Line)', 'eta':eta_def, 'led_index':'60'} +stations[40310] = { 'name':' Western (Orange Line)', 'eta':eta_def, 'led_index':'61'} +stations[40430] = { 'name':' Clinton (Blue Line)', 'eta':eta_def, 'led_index':'62'} +stations[40320] = { 'name':' Division (Blue Line)', 'eta':eta_def, 'led_index':'63'} +stations[41510] = { 'name':' Morgan (Green & Pink lines)', 'eta':eta_def, 'led_index':'64'} +stations[40270] = { 'name':' Main (Purple Line)', 'eta':eta_def, 'led_index':'65'} +stations[41330] = { 'name':' Montrose (Blue Line)', 'eta':eta_def, 'led_index':'66'} +stations[40350] = { 'name':' UIC-Halsted (Blue Line)', 'eta':eta_def, 'led_index':'67'} +stations[40940] = { 'name':' Halsted (Green Line)', 'eta':eta_def, 'led_index':'68'} +stations[41480] = { 'name':' Western (Brown Line)', 'eta':eta_def, 'led_index':'69'} +stations[40030] = { 'name':' Pulaski (Green Line)', 'eta':eta_def, 'led_index':'70'} +stations[41190] = { 'name':' Jarvis (Red Line)', 'eta':eta_def, 'led_index':'71'} +stations[41170] = { 'name':' Garfield (Red Line)', 'eta':eta_def, 'led_index':'72'} +stations[40050] = { 'name':' Davis (Purple Line)', 'eta':eta_def, 'led_index':'73'} +stations[40750] = { 'name':' Harlem (Blue Line - OHare Branch)', 'eta':eta_def, 'led_index':'74'} +stations[41200] = { 'name':' Argyle (Red Line)', 'eta':eta_def, 'led_index':'75'} +stations[40440] = { 'name':' California (Pink Line)', 'eta':eta_def, 'led_index':'76'} +stations[40360] = { 'name':' Southport (Brown Line)', 'eta':eta_def, 'led_index':'77'} +stations[40760] = { 'name':' Granville (Red Line)', 'eta':eta_def, 'led_index':'78'} +stations[40480] = { 'name':' Cicero (Green Line)', 'eta':eta_def, 'led_index':'79'} +stations[40730] = { 'name':' Washington/Wells (Brown Orange Purple & Pink lines)', 'eta':eta_def, 'led_index':'80'} +stations[40580] = { 'name':' 54th/Cermak (Pink Line)', 'eta':eta_def, 'led_index':'81'} +stations[40650] = { 'name':' North/Clybourn (Red Line)', 'eta':eta_def, 'led_index':'82'} +stations[40220] = { 'name':' Western (Blue Line - Forest Park Branch)', 'eta':eta_def, 'led_index':'83'} +stations[40070] = { 'name':' Jackson (Blue Line)', 'eta':eta_def, 'led_index':'84'} +stations[41440] = { 'name':' Addison (Brown Line)', 'eta':eta_def, 'led_index':'85'} +stations[41670] = { 'name':' Conservatory (Green Line)', 'eta':eta_def, 'led_index':'86'} +stations[40790] = { 'name':' Monroe (Blue Line)', 'eta':eta_def, 'led_index':'87'} +stations[40180] = { 'name':' Oak Park (Blue Line)', 'eta':eta_def, 'led_index':'88'} +stations[40400] = { 'name':' Noyes (Purple Line)', 'eta':eta_def, 'led_index':'89'} +stations[41260] = { 'name':' Austin (Green Line)', 'eta':eta_def, 'led_index':'90'} +stations[40600] = { 'name':' Kostner (Pink Line)', 'eta':eta_def, 'led_index':'91'} +stations[40670] = { 'name':' Western (Blue Line - OHare Branch)', 'eta':eta_def, 'led_index':'92'} +stations[40100] = { 'name':' Morse (Red Line)', 'eta':eta_def, 'led_index':'93'} +stations[40770] = { 'name':' Lawrence (Red Line)', 'eta':eta_def, 'led_index':'94'} +stations[40150] = { 'name':' Pulaski (Pink Line)', 'eta':eta_def, 'led_index':'95'} +stations[40660] = { 'name':' Armitage (Brown & Purple lines)', 'eta':eta_def, 'led_index':'96'} +stations[40540] = { 'name':' Wilson (Red & Purple lines)', 'eta':eta_def, 'led_index':'97'} +stations[40380] = { 'name':' Clark/Lake (Blue Brown Green Orange Purple & Pink lines)', 'eta':eta_def, 'led_index':'98'} +stations[40160] = { 'name':' LaSalle/Van Buren (Brown Orange Purple & Pink lines)', 'eta':eta_def, 'led_index':'99'} +stations[40700] = { 'name':' Laramie (Green Line)', 'eta':eta_def, 'led_index':'100'} +stations[40240] = { 'name':' 79th (Red Line)', 'eta':eta_def, 'led_index':'101'} +stations[40290] = { 'name':' Ashland/63rd (Green Line)', 'eta':eta_def, 'led_index':'102'} +stations[40450] = { 'name':' 95th/Dan Ryan (Red Line)', 'eta':eta_def, 'led_index':'103'} +stations[40210] = { 'name':' Damen (Pink Line)', 'eta':eta_def, 'led_index':'104'} +stations[41140] = { 'name':' King Drive (Green Line)', 'eta':eta_def, 'led_index':'105'} +stations[41710] = { 'name':' Damen (Green Line)', 'eta':eta_def, 'led_index':'106'} +stations[40980] = { 'name':' Harlem (Blue Line - Forest Park Branch)', 'eta':eta_def, 'led_index':'107'} +stations[41270] = { 'name':' 43rd (Green Line)', 'eta':eta_def, 'led_index':'108'} +stations[40080] = { 'name':' Sheridan (Red Line)', 'eta':eta_def, 'led_index':'109'} +stations[40610] = { 'name':' Ridgeland (Green Line)', 'eta':eta_def, 'led_index':'110'} +stations[41070] = { 'name':' Kedzie (Green Line)', 'eta':eta_def, 'led_index':'111'} +stations[41430] = { 'name':' 87th (Red Line)', 'eta':eta_def, 'led_index':'112'} +stations[41250] = { 'name':' Central (Purple Line)', 'eta':eta_def, 'led_index':'113'} +stations[40880] = { 'name':' Thorndale (Red Line)', 'eta':eta_def, 'led_index':'114'} +stations[41680] = { 'name':' Oakton-Skokie (Yellow Line)', 'eta':eta_def, 'led_index':'115'} +stations[41120] = { 'name':' 35th-Bronzeville-IIT (Green Line)', 'eta':eta_def, 'led_index':'116'} +stations[41460] = { 'name':' Irving Park (Brown Line)', 'eta':eta_def, 'led_index':'117'} +stations[41220] = { 'name':' Fullerton (Red Brown & Purple lines)', 'eta':eta_def, 'led_index':'118'} +stations[40990] = { 'name':' 69th (Red Line)', 'eta':eta_def, 'led_index':'119'} +stations[41040] = { 'name':' Kedzie (Pink Line)', 'eta':eta_def, 'led_index':'120'} +stations[40800] = { 'name':' Sedgwick (Brown & Purple lines)', 'eta':eta_def, 'led_index':'121'} +stations[40060] = { 'name':' Belmont (Blue Line)', 'eta':eta_def, 'led_index':'122'} +stations[40840] = { 'name':' South Boulevard (Purple Line)', 'eta':eta_def, 'led_index':'123'} +stations[40170] = { 'name':' Ashland (Green & Pink lines)', 'eta':eta_def, 'led_index':'124'} +stations[40810] = { 'name':' Illinois Medical District (Blue Line)', 'eta':eta_def, 'led_index':'125'} +stations[41230] = { 'name':' 47th (Red Line)', 'eta':eta_def, 'led_index':'126'} +stations[41500] = { 'name':' Montrose (Brown Line)', 'eta':eta_def, 'led_index':'127'} +stations[40930] = { 'name':' Midway (Orange Line)', 'eta':eta_def, 'led_index':'128'} +stations[40550] = { 'name':' Irving Park (Blue Line)', 'eta':eta_def, 'led_index':'129'} +stations[40370] = { 'name':' Washington (Blue Line)', 'eta':eta_def, 'led_index':'130'} +stations[40890] = { 'name':' OHare (Blue Line)', 'eta':eta_def, 'led_index':'131'} +stations[40630] = { 'name':' Clark/Division (Red Line)', 'eta':eta_def, 'led_index':'132'} +stations[41420] = { 'name':' Addison (Red Line)', 'eta':eta_def, 'led_index':'133'} +stations[41290] = { 'name':' Kimball (Brown Line)', 'eta':eta_def, 'led_index':'134'} +stations[40300] = { 'name':' Indiana (Green Line)', 'eta':eta_def, 'led_index':'135'} +stations[40420] = { 'name':' Cicero (Pink Line)', 'eta':eta_def, 'led_index':'136'} +stations[40720] = { 'name':' Cottage Grove (Green Line)', 'eta':eta_def, 'led_index':'137'} +stations[41380] = { 'name':' Bryn Mawr (Red Line)', 'eta':eta_def, 'led_index':'138'} +stations[41450] = { 'name':' Chicago (Red Line)', 'eta':eta_def, 'led_index':'139'} +stations[40590] = { 'name':' Damen (Blue Line)', 'eta':eta_def, 'led_index':'140'} +stations[41180] = { 'name':' Kedzie (Brown Line)', 'eta':eta_def, 'led_index':'141'} +stations[40010] = { 'name':' Austin (Blue Line)', 'eta':eta_def, 'led_index':'142'} +stations[41310] = { 'name':' Paulina (Brown Line)', 'eta':eta_def, 'led_index':'143'} +stations[40970] = { 'name':' Cicero (Blue Line)', 'eta':eta_def, 'led_index':'144'} + + + + + +response = urequests.get("https://lapi.transitchicago.com/api/1.0/ttpositions.aspx?key=&rt=Blue&outputType=JSON") + diff --git a/examples/src/secrets.h.example b/examples/src/secrets.h.example new file mode 100644 index 0000000..69b20bb --- /dev/null +++ b/examples/src/secrets.h.example @@ -0,0 +1,3 @@ +#define SECRET_SSID "WIFINAME" +#define SECRET_PASS "WIFIPASS" +#define SECRET_APIKEY "abcdef1234567890abcdef"