diff --git a/examples/src/micropython/main.py b/examples/src/micropython/main.py index fc2bd3e..633ea0f 100644 --- a/examples/src/micropython/main.py +++ b/examples/src/micropython/main.py @@ -48,156 +48,154 @@ except Exception as 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 +distance_on = 10 # Time from station before turning on LED -# Build up list of stations -eta_def = mktime([2062,1,1,0,0,0,0,0]) # Set ETA as long time in future - -# Stations dictionary contains name, the eta of the next train and the LED index +# Stations dictionary contains name, the ETA of all trains as an array, the LED index of the light and the LED state stations = {} -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[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':'2'} -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'} +stations[41090] = { 'name':' Monroe (Red Line)', 'eta':[], 'led_index':1, 'state':0 } +stations[40820] = { 'name':' Rosemont (Blue Line)', 'eta':[], 'led_index': machine.Pin(15, machine.Pin.OUT), 'state':0 } +stations[41010] = { 'name':' Rockwell (Brown Line)', 'eta':[], 'led_index':3, 'state':0 } +stations[40470] = { 'name':' Racine (Blue Line)', 'eta':[], 'led_index':4, 'state':0 } +stations[40190] = { 'name':' Sox-35th (Red Line)', 'eta':[], 'led_index':5, 'state':0 } +stations[40020] = { 'name':' Harlem/Lake (Green Line)', 'eta':[], 'led_index':6, 'state':0 } +stations[40900] = { 'name':' Howard (Red Purple & Yellow lines)', 'eta':[], 'led_index':7, 'state':0 } +stations[41160] = { 'name':' Clinton (Green & Pink lines)', 'eta':[], 'led_index':8, 'state':0 } +stations[40230] = { 'name':' Cumberland (Blue Line)', 'eta':[], 'led_index':9, 'state':0 } +stations[40560] = { 'name':' Jackson (Red Line)', 'eta':[], 'led_index':10, 'state':0 } +stations[41150] = { 'name':' Kedzie (Orange Line)', 'eta':[], 'led_index':11, 'state':0 } +stations[40780] = { 'name':' Central Park (Pink Line)', 'eta':[], 'led_index':12, 'state':0 } +stations[41080] = { 'name':' 47th (Green Line)', 'eta':[], 'led_index':13, 'state':0 } +stations[40510] = { 'name':' Garfield (Green Line)', 'eta':[], 'led_index':14, 'state':0 } +stations[41050] = { 'name':' Linden (Purple Line)', 'eta':[], 'led_index':2, 'state':0 } +stations[40120] = { 'name':' 35th/Archer (Orange Line)', 'eta':[], 'led_index':16, 'state':0 } +stations[40570] = { 'name':' California (Blue Line)', 'eta':[], 'led_index':17, 'state':0 } +stations[40260] = { 'name':' State/Lake (Brown Green Orange Pink & Purple lines)', 'eta':[], 'led_index':18, 'state':0 } +stations[40130] = { 'name':' 51st (Green Line)', 'eta':[], 'led_index':19, 'state':0 } +stations[41700] = { 'name':' Washington/Wabash (Brown Green Orange Purple & Pink lines)', 'eta':[], 'led_index':20, 'state':0 } +stations[41000] = { 'name':' Cermak-Chinatown (Red Line)', 'eta':[], 'led_index':21, 'state':0 } +stations[40340] = { 'name':' Berwyn (Red Line)', 'eta':[], 'led_index':22, 'state':0 } +stations[41690] = { 'name':' Cermak-McCormick Place (Green Line)', 'eta':[], 'led_index':23, 'state':0 } +stations[40490] = { 'name':' Grand (Blue Line)', 'eta':[], 'led_index':24, 'state':0 } +stations[41060] = { 'name':' Ashland (Orange Line)', 'eta':[], 'led_index':25, 'state':0 } +stations[40090] = { 'name':' Damen (Brown Line)', 'eta':[], 'led_index':26, 'state':0 } +stations[41280] = { 'name':' Jefferson Park (Blue Line)', 'eta':[], 'led_index':27, 'state':0 } +stations[40520] = { 'name':' Foster (Purple Line)', 'eta':[], 'led_index':28, 'state':0 } +stations[40330] = { 'name':' Grand (Red Line)', 'eta':[], 'led_index':29, 'state':0 } +stations[40280] = { 'name':' Central (Green Line)', 'eta':[], 'led_index':30, 'state':0 } +stations[40250] = { 'name':' Kedzie-Homan (Blue Line)', 'eta':[], 'led_index':31, 'state':0 } +stations[40870] = { 'name':' Francisco (Brown Line)', 'eta':[], 'led_index':32, 'state':0 } +stations[41240] = { 'name':' Addison (Blue Line)', 'eta':[], 'led_index':33, 'state':0 } +stations[40740] = { 'name':' Western (Pink Line)', 'eta':[], 'led_index':34, 'state':0 } +stations[41360] = { 'name':' California (Green Line)', 'eta':[], 'led_index':35, 'state':0 } +stations[41400] = { 'name':' Roosevelt (Red Orange & Green lines)', 'eta':[], 'led_index':36, 'state':0 } +stations[41410] = { 'name':' Chicago (Blue Line)', 'eta':[], 'led_index':37, 'state':0 } +stations[40680] = { 'name':' Adams/Wabash (Brown Green Orange Pink & Purple lines)', 'eta':[], 'led_index':38, 'state':0 } +stations[40920] = { 'name':' Pulaski (Blue Line)', 'eta':[], 'led_index':39, 'state':0 } +stations[41210] = { 'name':' Wellington (Brown & Purple lines)', 'eta':[], 'led_index':40, 'state':0 } +stations[41340] = { 'name':' LaSalle (Blue Line)', 'eta':[], 'led_index':41, 'state':0 } +stations[41490] = { 'name':' Harrison (Red Line)', 'eta':[], 'led_index':42, 'state':0 } +stations[41350] = { 'name':' Oak Park (Green Line)', 'eta':[], 'led_index':43, 'state':0 } +stations[40040] = { 'name':' Quincy/Wells (Brown Orange Purple & Pink lines)', 'eta':[], 'led_index':44, 'state':0 } +stations[40390] = { 'name':' Forest Park (Blue Line)', 'eta':[], 'led_index':45, 'state':0 } +stations[41130] = { 'name':' Halsted (Orange Line)', 'eta':[], 'led_index':46, 'state':0 } +stations[40960] = { 'name':' Pulaski (Orange Line)', 'eta':[], 'led_index':47, 'state':0 } +stations[40830] = { 'name':' 18th (Pink Line)', 'eta':[], 'led_index':48, 'state':0 } +stations[40140] = { 'name':' Dempster-Skokie  (Yellow Line)', 'eta':[], 'led_index':49, 'state':0 } +stations[41320] = { 'name':' Belmont (Red Brown & Purple lines)', 'eta':[], 'led_index':50, 'state':0 } +stations[41660] = { 'name':' Lake (Red Line)', 'eta':[], 'led_index':51, 'state':0 } +stations[40910] = { 'name':' 63rd (Red Line)', 'eta':[], 'led_index':52, 'state':0 } +stations[40690] = { 'name':' Dempster (Purple Line)', 'eta':[], 'led_index':53, 'state':0 } +stations[40460] = { 'name':' Merchandise Mart (Brown & Purple lines)', 'eta':[], 'led_index':54, 'state':0 } +stations[40710] = { 'name':' Chicago (Brown & Purple lines)', 'eta':[], 'led_index':55, 'state':0 } +stations[40530] = { 'name':' Diversey (Brown & Purple lines)', 'eta':[], 'led_index':56, 'state':0 } +stations[40850] = { 'name':' Harold Washington Library-State/Van Buren (Brown Orange Purple & Pink lines)', 'eta':[], 'led_index':57, 'state':0 } +stations[41020] = { 'name':' Logan Square (Blue Line)', 'eta':[], 'led_index':58, 'state':0 } +stations[41030] = { 'name':' Polk (Pink Line)', 'eta':[], 'led_index':59, 'state':0 } +stations[41300] = { 'name':' Loyola (Red Line)', 'eta':[], 'led_index':60, 'state':0 } +stations[40310] = { 'name':' Western (Orange Line)', 'eta':[], 'led_index':61, 'state':0 } +stations[40430] = { 'name':' Clinton (Blue Line)', 'eta':[], 'led_index':62, 'state':0 } +stations[40320] = { 'name':' Division (Blue Line)', 'eta':[], 'led_index':63, 'state':0 } +stations[41510] = { 'name':' Morgan (Green & Pink lines)', 'eta':[], 'led_index':64, 'state':0 } +stations[40270] = { 'name':' Main (Purple Line)', 'eta':[], 'led_index':65, 'state':0 } +stations[41330] = { 'name':' Montrose (Blue Line)', 'eta':[], 'led_index':66, 'state':0 } +stations[40350] = { 'name':' UIC-Halsted (Blue Line)', 'eta':[], 'led_index':67, 'state':0 } +stations[40940] = { 'name':' Halsted (Green Line)', 'eta':[], 'led_index':68, 'state':0 } +stations[41480] = { 'name':' Western (Brown Line)', 'eta':[], 'led_index':69, 'state':0 } +stations[40030] = { 'name':' Pulaski (Green Line)', 'eta':[], 'led_index':70, 'state':0 } +stations[41190] = { 'name':' Jarvis (Red Line)', 'eta':[], 'led_index':71, 'state':0 } +stations[41170] = { 'name':' Garfield (Red Line)', 'eta':[], 'led_index':72, 'state':0 } +stations[40050] = { 'name':' Davis (Purple Line)', 'eta':[], 'led_index':73, 'state':0 } +stations[40750] = { 'name':' Harlem (Blue Line - OHare Branch)', 'eta':[], 'led_index':74, 'state':0 } +stations[41200] = { 'name':' Argyle (Red Line)', 'eta':[], 'led_index':75, 'state':0 } +stations[40440] = { 'name':' California (Pink Line)', 'eta':[], 'led_index':76, 'state':0 } +stations[40360] = { 'name':' Southport (Brown Line)', 'eta':[], 'led_index':77, 'state':0 } +stations[40760] = { 'name':' Granville (Red Line)', 'eta':[], 'led_index':78, 'state':0 } +stations[40480] = { 'name':' Cicero (Green Line)', 'eta':[], 'led_index':79, 'state':0 } +stations[40730] = { 'name':' Washington/Wells (Brown Orange Purple & Pink lines)', 'eta':[], 'led_index':80, 'state':0 } +stations[40580] = { 'name':' 54th/Cermak (Pink Line)', 'eta':[], 'led_index':81, 'state':0 } +stations[40650] = { 'name':' North/Clybourn (Red Line)', 'eta':[], 'led_index':82, 'state':0 } +stations[40220] = { 'name':' Western (Blue Line - Forest Park Branch)', 'eta':[], 'led_index':83, 'state':0 } +stations[40070] = { 'name':' Jackson (Blue Line)', 'eta':[], 'led_index':84, 'state':0 } +stations[41440] = { 'name':' Addison (Brown Line)', 'eta':[], 'led_index':85, 'state':0 } +stations[41670] = { 'name':' Conservatory (Green Line)', 'eta':[], 'led_index':86, 'state':0 } +stations[40790] = { 'name':' Monroe (Blue Line)', 'eta':[], 'led_index':87, 'state':0 } +stations[40180] = { 'name':' Oak Park (Blue Line)', 'eta':[], 'led_index':88, 'state':0 } +stations[40400] = { 'name':' Noyes (Purple Line)', 'eta':[], 'led_index':89, 'state':0 } +stations[41260] = { 'name':' Austin (Green Line)', 'eta':[], 'led_index':90, 'state':0 } +stations[40600] = { 'name':' Kostner (Pink Line)', 'eta':[], 'led_index':91, 'state':0 } +stations[40670] = { 'name':' Western (Blue Line - OHare Branch)', 'eta':[], 'led_index':92, 'state':0 } +stations[40100] = { 'name':' Morse (Red Line)', 'eta':[], 'led_index':93, 'state':0 } +stations[40770] = { 'name':' Lawrence (Red Line)', 'eta':[], 'led_index':94, 'state':0 } +stations[40150] = { 'name':' Pulaski (Pink Line)', 'eta':[], 'led_index':95, 'state':0 } +stations[40660] = { 'name':' Armitage (Brown & Purple lines)', 'eta':[], 'led_index':96, 'state':0 } +stations[40540] = { 'name':' Wilson (Red & Purple lines)', 'eta':[], 'led_index':97, 'state':0 } +stations[40380] = { 'name':' Clark/Lake (Blue Brown Green Orange Purple & Pink lines)', 'eta':[], 'led_index':98, 'state':0 } +stations[40160] = { 'name':' LaSalle/Van Buren (Brown Orange Purple & Pink lines)', 'eta':[], 'led_index':99, 'state':0 } +stations[40700] = { 'name':' Laramie (Green Line)', 'eta':[], 'led_index':100, 'state':0 } +stations[40240] = { 'name':' 79th (Red Line)', 'eta':[], 'led_index':101, 'state':0 } +stations[40290] = { 'name':' Ashland/63rd (Green Line)', 'eta':[], 'led_index':102, 'state':0 } +stations[40450] = { 'name':' 95th/Dan Ryan (Red Line)', 'eta':[], 'led_index':103, 'state':0 } +stations[40210] = { 'name':' Damen (Pink Line)', 'eta':[], 'led_index':104, 'state':0 } +stations[41140] = { 'name':' King Drive (Green Line)', 'eta':[], 'led_index':105, 'state':0 } +stations[41710] = { 'name':' Damen (Green Line)', 'eta':[], 'led_index':106, 'state':0 } +stations[40980] = { 'name':' Harlem (Blue Line - Forest Park Branch)', 'eta':[], 'led_index':107, 'state':0 } +stations[41270] = { 'name':' 43rd (Green Line)', 'eta':[], 'led_index':108, 'state':0 } +stations[40080] = { 'name':' Sheridan (Red Line)', 'eta':[], 'led_index':109, 'state':0 } +stations[40610] = { 'name':' Ridgeland (Green Line)', 'eta':[], 'led_index':110, 'state':0 } +stations[41070] = { 'name':' Kedzie (Green Line)', 'eta':[], 'led_index':111, 'state':0 } +stations[41430] = { 'name':' 87th (Red Line)', 'eta':[], 'led_index':112, 'state':0 } +stations[41250] = { 'name':' Central (Purple Line)', 'eta':[], 'led_index':113, 'state':0 } +stations[40880] = { 'name':' Thorndale (Red Line)', 'eta':[], 'led_index':114, 'state':0 } +stations[41680] = { 'name':' Oakton-Skokie (Yellow Line)', 'eta':[], 'led_index':115, 'state':0 } +stations[41120] = { 'name':' 35th-Bronzeville-IIT (Green Line)', 'eta':[], 'led_index':116, 'state':0 } +stations[41460] = { 'name':' Irving Park (Brown Line)', 'eta':[], 'led_index':117, 'state':0 } +stations[41220] = { 'name':' Fullerton (Red Brown & Purple lines)', 'eta':[], 'led_index':118, 'state':0 } +stations[40990] = { 'name':' 69th (Red Line)', 'eta':[], 'led_index':119, 'state':0 } +stations[41040] = { 'name':' Kedzie (Pink Line)', 'eta':[], 'led_index':120, 'state':0 } +stations[40800] = { 'name':' Sedgwick (Brown & Purple lines)', 'eta':[], 'led_index':121, 'state':0 } +stations[40060] = { 'name':' Belmont (Blue Line)', 'eta':[], 'led_index':122, 'state':0 } +stations[40840] = { 'name':' South Boulevard (Purple Line)', 'eta':[], 'led_index':123, 'state':0 } +stations[40170] = { 'name':' Ashland (Green & Pink lines)', 'eta':[], 'led_index':124, 'state':0 } +stations[40810] = { 'name':' Illinois Medical District (Blue Line)', 'eta':[], 'led_index':125, 'state':0 } +stations[41230] = { 'name':' 47th (Red Line)', 'eta':[], 'led_index':126, 'state':0 } +stations[41500] = { 'name':' Montrose (Brown Line)', 'eta':[], 'led_index':127, 'state':0 } +stations[40930] = { 'name':' Midway (Orange Line)', 'eta':[], 'led_index':128, 'state':0 } +stations[40550] = { 'name':' Irving Park (Blue Line)', 'eta':[], 'led_index':129, 'state':0 } +stations[40370] = { 'name':' Washington (Blue Line)', 'eta':[], 'led_index':130, 'state':0 } +stations[40890] = { 'name':' OHare (Blue Line)', 'eta':[], 'led_index':131, 'state':0 } +stations[40630] = { 'name':' Clark/Division (Red Line)', 'eta':[], 'led_index':132, 'state':0 } +stations[41420] = { 'name':' Addison (Red Line)', 'eta':[], 'led_index':133, 'state':0 } +stations[41290] = { 'name':' Kimball (Brown Line)', 'eta':[], 'led_index':134, 'state':0 } +stations[40300] = { 'name':' Indiana (Green Line)', 'eta':[], 'led_index':135, 'state':0 } +stations[40420] = { 'name':' Cicero (Pink Line)', 'eta':[], 'led_index':136, 'state':0 } +stations[40720] = { 'name':' Cottage Grove (Green Line)', 'eta':[], 'led_index':137, 'state':0 } +stations[41380] = { 'name':' Bryn Mawr (Red Line)', 'eta':[], 'led_index':138, 'state':0 } +stations[41450] = { 'name':' Chicago (Red Line)', 'eta':[], 'led_index':139, 'state':0 } +stations[40590] = { 'name':' Damen (Blue Line)', 'eta':[], 'led_index':140, 'state':0 } +stations[41180] = { 'name':' Kedzie (Brown Line)', 'eta':[], 'led_index':141, 'state':0 } +stations[40010] = { 'name':' Austin (Blue Line)', 'eta':[], 'led_index':142, 'state':0 } +stations[41310] = { 'name':' Paulina (Brown Line)', 'eta':[], 'led_index':143, 'state':0 } +stations[40970] = { 'name':' Cicero (Blue Line)', 'eta':[], 'led_index':144, 'state':0 } # Function sets up all LEDs. init_LEDs() @@ -217,9 +215,8 @@ while(True): 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 + # Append the ETA, we rely on the station loop to remove old trains + stations[nextStation]['eta'].append(eta_time) last_query = time() # uptime polling window @@ -227,17 +224,24 @@ while(True): - # 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() + # Process the ETA for each station + for station, dict in stations.items(): # loop through all stations + if station == 40820: # Our test station for onboard LED + + # Set LED state tracker to 0, if no trains, it'll stay 0. + stations[station]['state'] = 0 + for index, eta in enumerate(dict['eta']): # multiple trains. Enumerate is used so we have the index to update the dict itself. + time_from_now = eta - time() + + print('Train will arrive at'+dict['name']+' in '+ str(time_from_now) + ' seconds') + if time_from_now < distance_on: + stations[station]['state'] = 1 + + if time_from_now < -distance_on: # Remove old trains + stations[station]['eta'].pop(index) + + # Set Station LED state + stations[station]['led_index'].value(stations[station]['state']) sleep(1)