{"id":26520733,"url":"https://github.com/allansomensi/esp-bttf-clock-rs","last_synced_at":"2026-05-10T05:39:39.614Z","repository":{"id":282900105,"uuid":"950015485","full_name":"allansomensi/esp-bttf-clock-rs","owner":"allansomensi","description":"A clock/lamp built with ESP32, using Rust and the esp-idf framework. It connects to Wi-Fi to synchronize time via SNTP. ","archived":false,"fork":false,"pushed_at":"2025-04-08T00:07:39.000Z","size":147,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T01:22:14.691Z","etag":null,"topics":["captive-portal","clock","embedded","esp-idf-framework","esp32","http-server","iot","lamp","mdns","nvs","rust","sntp","thematic","tm1637","typescript","wifi","ws2812b"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/allansomensi.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":"2025-03-17T13:54:17.000Z","updated_at":"2025-04-08T00:07:43.000Z","dependencies_parsed_at":"2025-03-17T15:36:40.422Z","dependency_job_id":"0355ba17-d66c-4f91-80dd-77e991ed0b66","html_url":"https://github.com/allansomensi/esp-bttf-clock-rs","commit_stats":null,"previous_names":["allansomensi/esp-bttf-clock-rs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/allansomensi/esp-bttf-clock-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allansomensi%2Fesp-bttf-clock-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allansomensi%2Fesp-bttf-clock-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allansomensi%2Fesp-bttf-clock-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allansomensi%2Fesp-bttf-clock-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/allansomensi","download_url":"https://codeload.github.com/allansomensi/esp-bttf-clock-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/allansomensi%2Fesp-bttf-clock-rs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259462559,"owners_count":22861512,"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":["captive-portal","clock","embedded","esp-idf-framework","esp32","http-server","iot","lamp","mdns","nvs","rust","sntp","thematic","tm1637","typescript","wifi","ws2812b"],"created_at":"2025-03-21T12:28:54.882Z","updated_at":"2026-05-10T05:39:39.607Z","avatar_url":"https://github.com/allansomensi.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⏳⚡ ESP BTTF Clock\n\nA feature-rich **ESP32** clock and lamp built using **Rust** and the `esp-idf` framework. The device connects to Wi-Fi, synchronizes time via **SNTP**, and offers a web portal for configuration and customization.\n\n## 🌟 Features\n- ⏰ **Time Synchronization:** Automatically syncs time via SNTP.\n- 🌐 **Web Portal:** User-friendly interface for configuring and controlling the clock.\n- 📡 **Captive Portal:** Simplifies Wi-Fi connection by automatically redirecting to the setup page.\n- 🔗 **mDNS Support:** Access the web portal easily using a hostname instead of an IP address.\n- 🎨 **Color Themes:** Multiple LED color themes for personalized aesthetics.\n- 🕛 **Time Format:** Supports both 24-hour and 12-hour (AM/PM) formats.\n- 🌍 **Dynamic Timezones:** Supports 500+ adjustable timezones.\n- 💾 **Persistent Storage:** Utilizes NVS (Non-Volatile Storage) for saving reusable settings.\n- 🔒 **Secure by Design:** Built with Rust and TypeScript, ensuring memory safety and type safety.\n\n## 🛠️ Setup \u0026 Usage\n\n### 📋 Prerequisites\n\n- **Rust** toolchain (recommended: nightly version).\n- **Node.js** for Captive and Web Portals.\n- **Just** for utility scripts (see [Install Just](https://github.com/casey/just#installation)).\n- **ESP-IDF** environment properly set up (see [ESP-RS setup](https://docs.espressif.com/projects/rust/book/installation/index.html)).\n- **ESP32 D1-mini** development board.\n\n### 🔧 Development Setup\n\n#### 1. Clone the repository:\n```bash\ngit clone https://github.com/allansomensi/esp-bttf-clock-rs.git\ncd esp-bttf-clock-rs\n```\n\n#### 2. Build Captive and Web Portals:\n```elixir\njust build\n```\n\n#### 3. If you want, you can modify the environment variables in `.cargo/config.toml`:\n```toml\n[env]\nAP_IP_ADDRESS = \"192.168.71.1\"\nAP_SSID = \"My AP SSID\"\nAP_PASSWORD = \"My AP password\" # Must be at least 8 characters long\n```\n\n#### 4. Compile and flash the firmware:\n```elixir\njust run  # or simply `just`\n```\n\n## 🛑 Common Issues \u0026 Troubleshooting\n\n### ❌ No Wi-Fi 5G Support\nThe ESP32 D1-mini does not support 5GHz Wi-Fi networks, as it only operates on the 2.4GHz band. Ensure that your router has a 2.4GHz network enabled and connect to it.\n\n### 🚦 Captive Portal Not Redirecting Automatically\nIf the login notification to connect to the network does not appear and you are not automatically redirected to the Wi-Fi setup page, manually enter the following URL in your browser:\n`http://{{ip_address}}`\n\nBy default, the Access Point IP address is **192.168.71.1**.\n\n### 🌍 Web Portal Not Accessible\n- ✅ Verify that the ESP32 is properly connected to the correct Wi-Fi network.\n- 🌐 If mDNS (`http://bttf.local`) is not working, first ensure that you are accessing it via **HTTP** and not HTTPS.\n- 🔍 If the issue persists, check your router settings to find the assigned IP address and use it directly.\n\n### ⏳ Time Synchronization Fails\n- 📶 Ensure the ESP32 has internet access and can reach SNTP servers.\n- 🔒 Check if your firewall or network settings block NTP traffic.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallansomensi%2Fesp-bttf-clock-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallansomensi%2Fesp-bttf-clock-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallansomensi%2Fesp-bttf-clock-rs/lists"}