{"id":44739208,"url":"https://github.com/romarickc1/weathersta","last_synced_at":"2026-02-15T20:13:51.087Z","repository":{"id":205761348,"uuid":"714993036","full_name":"RomaricKc1/weatherSTA","owner":"RomaricKc1","description":"Weather Station and Clock with ESP32, BME280, SCD40 and OpenWeather API ","archived":false,"fork":false,"pushed_at":"2025-12-20T14:35:46.000Z","size":8882,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-22T17:41:28.201Z","etag":null,"topics":["arduino","co2","esp32","esp32-arduino","freertos","influxdb","platformio","weather-station","wifi"],"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/RomaricKc1.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-06T09:12:47.000Z","updated_at":"2025-12-20T14:26:53.000Z","dependencies_parsed_at":"2023-11-20T20:04:06.802Z","dependency_job_id":"3b884a04-28c1-4f6b-810a-028a4e6176ae","html_url":"https://github.com/RomaricKc1/weatherSTA","commit_stats":{"total_commits":2,"total_committers":2,"mean_commits":1.0,"dds":0.5,"last_synced_commit":"4ffdca35183d047caf097d4ca3ffca654aed7924"},"previous_names":["romarickc1/weathersta"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/RomaricKc1/weatherSTA","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomaricKc1%2FweatherSTA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomaricKc1%2FweatherSTA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomaricKc1%2FweatherSTA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomaricKc1%2FweatherSTA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RomaricKc1","download_url":"https://codeload.github.com/RomaricKc1/weatherSTA/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RomaricKc1%2FweatherSTA/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29488010,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T19:29:10.908Z","status":"ssl_error","status_checked_at":"2026-02-15T19:29:10.419Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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","co2","esp32","esp32-arduino","freertos","influxdb","platformio","weather-station","wifi"],"created_at":"2026-02-15T20:13:50.585Z","updated_at":"2026-02-15T20:13:51.076Z","avatar_url":"https://github.com/RomaricKc1.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# weatherSTA\n\n# Weather Station and Clock with ESP32, BME280, SCD40 and OpenWeather API\n\nWeather station and clock, running on an `ESP32` using the `Arduino` framework and `FreeRTOS`. Measures and displays indoor environmental data (weather and air pollution) in real-time, as well as outdoor weather data through the OpenWeather API.\n\n\u003cimg src=\"./img/clock_mode.png\" alt=\"Clock mode\" width=\"400\"/\u003e\n\n|                      Dashboard example                       |                  Enclosure: Box                  |                                   Enclosure: Lid |\n| :----------------------------------------------------------: | :----------------------------------------------: | -----------------------------------------------: |\n| \u003cimg src=\"./img/dashboard.png\" alt=\"Dashboard\" width=\"400\"/\u003e | \u003cimg src=\"./img/box.png\" alt=\"Box\" width=\"400\"/\u003e | \u003cimg src=\"./img/lid.png\" alt=\"Box\" width=\"400\"/\u003e |\n\n\u003cdetails\u003e\n\u003csummary\u003eClick to view the results displayed on the browser\u003c/summary\u003e\n\n\u003cimg src=\"./img/webSTA.jpg\" alt=\"webview\" width=\"200\"/\u003e\n\n\u003c/details\u003e\n\n## Getting Started\n\n\u003e [!IMPORTANT]\n\u003e Download the already compiled firmware(`.hex, .bin, the partitions.bin and the spiffs`) from the `release page` and flash it to your `ESP32`.\n\u003e\n\u003e Alternatively, you can build it from source by yourself.\n\u003e\n\u003e Boot the ESP and connect to the created WIFI network `\"STA esp\"`. The default password (`P@55w0rd`) is in the `configs.hpp` header file.\n\u003e\n\u003e Connect the ESP to the desired WIFI network in the wifimanager portal, then reboot to validate the access point. After that, you'll have to reconnect to the portal in the `setup` page, to enter the required configuration parameters. After that, the esp will reboot and you'll be all set. `Voilà`.\n\n### Build Steps\n\n```bash\n# build and upload file system\nplatformio run --target uploadfs -e esp32dev\n# build and upload firmware\nplatformio run --target upload -e esp32dev\n```\n\n\u003e [!NOTE]\n\u003e You can access the web server via `http://weather_sta.local` or by looking up the ip addressed assigned to the esp32 and going to `http://[ip_addr]`\n\u003e\n\u003e Many of the configuration options can be modified in the `configs.hpp`. Such as timing related, `ntp` servers and `timezone` etc.\n\u003e\n\u003e Almost the essentials configs can be done dynamically. After the firmware has been built, you can use the wifi manager portal to set the value as you wish.\n\n### OTA Updates\n\nYou can upload a new firmware through `WiFiManager` at `http://[ip_addr]/update`. You can enable the `on-demand` portal using the physical `button` connected to the `pin27`, and navigate to `Chg WLAN` and set it to `Yes`.\n\n## Features\n\n**Two Operating Modes**: The system operates in two distinct modes - Clock Mode (default) and Station Mode.\n\n- **Clock Mode**: Displays indoor environment data (temperature, humidity, CO2 concentration) and the current time. The time is fetched using the NTP protocol.\n- **Station Mode**: Cycles through displaying indoor data, current outdoor data from the OpenWeather API, and outdoor forecast data. After cycling, the system goes idle for a configurable duration, shuts down, and then restarts.\n\n\u003e [!NOTE]\n\u003e The system uses a PIR sensor to detect human presence and manage the LCD backlight, reducing power consumption. The PIR sensor's duration is configurable.\n\u003e\n\u003e The system connects to WiFi using WiFiManager with local webserver\n\u003e\n\u003e Three LEDs indicating rain (from current weather data), hot (indoor temperature above 24°C), and cold conditions.\n\u003e\n\u003e A buzzer provides hourly chimes, with a long chime at 12 am and pm. It stops making noise from 2 am to 6 am.\n\u003e\n\u003e InfluxDB integration: pushes every 10s data that can be visualized using the provided dashboard (see influx_dashboard)\n\u003e STL files for a 3D printable enclosure.\n\n## Main Sensors\n\n1. BME280 Sensor: Used for measuring indoor temperature, humidity, and pressure.\n2. SCD40 Sensor: Used for measuring indoor CO2 concentration.\n\n## Libraries Used\n\nMore in `platformio.ini` file.\n\n## Wirings\n\n| Module   | Connection |\n| -------- | ---------- |\n| LCD 16x2 | I2C        |\n| BME280   | I2C        |\n| SCD40    | I2C        |\n| LED cold | D19        |\n| LED hot  | D18        |\n| LED rain | D5         |\n| BTN      | D27        |\n| Buzzer   | D2         |\n| PIR      | D17        |\n\n## MISC\n\nWIFI connection lost: `LED cold` and `LED hot` blink for 5s.\n\n### Config Menu\n\n`CLOCK mode {ON/OFF}`, `LCD Speed 250-500(ms)`, `Sleep T 30-60(s)`, `Deep-sleep T 15-60(mins)`,`Am/PM {AM/PM}`, `Chg WLAN {ON/OFF}`\n\n### TODO\n\n- [x] Outdoors air quality metrics\n- [ ] Add target for other esp version\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromarickc1%2Fweathersta","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromarickc1%2Fweathersta","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromarickc1%2Fweathersta/lists"}