Updates for micropython example

This commit is contained in:
iosullivan committed 2026-07-18 23:59:20 +08:00
1 parent c6360b0fb2
commit d3b81d5793
1 file changed
+217 -153
+217 -153
View File
@@ -1,14 +1,26 @@
import urequests import requests
import time from time import time, gmtime, mktime,sleep
import network import network
import local_secrets import local_secrets
import datetime import machine
import ntptime
APIKEY = local_secrets.APIKEY
SSID = local_secrets.SSID
PASS = local_secrets.PASS
def time_from_iso(datetime_str):
[yyyy, mm, dd] = [int(i) for i in datetime_str.split('T')[0].split('-')]
[h,m,s] = [int(i) for i in datetime_str.split('T')[1].split(':')]
time_u = mktime((yyyy, mm, dd, h, m, s, 0, 0))
return time_u
def connect_wifi():
# Create network in station mode, activate it and connect # Create network in station mode, activate it and connect
wlan = network.WLAN(network.STA_IF) wlan = network.WLAN(network.STA_IF)
wlan.active(True) wlan.active(True)
wlan.connect(local_secrets.SSID, local_secrets.PASS) wlan.connect(SSID, PASS)
# Wait for the connection (esp32 can take some time) # Wait for the connection (esp32 can take some time)
max_wait = 10 max_wait = 10
@@ -17,163 +29,215 @@ while max_wait > 0:
break break
max_wait -= 1 max_wait -= 1
print('Waiting for connection...') print('Waiting for connection...')
time.sleep(1) sleep(1)
def init_LEDs():
# Sets up LEDs and their ports.
led = machine.Pin(15, machine.Pin.OUT)
led.off()
# Connect Wifi
connect_wifi()
# Synchronize time of RTC with NTP
try:
ntptime.settime()
print("Time synchronized successfully")
except Exception as e:
print("Error synchronizing time:", e)
last_query = mktime([2000,1,1,0,0,0,0,0]) # Set last query default (will run on first run)
query_period = 120 # Query the API at most every 2 minutes
# Build up list of stations # Build up list of stations
# Set ETA as long distance time eta_def = mktime([2062,1,1,0,0,0,0,0]) # Set ETA as long time in future
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 dictionary contains name, the eta of the next train and the LED index
stations = {} stations = {}
# stations[41090] = { 'name':' Monroe (Red Line)', 'eta':eta_def, 'led_index':'1'} stations[41090] = { 'name':' Monroe (Red Line)', 'eta':eta_def, 'led_index':'1'}
stations[40820] = { 'name':' Rosemont (Blue Line)', 'eta':eta_def, 'led_index':'15'} stations[40820] = { 'name':' Rosemont (Blue Line)', 'eta':eta_def, 'led_index':'15'}
# stations[41010] = { 'name':' Rockwell (Brown Line)', 'eta':eta_def, 'led_index':'3'} 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[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[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[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[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[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[40230] = { 'name':' Cumberland (Blue Line)', 'eta':eta_def, 'led_index':'9'}
# stations[40560] = { 'name':' Jackson (Red Line)', 'eta':eta_def, 'led_index':'10'} 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[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[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[41080] = { 'name':' 47th (Green Line)', 'eta':eta_def, 'led_index':'13'}
# stations[40510] = { 'name':' Garfield (Green Line)', 'eta':eta_def, 'led_index':'14'} 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[41050] = { 'name':' Linden (Purple Line)', 'eta':eta_def, 'led_index':'2'}
# stations[40120] = { 'name':' 35th/Archer (Orange Line)', 'eta':eta_def, 'led_index':'16'} 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[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[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[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[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[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[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[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[40490] = { 'name':' Grand (Blue Line)', 'eta':eta_def, 'led_index':'24'}
# stations[41060] = { 'name':' Ashland (Orange Line)', 'eta':eta_def, 'led_index':'25'} 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[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[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[40520] = { 'name':' Foster (Purple Line)', 'eta':eta_def, 'led_index':'28'}
# stations[40330] = { 'name':' Grand (Red Line)', 'eta':eta_def, 'led_index':'29'} 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[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[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[40870] = { 'name':' Francisco (Brown Line)', 'eta':eta_def, 'led_index':'32'}
# stations[41240] = { 'name':' Addison (Blue Line)', 'eta':eta_def, 'led_index':'33'} 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[40740] = { 'name':' Western (Pink Line)', 'eta':eta_def, 'led_index':'34'}
# stations[41360] = { 'name':' California (Green Line)', 'eta':eta_def, 'led_index':'35'} 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[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[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[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[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[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[41340] = { 'name':' LaSalle (Blue Line)', 'eta':eta_def, 'led_index':'41'}
# stations[41490] = { 'name':' Harrison (Red Line)', 'eta':eta_def, 'led_index':'42'} 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[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[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[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[41130] = { 'name':' Halsted (Orange Line)', 'eta':eta_def, 'led_index':'46'}
# stations[40960] = { 'name':' Pulaski (Orange Line)', 'eta':eta_def, 'led_index':'47'} 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[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[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[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[41660] = { 'name':' Lake (Red Line)', 'eta':eta_def, 'led_index':'51'}
# stations[40910] = { 'name':' 63rd (Red Line)', 'eta':eta_def, 'led_index':'52'} 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[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[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[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[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[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[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[41030] = { 'name':' Polk (Pink Line)', 'eta':eta_def, 'led_index':'59'}
# stations[41300] = { 'name':' Loyola (Red Line)', 'eta':eta_def, 'led_index':'60'} 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[40310] = { 'name':' Western (Orange Line)', 'eta':eta_def, 'led_index':'61'}
# stations[40430] = { 'name':' Clinton (Blue Line)', 'eta':eta_def, 'led_index':'62'} 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[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[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[40270] = { 'name':' Main (Purple Line)', 'eta':eta_def, 'led_index':'65'}
# stations[41330] = { 'name':' Montrose (Blue Line)', 'eta':eta_def, 'led_index':'66'} 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[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[40940] = { 'name':' Halsted (Green Line)', 'eta':eta_def, 'led_index':'68'}
# stations[41480] = { 'name':' Western (Brown Line)', 'eta':eta_def, 'led_index':'69'} 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[40030] = { 'name':' Pulaski (Green Line)', 'eta':eta_def, 'led_index':'70'}
# stations[41190] = { 'name':' Jarvis (Red Line)', 'eta':eta_def, 'led_index':'71'} 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[41170] = { 'name':' Garfield (Red Line)', 'eta':eta_def, 'led_index':'72'}
# stations[40050] = { 'name':' Davis (Purple Line)', 'eta':eta_def, 'led_index':'73'} 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[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[41200] = { 'name':' Argyle (Red Line)', 'eta':eta_def, 'led_index':'75'}
# stations[40440] = { 'name':' California (Pink Line)', 'eta':eta_def, 'led_index':'76'} 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[40360] = { 'name':' Southport (Brown Line)', 'eta':eta_def, 'led_index':'77'}
# stations[40760] = { 'name':' Granville (Red Line)', 'eta':eta_def, 'led_index':'78'} 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[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[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[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[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[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[40070] = { 'name':' Jackson (Blue Line)', 'eta':eta_def, 'led_index':'84'}
# stations[41440] = { 'name':' Addison (Brown Line)', 'eta':eta_def, 'led_index':'85'} 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[41670] = { 'name':' Conservatory (Green Line)', 'eta':eta_def, 'led_index':'86'}
# stations[40790] = { 'name':' Monroe (Blue Line)', 'eta':eta_def, 'led_index':'87'} 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[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[40400] = { 'name':' Noyes (Purple Line)', 'eta':eta_def, 'led_index':'89'}
# stations[41260] = { 'name':' Austin (Green Line)', 'eta':eta_def, 'led_index':'90'} 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[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[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[40100] = { 'name':' Morse (Red Line)', 'eta':eta_def, 'led_index':'93'}
# stations[40770] = { 'name':' Lawrence (Red Line)', 'eta':eta_def, 'led_index':'94'} 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[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[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[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[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[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[40700] = { 'name':' Laramie (Green Line)', 'eta':eta_def, 'led_index':'100'}
# stations[40240] = { 'name':' 79th (Red Line)', 'eta':eta_def, 'led_index':'101'} 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[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[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[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[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[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[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[41270] = { 'name':' 43rd (Green Line)', 'eta':eta_def, 'led_index':'108'}
# stations[40080] = { 'name':' Sheridan (Red Line)', 'eta':eta_def, 'led_index':'109'} 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[40610] = { 'name':' Ridgeland (Green Line)', 'eta':eta_def, 'led_index':'110'}
# stations[41070] = { 'name':' Kedzie (Green Line)', 'eta':eta_def, 'led_index':'111'} 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[41430] = { 'name':' 87th (Red Line)', 'eta':eta_def, 'led_index':'112'}
# stations[41250] = { 'name':' Central (Purple Line)', 'eta':eta_def, 'led_index':'113'} 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[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[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[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[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[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[40990] = { 'name':' 69th (Red Line)', 'eta':eta_def, 'led_index':'119'}
# stations[41040] = { 'name':' Kedzie (Pink Line)', 'eta':eta_def, 'led_index':'120'} 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[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[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[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[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[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[41230] = { 'name':' 47th (Red Line)', 'eta':eta_def, 'led_index':'126'}
# stations[41500] = { 'name':' Montrose (Brown Line)', 'eta':eta_def, 'led_index':'127'} 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[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[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[40370] = { 'name':' Washington (Blue Line)', 'eta':eta_def, 'led_index':'130'}
# stations[40890] = { 'name':' OHare (Blue Line)', 'eta':eta_def, 'led_index':'131'} 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[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[41420] = { 'name':' Addison (Red Line)', 'eta':eta_def, 'led_index':'133'}
# stations[41290] = { 'name':' Kimball (Brown Line)', 'eta':eta_def, 'led_index':'134'} 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[40300] = { 'name':' Indiana (Green Line)', 'eta':eta_def, 'led_index':'135'}
# stations[40420] = { 'name':' Cicero (Pink Line)', 'eta':eta_def, 'led_index':'136'} 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[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[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[41450] = { 'name':' Chicago (Red Line)', 'eta':eta_def, 'led_index':'139'}
# stations[40590] = { 'name':' Damen (Blue Line)', 'eta':eta_def, 'led_index':'140'} 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[41180] = { 'name':' Kedzie (Brown Line)', 'eta':eta_def, 'led_index':'141'}
# stations[40010] = { 'name':' Austin (Blue Line)', 'eta':eta_def, 'led_index':'142'} 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[41310] = { 'name':' Paulina (Brown Line)', 'eta':eta_def, 'led_index':'143'}
# stations[40970] = { 'name':' Cicero (Blue Line)', 'eta':eta_def, 'led_index':'144'} stations[40970] = { 'name':' Cicero (Blue Line)', 'eta':eta_def, 'led_index':'144'}
# Function sets up all LEDs.
init_LEDs()
for station in stations: while(True):
print(station) # Have we queried API in the query_period seconds?
if (time() - last_query) > query_period:
# Query updated API
trains = (requests.get("https://lapi.transitchicago.com/api/1.0/ttpositions.aspx?key="+APIKEY+"&rt=Blue&outputType=JSON")).json()['ctatt']
# Timestamps are served in local Chicago time, convert to GMT for simplicity on this side.
print(f"Time of poll is: "+str(gmtime(time_from_iso(trains['tmst'])+(5*60*60))))
# Loop through all trains and update matching stations
for train in trains['route'][0]['train']:
nextStation = int(train['nextStaId'])
eta_time = time_from_iso(train['arrT'])+(5*60*60)
# Entirely possible there's two trains with same next station? add logic here
stations[nextStation]['eta'] = eta_time
response = urequests.get("https://lapi.transitchicago.com/api/1.0/ttpositions.aspx?key="+local_secrets.APIKEY+"&rt=Blue&outputType=JSON") last_query = time() # uptime polling window
print(gmtime(last_query))
# Process the ETA for each station
# turn off all LEDs - lazy solution, better to track state and only toggle
machine.Pin(15, machine.Pin.OUT).off()
for station, dict in stations.items():
time_from_now = dict['eta'] - time()
if station == 40820:
print('Train will arrive at'+dict['name']+' in '+ str(dict['eta']-time()) + ' seconds')
if time_from_now < 60 and time_from_now > -60: # within 2 minutes
# Our test station for onboard LED
machine.Pin(15, machine.Pin.OUT).on()
sleep(1)