{"id":19840525,"url":"https://github.com/zefer/atmos","last_synced_at":"2026-07-13T06:32:08.306Z","repository":{"id":138714011,"uuid":"543095210","full_name":"zefer/atmos","owner":"zefer","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-02T12:29:46.000Z","size":435,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-10-20T11:52:51.659Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zefer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-09-29T11:53:30.000Z","updated_at":"2024-08-14T18:23:33.000Z","dependencies_parsed_at":"2023-07-04T09:31:36.994Z","dependency_job_id":null,"html_url":"https://github.com/zefer/atmos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zefer/atmos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefer%2Fatmos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefer%2Fatmos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefer%2Fatmos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefer%2Fatmos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zefer","download_url":"https://codeload.github.com/zefer/atmos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zefer%2Fatmos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35413537,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-13T02:00:06.543Z","response_time":119,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-12T12:27:14.637Z","updated_at":"2026-07-13T06:32:08.291Z","avatar_url":"https://github.com/zefer.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Atmos\n\nAn ESP32 based home IoT device. It collects some climate readings for the room\nand publishes them to MQTT.\n\nThese metrics can be consumed by subscribing to the MQTT topics. For example:\n- In Home Assistant, to provide climate data for rooms and automation\n- Writing to an InfluxDB database, so the data can be displayed on a Grafana\n  Dashboard. For an example of such, see https://github.com/zefer/mqtt-to-influx\n\nThe ESP32 board is programmed using Arduino code, using [PlatformIO](https://platformio.org/).\n\n## Hardware\n\n- Made using an ESP32 D1 Mini board, but initially prototyped on an ESP32\n  Devkit V4 board. The work the same and all that needs to change is the\n  `board` type in `platformio.ini'\n- Bosch BME280 barometric air pressure, humidity \u0026 temperature sensor\n\n## GPIO Pins\n\nWired to the default ESP32 I2C pins as follows. Guides can be found at\nhttps://randomnerdtutorials.com/esp32-bme280-arduino-ide-pressure-temperature-humidity/.\n\n- ESP32 3.3v    -\u003e BME280 VIN\n- ESP32 GND     -\u003e BME280 GND\n- ESP32 GPIO 22 -\u003e BME280 SCL\n- ESP32 GPIO 21 -\u003e BME280 SDA\n\n![Photo of v1](images/v1.jpg)\n\n## 3D-Printed Case\n\nThe deign and print files can be found here:\nhttps://www.printables.com/model/290637-esp32-d1-mini-bme280-iot-sensor-case\n\n## How it works\n\nOn first run, it creates a WiFi add-hoc network allowing you to configure the\nWiFi and MQTT connection settings. These settings are persisted to flash\nmemory, subsequent runs will auto-connect to the configured WiFi and\nperiodically publish data to MQTT.\n\n## API\n\n- `GET /status` view JSON status data: config, system, metrics\n- `PUT /reboot` reboot the device\n- `PUT /reset` forget the WiFi \u0026 MQTT config and reboot\n\n## Why?\n\nTo learn ESP32 development, to help with a future upcoming wind monitor\nproject. And also to collect some interesting climate data from various\nlocations around the house.\n\n## Development\n\nInstall platformio core and refer to the `Makefile` for common dev commands.\n\nSee https://platformio.org/install/cli. I used `brew install platformio`.\n\n- `make compile` compile the code\n- `make upload` compile and flash to the device\n- `make erase` fully erase the device flash, a factory reset\n- `make serial` watch the serial output log\n\n## Feature progress\n\n- [x] Configure and connect to WiFi\n- [x] Configure and persist MQTT config params\n- [x] `GET /status` endpoint for general info and debugging\n- [x] `PUT /reboot` and `PUT /reset` to assist with reconfiguring\n- [x] Periodically read BME280 humidity, temperature \u0026 pressure values\n- [ ] Consider adding a dewpoint calculation from humidity + temperature\n- [x] Periodically publish BME280 readings to MQTT\n- [x] Build an MQTT listener that subscribes to the readings and writes them to\n  an InfluxDB, similar to\n  [this UDP-\u003eInfluxDB energy monitor listener](https://github.com/zefer/energy-monitor)\n- [x] Design and 3D-print an enclosure\n- [ ] Verify the measurements, in particular temperature, and consider changing\n  the case design to move the BME280 board further away from the ESP32 board\n  and any heat it may radiate\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzefer%2Fatmos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzefer%2Fatmos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzefer%2Fatmos/lists"}