{"id":22253944,"url":"https://github.com/mcauser/esp8266-useless-throwie","last_synced_at":"2025-07-28T05:32:54.867Z","repository":{"id":150620472,"uuid":"66540122","full_name":"mcauser/esp8266-useless-throwie","owner":"mcauser","description":"ESP8266 Useless Throwie","archived":false,"fork":false,"pushed_at":"2017-05-24T03:38:34.000Z","size":3047,"stargazers_count":13,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-04T15:50:44.181Z","etag":null,"topics":["esp8266","grunt","micropython","nodejs","svg","throwie","useless","wemos-d1-mini"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/mcauser.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","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":"2016-08-25T08:32:27.000Z","updated_at":"2022-09-21T22:10:30.000Z","dependencies_parsed_at":"2023-05-06T09:32:16.066Z","dependency_job_id":null,"html_url":"https://github.com/mcauser/esp8266-useless-throwie","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mcauser/esp8266-useless-throwie","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fesp8266-useless-throwie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fesp8266-useless-throwie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fesp8266-useless-throwie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fesp8266-useless-throwie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mcauser","download_url":"https://codeload.github.com/mcauser/esp8266-useless-throwie/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mcauser%2Fesp8266-useless-throwie/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267468386,"owners_count":24092334,"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","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["esp8266","grunt","micropython","nodejs","svg","throwie","useless","wemos-d1-mini"],"created_at":"2024-12-03T07:21:14.564Z","updated_at":"2025-07-28T05:32:54.843Z","avatar_url":"https://github.com/mcauser.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP8266 Useless Throwie\n\nAn ESP8266 configured as an access point with a tiny web server which serves a page displaying a toggle switch, which flips a relay when clicked.\n\n![Demo](https://raw.github.com/mcauser/esp8266-useless-throwie/master/demo.png)\n\nPrecompiled [demo.html](https://raw.githubusercontent.com/mcauser/esp8266-useless-throwie/master/demo.html) can be [viewed here](https://mcauser.github.io/esp8266-useless-throwie/index.html) - just the button, finger and audio only.\n\n## Install:\n\nInstall [node.js](http://nodejs.org) 5.12.0 or later.\n\nInstall [grunt](http://gruntjs.com/) task runner and dev dependencies listed in package.json\n\n```\n$ npm install -g grunt-cli\n$ npm install\n```\n\n## Build:\n\nRun grunt to compile each of the platforms into the `dist/` folder. This executes the default task defined in `Gruntfile.js`.\n\n```\n$ grunt\n```\n\n### Directories:\n\n* /build - temporary dir used when compiling\n* /dist - compiled files dir\n* /src - source files dir\n\n## Platform specific instructions:\n\nFurther instructions for configuring each device.\n\n* [MicroPython](src/micropython/readme.md)\n* [Arduino](src/arduino/readme.md)\n* [Web](/src/web/readme.md)\n\n## Development Notes:\n\n### Arduino:\n\n- [ ] web server\n- [ ] web server with gzip\n- [ ] captive portal\n- [ ] is there an ino linter / testing framework?\n\n### MicroPython:\n\n- [x] web server\n- [x] web server with gzip\n- [ ] add to main.py\n- [ ] captive portal\n- [ ] websockets for bidirectional toggles\n- [ ] multiple client/station bidirectional toggle support\n- [ ] pylint\n- [ ] precompiled firmware\n\n### Web:\n\n- [ ] css flexbox fallback\n- [ ] css autoprefixer\n- [ ] css rotate finger on swipe\n- [ ] js tests\n- [ ] js uglify mangle\n- [ ] js touch support\n- [ ] js add polyfills for old browsers\n- [ ] js check if device can play mp3s\n- [ ] js check if offline and skip XMLHttpRequests\n- [ ] js cross platform event listeners\n- [ ] js finger add rage personality\n- [ ] js finger add preempt personality\n- [ ] js on resize move finger offscreen\n- [ ] grunt add imagemin for png\n- [ ] svg reduce decimal places\n- [ ] svg on state glow filter does not work in ios chrome\n- [ ] svg randomise button led colour\n- [ ] svg randomise skin tone\n- [ ] svg adjust button shadow using device accelerometers\n- [ ] svg switch animate rocker instead of duplicate button and shadow groups\n- [ ] add easter eggs for excessive clickers\n- [ ] deploy html to paas with MQTT or sockets bridge\n\n### Common:\n\n- [x] add photos\n- [ ] grunt add concurrent\n- [x] grunt add open\n- [x] grunt add connect, watch, livereload\n- [ ] MQTT publish\n- [ ] swap relay for OLED, char LCD, buzzer, LED, WS2818, etc\n\n## Links:\n\n* [demo](https://mcauser.github.io/esp8266-useless-throwie/index.html)\n* [WeMos D1 Mini](http://www.wemos.cc/Products/d1_mini.html)\n* [WeMos D1 Mini Relay Shield](http://www.wemos.cc/Products/relay_shield.html)\n* [micropython.org](http://micropython.org)\n* [node.js](http://nodejs.org)\n* [grunt](http://gruntjs.com/)\n* [hackaday project](https://hackaday.io/project/13322-esp8266-useless-throwie)\n\n## Credits:\n\n* MicroPython socket web server examples based on [MicroPython examples](https://github.com/micropython/micropython/tree/master/examples/network).\n* Python captive portal code based on [Mini Fake DNS server](http://code.activestate.com/recipes/491264-mini-fake-dns-server/).\n* [easings.net](http://easings.net/) for the CSS Bezier curves\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcauser%2Fesp8266-useless-throwie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmcauser%2Fesp8266-useless-throwie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmcauser%2Fesp8266-useless-throwie/lists"}