{"id":15011912,"url":"https://github.com/infra-blue/esp32-weatherstationrtc","last_synced_at":"2025-10-03T23:00:04.477Z","repository":{"id":246292092,"uuid":"816327304","full_name":"infra-blue/ESP32-WeatherStationRTC","owner":"infra-blue","description":"ESP32 based desk clock with DS3231, BME280 and BH1750","archived":false,"fork":false,"pushed_at":"2024-10-30T12:35:33.000Z","size":58720,"stargazers_count":10,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-12T03:52:12.492Z","etag":null,"topics":["arduino","bh1750","bme280","clock","cpp","ds3231","electronics","esp32","esp32-arduino","max7219","platformio","weather-station"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infra-blue.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":"2024-06-17T14:12:14.000Z","updated_at":"2025-04-02T15:51:05.000Z","dependencies_parsed_at":"2024-06-27T03:02:49.900Z","dependency_job_id":"517ec2fe-49c1-447f-aa53-ba6b7017f2dc","html_url":"https://github.com/infra-blue/ESP32-WeatherStationRTC","commit_stats":{"total_commits":133,"total_committers":3,"mean_commits":"44.333333333333336","dds":0.08270676691729328,"last_synced_commit":"2122bc0aa77bf714f2ef9c87a342cd51bf71f24f"},"previous_names":["infra-blue/esp32-weatherstationrtc"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/infra-blue/ESP32-WeatherStationRTC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infra-blue%2FESP32-WeatherStationRTC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infra-blue%2FESP32-WeatherStationRTC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infra-blue%2FESP32-WeatherStationRTC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infra-blue%2FESP32-WeatherStationRTC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infra-blue","download_url":"https://codeload.github.com/infra-blue/ESP32-WeatherStationRTC/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infra-blue%2FESP32-WeatherStationRTC/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262182874,"owners_count":23271703,"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":["arduino","bh1750","bme280","clock","cpp","ds3231","electronics","esp32","esp32-arduino","max7219","platformio","weather-station"],"created_at":"2024-09-24T19:41:52.963Z","updated_at":"2025-10-03T22:59:59.452Z","avatar_url":"https://github.com/infra-blue.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align = center\u003e\n\n# ESP32-WeatherStationRTC\n\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.codefactor.io/repository/github/infra-blue/esp32-weatherstationrtc/overview/main\"\u003e\u003cimg alt=\"CodeFactor Grade\" src=\"https://img.shields.io/codefactor/grade/github/infra-blue/ESP32-WeatherStationRTC?style=for-the-badge\u0026logo=codefactor\u0026logoColor=white\u0026label=Code%20Quality\u0026color=red\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/commits\u003e\u003cimg alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/t/infra-blue/ESP32-WeatherStationRTC?style=for-the-badge\u0026logo=conventionalcommits\u0026logoColor=white\u0026label=Commits\u0026color=blue\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/stargazers\u003e\u003cimg alt=\"GitHub Repo stars\" src=\"https://img.shields.io/github/stars/infra-blue/ESP32-WeatherStationRTC?style=for-the-badge\u0026logo=githubsponsors\u0026logoColor=white\u0026label=STARS\u0026color=yellow\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/watchers\u003e\u003cimg alt=\"GitHub watchers\" src=\"https://img.shields.io/github/watchers/infra-blue/ESP32-WeatherStationRTC?style=for-the-badge\u0026logo=githubcopilot\u0026logoColor=white\u0026color=orange\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/actions/workflows/dependabot.yml\u003e\u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/infra-blue/ESP32-WeatherStationRTC/dependabot.yml?style=for-the-badge\u0026logo=dependabot\u0026logoColor=white\u0026label=platformIO%20dependabot\u0026color=green\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/actions/workflows/platformio-build\u0026release.yml\u003e\u003cimg alt=\"GitHub Actions Workflow Status\" src=\"https://img.shields.io/github/actions/workflow/status/infra-blue/ESP32-WeatherStationRTC/platformio-build%26release.yml?style=for-the-badge\u0026logo=platformio\u0026logoColor=white\u0026label=platformIO%20build\u0026color=green\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/releases/latest\u003e\u003cimg alt=\"GitHub Downloads (all assets, all releases)\" src=\"https://img.shields.io/github/downloads/infra-blue/ESP32-WeatherStationRTC/total?style=for-the-badge\u0026logo=github\u0026logoColor=white\u0026label=Github%20Downloads\u0026color=lightgrey\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/releases/latest\u003e\u003cimg alt=\"GitHub Release\" src=\"https://img.shields.io/github/v/release/infra-blue/ESP32-WeatherStationRTC?include_prereleases\u0026sort=date\u0026display_name=tag\u0026style=for-the-badge\u0026logo=webpack\u0026logoColor=white\u0026label=Latest\u0026logoColor=white\u0026color=darkblue\"\u003e\u003c/a\u003e\n  \u003ca href=https://github.com/infra-blue/ESP32-WeatherStationRTC/blob/main/LICENSE\u003e\u003cimg alt=\"GitHub License\" src=\"https://img.shields.io/github/license/infra-blue/ESP32-WeatherStationRTC?style=for-the-badge\u0026logo=gitbook\u0026logoColor=white\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n  ![desktop](assets/desktop.jpg)\n\n  ![image](assets/clock.gif)\n\n\u003c/div\u003e\n\nThis project is an ESP32-based desk clock with functionality of monitoring the temperature, atmospheric pressure and humidity in the air. The display is auto dimmed. It is coded using the arduino framework.\n\n## Features\n\n- **Time and date:** Utilizes the DS3231 RTC module for accurate timekeeping and displays the current time and date.\n- **Temperature, Humidity, and Pressure Measurement:** Uses the BME280 sensor to measure and display the current temperature, humidity, and pressure.\n- **Beep Sound**: Every hour the buzzer beeps.\n- **Automatic Brightness Adjustment:** Adjusts the LED matrix display brightness based on the ambient light level detected by the BH1750 sensor.\n- **WiFi Time Sync:** In case the RTC loses power, the device attempts to sync the time via an NTP server over WiFi.\n- **Button Control:** A button allows cycling through the display modes and turning the display on/off with a long press.\n- **Web Server**: A web server for change the clock settings.\n\n## Requirements\n\n\u003cdiv align=\"center\"\u003e\n\n### Hardware Requirements\n\n\u003c/div\u003e\n\n- **ESP32** (other arduino compatible boards are okay, just change the pins)\n- **MAX7219** LED matrix module (8 devices needed)\n- **DS3231** Real-Time Clock module\n- **BME280** sensor module (temperature, humidity, pressure)\n- **BH1750** light sensor module\n- **Passive Buzzer**\n- **(OPTIONAL) PushButton** (the default button is the BOOT button in the ESP32-DevKitC V4 devboard)\n\n\u003cdiv align=\"center\"\u003e\n\n### Software Requirements\n\n\u003c/div\u003e\n\n- **PlatformIO**\n- **Python3**\n## Setup\n\n\u003cdiv align=\"center\"\u003e\n\n### **Software Setup:**\n\n\u003c/div\u003e\n\n   - Install the PlatformIO IDE or PlatformIO CLI (or the VSCode extension, make sure to add \".platformio\\penv\\Scripts\" in your path).\n   - Connect the board to your computer.\n   - Change the configuration in ```data/config.json```.\n   - Build the filesystem and upload it with ```pio run --target uploadfs``` (make sure you have set the pins and addresses correctly in the configuration file, the other settings are changeable via web interface).\n   - Compile and upload the firmware to your ESP32 board ```pio run --target upload```.\n\u003cdiv align=\"center\"\u003e\n\n### **Hardware Setup:**\n\n\u003c/div\u003e\n\n   - The reference board is an ESP32-DevKitC V4\n\n\u003cdiv align= center\u003e\n\n| PushButton | ESP32-DevKitC V4 |\n| ----------- | ----------- |\n|  + | 0 |\n|  - | GND |\n\n\u003c/div\u003e\n\n**N.B.** The PIN 0 is the one used by the BOOT button on the ESP32-DevKitC V4 devboard so it's not necessary using an external push button.\n\n\u003cdiv align= center\u003e\n\n| Buzzer | ESP32-DevKitC V4 |\n| ----------- | ----------- |\n|  + | 25 |\n|  - | GND |\n\n| I2C DEVICES| ESP32-DevKitC V4 |\n| ----------- | ----------- |\n| VCC | 3V3 |\n| GND | GND |\n| SCL | 22 |\n| SDA | 21 |\n\n\n| MAX7219 (SPI Interface) | ESP32-DevKitC V4 |\n| ----------- | ----------- |\n| VCC | 5V |\n| GND | GND |\n| CLK | 18 |\n| DIN | 23 |\n| CS | 5 |\n\n\u003c/div\u003e\n\n**N.B.** The two 4 devices displays needs to be connected like this:\n\n\u003cdiv align=\"center\"\u003e\n\n# ![Display schematic](assets/schematic_display.png)\n\n\u003c/div\u003e\n\n## Settings\n\n- **WiFi**: you can set your network ssid and password or leave it blank (the clock tries to connect to the first open AP it finds). You can only set the ssid for an open AP.\n\n- **Supported languages**: english, italian, spanish, german, french.\n\n- **Timezone**: Timezone.h TimeChangerule format.\n\n## First boot\nAt the first boot the display shows \"POWER LOST\" and if you push the button it tries to connect to your wifi to sync the RTC with an NTP server.\n**So:**\n- Set up an AP (mobile hotspot is ok).\n- Press the push button on the clock.\n- Wait for it to connect to the server.\n- Press the button again.\n\n**IMPORTANT**: this procedure is necessary whenever the DS3231 loses power (i.e. when the battery runs out or one is not inserted and the ESP32 loses power).\n\n## Usage\n\n- The device will automatically display the time and temperature upon startup.\n- Press the button to cycle through the different display modes:\n    - time \u0026 temperature (in Celsius)\n    - date (DDD DD MMM YYYY)\n    - humidity \u0026 pressure (in hPa)\n- Hold the button for more than 500ms to turn off the display. Press again to turn it back on.\n\n## WebServer\nYou can reach the web server connecting to\n- SSID:```ESP32WeatherStation```\n- PASSWORD: ```SuP3r_S3cr3t_P@ssw0rd!``` \n\nat the ```10.10.10.10``` IP address.\n\n\u003cdiv align=\"center\"\u003e\n\n## Home page\n\n![Home](assets/home.png)\n\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n## Settings page\n\n![Settings](assets/settings.png)\n\n\u003c/div\u003e\n\n## License\n\nThis project is licensed under the GNU GENERAL PUBLIC LICENSE - see the LICENSE file for details.\n\n## Credits\n[Leonardo Mirabella](https://github.com/infra-blue)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfra-blue%2Fesp32-weatherstationrtc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfra-blue%2Fesp32-weatherstationrtc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfra-blue%2Fesp32-weatherstationrtc/lists"}