{"id":20318978,"url":"https://github.com/tedder/tedder-metar-map","last_synced_at":"2025-07-30T14:12:58.649Z","repository":{"id":219393222,"uuid":"748941771","full_name":"tedder/tedder-metar-map","owner":"tedder","description":"livesectional/metar map","archived":false,"fork":false,"pushed_at":"2024-09-26T18:01:08.000Z","size":1038,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-14T13:25:24.692Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tedder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-27T05:20:32.000Z","updated_at":"2024-09-26T18:01:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"446dabcb-50fe-4acd-bd0a-81eba9bbaa2d","html_url":"https://github.com/tedder/tedder-metar-map","commit_stats":null,"previous_names":["tedder/tedder-metar-map"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedder%2Ftedder-metar-map","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedder%2Ftedder-metar-map/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedder%2Ftedder-metar-map/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tedder%2Ftedder-metar-map/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tedder","download_url":"https://codeload.github.com/tedder/tedder-metar-map/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241819933,"owners_count":20025443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-14T18:42:38.879Z","updated_at":"2025-07-30T14:12:58.636Z","avatar_url":"https://github.com/tedder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## tedder's METAR map\n\nThere are many like it, but this one's mine.\n\nGoals:\n- reasonably sane code\n- should run on a microcontroller (eg esp32)\n- can possibly run on a Pi\n-  should be able to run it locally for testing, no need to upload to a microcontroller every time.\n- hopefully unit tests to catch regressions\n- configure in text files or in a web server.\n- easy for an end user to configure- this is why it uses text files vs toml or yaml or json.\n- not too many custom configurations. just a dead-simple.\n- 'phone home' so I can help friends with weird configurations\n\nFuture:\n- use the light sensor on the carrier board\n- calculate/approximate the LED power consumption so it can run off USB power\n- fall back to 'wifi AP mode' on failed connect\n- OTA updates\n- regression tests in github actions\n\nThe v1 hardware for this is about $25 ($10ish for the carrier board, $12 for the qtpy). It's simpler than a Pi, it doesn't have as fussy of power requirements as a Pi, and it's much thinner, making it easier to wall-mount.\n\n## how to build\n\n## how to install\n\n### bootstrap\n\n[Install circuitpython](https://learn.adafruit.com/adafruit-qt-py-esp32-s2/circuitpython) on [qtpy esp32-s2](https://www.adafruit.com/product/5325):\n\n1. [download circuitpython uf2](https://circuitpython.org/board/adafruit_qtpy_esp32s2/)\n1. press reset button\n1. when RGB LED turns purple, press reset button again (about a half second later? almost a double-click)\n1. note QTPYS2BOOT mounted folder on success\n1. copy latest circuitpython uf2 to this folder\n1. qtpy will auto-disconnect and remount as CIRCUITPY\n1. run `install.sh` to copy the proper files\n\n\n\n\n\n## troubleshooting\n\n[circuitpython boot states](https://docs.circuitpython.org/en/8.2.x/README.html#:~:text=RGB%20status%20LED%20indicating%20CircuitPython%20state.):\n* One green flash - code completed without error.\n* Two red flashes - code ended due to an exception.\n* Three yellow flashes - safe mode. May be due to CircuitPython internal error.\n\nmu editor, mode-\u003ecircuitpython, serial, CTRL-D in lower window, watch output\n\n## bricked device recovery\n\n1. boot+reset button sequence\n1. serial should appear in the [web esptool](https://adafruit.github.io/Adafruit_WebSerial_ESPTool/)\n1. connect\n1. erase\n1. choose file, combined.bin, program\n1. once finished, press reset button\n1. green LED should appear, and QTPYS2BOOT dir\n1. cp qtpy python uf2, it'll end with an I/O error\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftedder%2Ftedder-metar-map","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftedder%2Ftedder-metar-map","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftedder%2Ftedder-metar-map/lists"}