{"id":18625749,"url":"https://github.com/fbiego/chronos-esp32","last_synced_at":"2025-06-24T14:38:27.582Z","repository":{"id":180959865,"uuid":"665983009","full_name":"fbiego/chronos-esp32","owner":"fbiego","description":"A library for ESP32 to interface with Chronos app over BLE","archived":false,"fork":false,"pushed_at":"2025-05-11T15:07:44.000Z","size":92,"stargazers_count":67,"open_issues_count":7,"forks_count":12,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-05-11T15:33:50.675Z","etag":null,"topics":["android","app","arduino","arduino-library","ble","esp32","notifications","platformio","protocol","rtc","sync","time"],"latest_commit_sha":null,"homepage":"https://chronos.ke/esp32","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/fbiego.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,"zenodo":null}},"created_at":"2023-07-13T12:42:57.000Z","updated_at":"2025-05-11T15:07:09.000Z","dependencies_parsed_at":"2024-06-02T12:26:08.473Z","dependency_job_id":"b1462ac3-62c1-4a18-b141-73aa26adc9a7","html_url":"https://github.com/fbiego/chronos-esp32","commit_stats":null,"previous_names":["fbiego/chronos-esp32"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/fbiego/chronos-esp32","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbiego%2Fchronos-esp32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbiego%2Fchronos-esp32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbiego%2Fchronos-esp32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbiego%2Fchronos-esp32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fbiego","download_url":"https://codeload.github.com/fbiego/chronos-esp32/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fbiego%2Fchronos-esp32/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261695184,"owners_count":23195700,"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":["android","app","arduino","arduino-library","ble","esp32","notifications","platformio","protocol","rtc","sync","time"],"created_at":"2024-11-07T04:35:53.535Z","updated_at":"2025-06-24T14:38:27.528Z","avatar_url":"https://github.com/fbiego.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# chronos-esp32\nA wrapper library for ESP32 to facilitate easy setup of a smartwatch like project. Supports syncing of notifications from the phone.\nSetup your ESP32 as a smartwatch and connect to Chronos app over BLE.\n\n[![arduino-library-badge](https://www.ardu-badge.com/badge/ChronosESP32.svg?)](https://www.arduinolibraries.info/libraries/chronos-esp32)\n[![PlatformIO Registry](https://badges.registry.platformio.org/packages/fbiego/library/ChronosESP32.svg)](https://registry.platformio.org/libraries/fbiego/ChronosESP32)\n\n\n## Features\n\n- [x] Time (Auto sync via BLE)\n- [x] Notifications (Receive notifications from connected phone)\n- [x] Weather (Receive weather info)\n- [x] Controls (Music, Find Phone, Camera)\n- [x] Phone Battery (Level, Charging state) (Chronos app v3.5.1+)\n- [x] Navigation (Chronos app v3.7.5+)\n- [x] Contacts \u0026 QR codes\n- [ ] Alarms\n\n## Companion App\n\n\u003ca href='https://chronos.ke/app?id=esp32'\u003e\u003cimg alt='Download Chronos' height=\"100px\" src='https://chronos.ke/img/chronos.png'/\u003e\u003c/a\u003e\n\n[`Chronos`](https://chronos.ke/app?id=esp32)\n\n## Functions\n\n```\n// library\nChronosESP32();\nChronosESP32(String name, ChronosScreen screen = CS_240x240_128_CTF); // set the BLE name\nvoid begin();\t\t\t\t\t\t\t\t\t\t\t\t\t\t  // initializes BLE server\nvoid stop(bool clearAll = true);\t\t\t\t\t\t\t\t\t  // stop the BLE server\nvoid loop();\t\t\t\t\t\t\t\t\t\t\t\t\t\t  // handles routine functions\nbool isRunning();\t\t\t\t\t\t\t\t\t\t\t\t\t  // check whether BLE server is inited and running\nvoid setName(String name);\t\t\t\t\t\t\t\t\t\t\t  // set the BLE name (call before begin)\nvoid setScreen(ChronosScreen screen);\t\t\t\t\t\t\t\t  // set the screen config (call before begin)\nvoid setChunkedTransfer(bool chunked);\nbool isSubscribed();\n\n// watch\nbool isConnected();\nvoid set24Hour(bool mode);\nbool is24Hour();\nString getAddress();\nvoid setBattery(uint8_t level, bool charging = false);\nbool isCameraReady();\n\n// notifications\nint getNotificationCount();\nNotification getNotificationAt(int index);\nvoid clearNotifications();\n\n// weather\nint getWeatherCount();\nString getWeatherCity();\nString getWeatherTime();\nWeather getWeatherAt(int index);\nHourlyForecast getForecastHour(int hour);\n\n// extras\nRemoteTouch getTouch();\nString getQrAt(int index);\nvoid setQr(int index, String qr);\n\n// alarms\nAlarm getAlarm(int index);\nvoid setAlarm(int index, Alarm alarm);\n\n// control\nvoid sendCommand(uint8_t *command, size_t length);\nvoid musicControl(Control command);\nvoid setVolume(uint8_t level);\nbool capturePhoto();\nvoid findPhone(bool state);\n\n// phone battery status\nvoid setNotifyBattery(bool state);\nbool isPhoneCharging();\nuint8_t getPhoneBattery();\n\n// app info\nint getAppCode();\nString getAppVersion();\n\n// navigation\nNavigation getNavigation();\n\n// contacts\nvoid setContact(int index, Contact contact);\nContact getContact(int index);\nint getContactCount();\nContact getSoSContact();\nvoid setSOSContactIndex(int index);\nint getSOSContactIndex();\n\n// helper functions for ESP32Time\nint getHourC();\t\t\t\t\t   // return hour based on 24-hour variable (0-12 or 0-23)\nString getHourZ();\t\t\t\t   // return zero padded hour string based on 24-hour variable (00-12 or 00-23)\nString getAmPmC(bool caps = true); // return (no caps)am/pm or (caps)AM/PM for 12 hour mode or none for 24 hour mode\n\n// callbacks\nvoid setConnectionCallback(void (*callback)(bool));\nvoid setNotificationCallback(void (*callback)(Notification));\nvoid setRingerCallback(void (*callback)(String, bool));\nvoid setConfigurationCallback(void (*callback)(Config, uint32_t, uint32_t));\nvoid setDataCallback(void (*callback)(uint8_t *, int));\nvoid setRawDataCallback(void (*callback)(uint8_t *, int));\n```\n\n## PlatformIO\n\nOpen the project folder in VS Code with PlatformIO installed to directly run the example sketches. This makes it easier to develop and test features\n\n## Dependencies\n- [`ESP32Time`](https://github.com/fbiego/ESP32Time)\n- [`NimBLE-Arduino`](https://github.com/h2zero/NimBLE-Arduino)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffbiego%2Fchronos-esp32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffbiego%2Fchronos-esp32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffbiego%2Fchronos-esp32/lists"}