{"id":18053697,"url":"https://github.com/chrisns/childrens-clock","last_synced_at":"2026-01-17T16:20:56.250Z","repository":{"id":260218015,"uuid":"807771296","full_name":"chrisns/childrens-clock","owner":"chrisns","description":"An IoT clock designed for children","archived":false,"fork":false,"pushed_at":"2026-01-16T20:39:20.000Z","size":4499,"stargazers_count":42,"open_issues_count":6,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-17T06:33:38.450Z","etag":null,"topics":["arduino","c","children","clock","diy","diy-electronics","diy-project","diy-solutions","esp32","esphome","esphome-config","esphome-device","iot","kids","kids-programming","network-time-protocol","ntp","platformio"],"latest_commit_sha":null,"homepage":"","language":"C","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/chrisns.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["chrisns"],"custom":["https://www.paypal.me/cns"]}},"created_at":"2024-05-29T18:30:34.000Z","updated_at":"2026-01-16T18:36:38.000Z","dependencies_parsed_at":"2025-12-11T00:07:34.781Z","dependency_job_id":null,"html_url":"https://github.com/chrisns/childrens-clock","commit_stats":null,"previous_names":["chrisns/childrens-clock"],"tags_count":229,"template":false,"template_full_name":null,"purl":"pkg:github/chrisns/childrens-clock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisns%2Fchildrens-clock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisns%2Fchildrens-clock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisns%2Fchildrens-clock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisns%2Fchildrens-clock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chrisns","download_url":"https://codeload.github.com/chrisns/childrens-clock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chrisns%2Fchildrens-clock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28511856,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T13:38:16.342Z","status":"ssl_error","status_checked_at":"2026-01-17T13:37:44.060Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["arduino","c","children","clock","diy","diy-electronics","diy-project","diy-solutions","esp32","esphome","esphome-config","esphome-device","iot","kids","kids-programming","network-time-protocol","ntp","platformio"],"created_at":"2024-10-31T00:07:28.970Z","updated_at":"2026-01-17T16:20:56.229Z","avatar_url":"https://github.com/chrisns.png","language":"C","funding_links":["https://github.com/sponsors/chrisns","https://www.paypal.me/cns"],"categories":[],"sub_categories":[],"readme":"# Children's IoT Clock\n\n[![CI](https://github.com/chrisns/childrens-clock/actions/workflows/ci.yaml/badge.svg)](https://github.com/chrisns/childrens-clock/actions/workflows/ci.yaml)\n[![Security Scanning](https://github.com/chrisns/childrens-clock/actions/workflows/security.yml/badge.svg)](https://github.com/chrisns/childrens-clock/actions/workflows/security.yml)\n![GitHub License](https://img.shields.io/github/license/chrisns/childrens-clock)\n![GitHub language count](https://img.shields.io/github/languages/count/chrisns/childrens-clock)\n![GitHub top language](https://img.shields.io/github/languages/top/chrisns/childrens-clock)\n\n![AI generated comic style scene of a child in bed, reading, then getting up to fight crime](./docs/images/comic.png)\n\n## Why\n\nThis was a thing I made my kids after buying and becoming 🤯 frustrated with many different [commercial offerings](https://www.google.com/search?q=childrens+coloured+clock+wake+up\u0026udm=3)/[[duckduckgo]](https://duckduckgo.com/?q=childrens+clock+wake+up\u0026iar=shopping) that:\n\n- Lost track of time if unplugged\n- Manually updating time was hard and fiddly\n- Didn't update the time for daylight savings\n- Updating the config or time required it being in 'awake' mode, lighting up a dark room\n- Couldn't be easily adjusted for weekends or ad-hoc for holidays/late nights\n- If the Child could read, and/or count the stars, they would often need get out of bed to get near enough to the clock to determine more than just the color of the light; potentially putting on glasses if needed.\n- Didn't provide a \"its ok to be awake, and play/read quietly, but stay in your room\"\n- It would age quickly and not look grown up\n- It wouldn't collect data - future plans to put temp sensors, bluetooth relay, and sensors (**not a camera**!)\n- Couldn't be made to do all sorts of other things I could think up with a [tiny computer](https://en.wikipedia.org/wiki/ESP32) that is around 15,000 times more powerful than [what is required to land on the moon!](https://en.wikipedia.org/wiki/Apollo_Guidance_Computer)\n\n## When (History)\n\nSo I made a thing! 😱😱😱  _confession: 🤫 this isn't the first generation, previous code is [open](https://github.com/chrisns/my-esphome-devices/blob/d97260ce4b8e330513456011d3693e02f36b1b73/noahclock.yaml) though without documentation_\n\n## What\n\n[![Made for ESPHome](https://esphome.io/_static/made-for-esphome-black-on-white.svg)](https://esphome.io/guides/made_for_esphome)\n\nThis is made for [Made for ESPHome](https://esphome.io/) so you should be able to go buy a cheap led matrix, esp32, solder 3 pins, flash the chip and you've got something that even works with [Home Assistant](https://www.home-assistant.io/)!\n\n## How to\n\nYou will need to buy:\n\n- 1x [ESP32](https://www.aliexpress.com/item/1005006692499859.html) £1.91 _(worth buying a few in case you mess up the soldering)_\n- 1x [WS2812B 8x32 LED Matrix](https://www.aliexpress.com/item/1005002399031444.html) £2.59\n- 1x [15x5\" Photo frame](https://www.amazon.co.uk/dp/B0BBPJPFC9)\n\nYou will need:\n\n- A soldering iron\n- Some solder\n- A usb cable\n\n### Build\n\n#### Solder\n\n  1. `RED` 5v wire on the matrix \u003e the `5v` pin on the esp32\n  1. `WHITE` gnd wire on the matrix \u003e a `gnd` pin on the esp32\n  1. `GREEN` din wire on the matrix \u003e `13` pin on the esp32\n\nYou should end up with something (more tidy than this pic)\n\n![image showing wiring to esp32](docs/images/IMG_4181.jpeg)\n\n#### Flash\n\nYou'll now need to flash the board\n\n1. Connect the ESP32 board to your computer\n1. Download the [latest firmware image](https://github.com/chrisns/childrens-clock/releases/latest/download/firmware-factory.bin)\n1. Go to [web.esphome.io](https://web.esphome.io/)\n1. Click connect, and select the serial port for your device\n1. Click install\n1. Follow the buttons to connect to the wifi, and away you go!\n\n#### Configure\n\n\u003e When configuring the timezone, you'll need to refer to the [`POSIX` timezone config](https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv) just copy paste from this page into the config page of the device and you're good.\n\n![screenshot of configuration page](./docs/images/config-screenshot.jpg)\n\n| Config          | Color                                   | Description                                                                    |\n| --------------- | --------------------------------------- | ------------------------------------------------------------------------------ |\n| Weekend wake up | \u003cspan style=\"color:orange\"\u003eAmber\u003c/span\u003e | The time its ok for your kid to get up and quietly read on a weekend (sat+sun) |\n| Weekend bedtime | \u003cspan style=\"color:red\"\u003eRed\u003c/span\u003e      | The time your kid should go to bed on a weekend (sat+sun)                      |\n| Weekend go      | \u003cspan style=\"color:green\"\u003eGreen\u003c/span\u003e  | The time its ok for your kid to come jump on your bed on a weekend (sat+sun)   |\n| Weekday wake up | \u003cspan style=\"color:orange\"\u003eAmber\u003c/span\u003e | The time its ok for your kid to get up and quietly read on a weekday (mon-fri) |\n| Weekday bedtime | \u003cspan style=\"color:red\"\u003eRed\u003c/span\u003e      | The time your kid should go to bed on a weekday (mon-fri)                      |\n| Weekday go      | \u003cspan style=\"color:green\"\u003eGreen\u003c/span\u003e  | The time its ok for your kid to come jump on your bed on a weekday (mon-fri)   |\n\n#### Mount\n\nI've put mine in a photo frame with just a sheet of white paper in front of the matrix to diffuse it a bit, you might like to try something more bespoke for your kids, maybe some art, picture of a pet/family etc.\n\n#### Install\n\nIt's a photo frame, so putting it on the wall should be easy\n\n![image showing the project mounted on a wall](./docs/images/daytime.jpeg)\n\n#### Explain\n\nTheres some dots on the top of the matrix, these reduce over time until its the next phase, so provide a visual countdown, if your kid wakes up in the night _\"how many dots are left?\"_ is a simple way for them to figure out how long is left, and for you to ask why they're jumping on you in the dark without opening your eyes and send them back to bed, because they should know better.\n\n![image of clock in different states](./docs/images/orange-red.png)\n\n#### Forget it\n\nAfter configuration, it should just continue to work, it'll continue to get its time from the internet, automatically adjust for daylight savings (if that applies to you).\n\n#### Extend\n\nThe code is open source! so feel free to extend this, do fun things, add temp sensors, air quality, buzzers, speakers, motors, the possibilities are endless, **PLEASE SHARE** what you do, take photos, share the code, make a pull request, or just raise an 'issue' with your pics and I'll point at them.\n\nThis should already work with [Home Assistant](https://www.home-assistant.io/), if you've got Home Assistant installed it should find the device on your network and offer to connect to it, if not you can give it the address of the device.\n\n![home assistant discovered device](./docs/images/home-assistant-discovered.jpg)\n![home assistant configuration page for device](./docs/images/home-assistant-config.jpg)\n\nTHANKS!\n\n#### Other\n\nIf you flash the device and it fails to connect to your wifi for whatever reason, it'll run its own access point that you can connect to. It also provides a bluetooth provisioner that you can use. Just go to \u003chttps://www.improv-wifi.com/\u003e\n\n---\n\n## Development\n\nThis is all intended to use [dev containers](https://containers.dev/)\n\n### Run tests\n\n```bash\nrake test\n```\n\n```raw\nTest 'TestMain.c'\n-----------------\nRunning TestMain.out...\n\n--------------------\nOVERALL TEST SUMMARY\n--------------------\nTESTED:  5\nPASSED:  5\nFAILED:  0\nIGNORED: 0\n```\n\n### Run tests on code change\n\n```bash\nguard\n```\n\n### Build\n\n```bash\nrake build\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisns%2Fchildrens-clock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchrisns%2Fchildrens-clock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchrisns%2Fchildrens-clock/lists"}