{"id":5356,"date":"2025-11-30T20:50:52","date_gmt":"2025-12-01T01:50:52","guid":{"rendered":"https:\/\/www.paleotechnologist.net\/?p=5356"},"modified":"2025-11-30T20:50:53","modified_gmt":"2025-12-01T01:50:53","slug":"bus-prognosticator","status":"publish","type":"post","link":"https:\/\/www.paleotechnologist.net\/?p=5356","title":{"rendered":"Bus Prognosticator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I recently came across an <a href=\"https:\/\/github.com\/grandpasquarepants\/ESP32-SEPTA-Bus-Monitor\" data-type=\"link\" data-id=\"https:\/\/github.com\/grandpasquarepants\/ESP32-SEPTA-Bus-Monitor\" target=\"_blank\" rel=\"noreferrer noopener\">&#8220;ESP32 SEPTA Bus Monitor&#8221;<\/a> project that would query a SEPTA Transit API and update a large scoreboard-like display with information about the predicted arrival time of the next SEPTA bus. Since project author [<a href=\"https:\/\/github.com\/grandpasquarepants\" data-type=\"link\" data-id=\"https:\/\/github.com\/grandpasquarepants\" target=\"_blank\" rel=\"noreferrer noopener\">grandpasquarepants<\/a>] lives right next to a bus stop, this format is perfect to be able to not only see when the next bus will arrive, but share this information with other riders.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I live half a block from my bus stop. It&#8217;s too far to be in easy sight from the bus stop, but a similar clock would be a useful addition to my entryway, helping me decide whether to walk or to wait for the bus when I head out. (If it&#8217;s more than a ten-minute wait, I&#8217;ll get to work faster by walking.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So I asked GPT5.1 to take a look at the original ESP32 SEPTA Bus Monitor site and modify the code to simply print out the information to the serial port, as a test. After adding in my WiFi credentials to the sketch, this worked quite well, and a few prompts later, I had the world&#8217;s weirdest wall clock&#8230;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"607\" src=\"https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.20.38-1024x607.jpg\" alt=\"\" class=\"wp-image-5357\" srcset=\"https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.20.38-1024x607.jpg 1024w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.20.38-300x178.jpg 300w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.20.38-768x456.jpg 768w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.20.38-1536x911.jpg 1536w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.20.38.jpg 1861w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">The Bus Prognosticator. (Now if only there were a bus inbound&#8230;)<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" src=\"https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.35.56-1024x472.jpg\" alt=\"\" class=\"wp-image-5359\" srcset=\"https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.35.56-1024x472.jpg 1024w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.35.56-300x138.jpg 300w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.35.56-768x354.jpg 768w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.35.56-1536x708.jpg 1536w, https:\/\/www.paleotechnologist.net\/wp-content\/uploads\/2025\/11\/2025-11-30-20.35.56.jpg 1829w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Eventually, a bus is inbound!<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">When one or more buses are inbound to the stop, the estimated time to the first bus to arrive is displayed. Sometimes there&#8217;s an incoming bus and therefore a time displayed, sometimes not. When there is, it usually counts down (bus making forward progress) but sometimes stands still (bus stuck in traffic) or even counts up (I don&#8217;t want to know.) The script can be modified to show buses in both directions; as it is, it only shows inbound buses (towards city center), since that&#8217;s all I use the bus line for.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/FlyByPC\/BusMonitor\/tree\/main\" data-type=\"link\" data-id=\"https:\/\/github.com\/FlyByPC\/BusMonitor\/tree\/main\" target=\"_blank\" rel=\"noreferrer noopener\">Here&#8217;s the Github<\/a>, including source code and .stl files for the wall-mount case, as shown. It seems pretty reliable, if you leave a minute or so slack. Enjoy!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Bus Prognosticator, to show estimated time until the next inbound SEPTA bus. <a href=\"https:\/\/www.paleotechnologist.net\/?p=5356\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"footnotes":""},"categories":[503,267,249,490,264,278],"tags":[],"class_list":["post-5356","post","type-post","status-publish","format-standard","hentry","category-3d-printing","category-arduino","category-c","category-networking","category-projects","category-tools"],"_links":{"self":[{"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=\/wp\/v2\/posts\/5356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5356"}],"version-history":[{"count":7,"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=\/wp\/v2\/posts\/5356\/revisions"}],"predecessor-version":[{"id":5365,"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=\/wp\/v2\/posts\/5356\/revisions\/5365"}],"wp:attachment":[{"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.paleotechnologist.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}