{"id":29019303,"url":"https://github.com/harr1424/indoor-air-quality","last_synced_at":"2026-02-17T22:01:17.815Z","repository":{"id":63139939,"uuid":"565490836","full_name":"harr1424/Indoor-Air-Quality","owner":"harr1424","description":"A project involving an SDS011 sensor, Raspberry Pi, Google Cloud Storage, Swift Charts, and Apple Push Notification Services (APNs) to monitor indoor air quality.","archived":false,"fork":false,"pushed_at":"2025-03-21T23:48:54.000Z","size":2897,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-26T00:11:26.334Z","etag":null,"topics":["apns2","apple-push-notifications","firebase-storage","flask-api","go-api","go-encryption","go-filesystem","go-rate","golang","google-cloud-storage","ios-swift","python-gpio","python-threading","python3","rate-limiting","sds011","swift-http-request","swiftcharts","swiftui","swiftui-alert"],"latest_commit_sha":null,"homepage":"https://jharrington.io/iot","language":"Swift","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/harr1424.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,"zenodo":null}},"created_at":"2022-11-13T15:25:01.000Z","updated_at":"2025-03-21T23:48:54.000Z","dependencies_parsed_at":"2025-06-26T00:10:18.282Z","dependency_job_id":"8e8bcbeb-fcc1-446c-9b06-11eabcf21cba","html_url":"https://github.com/harr1424/Indoor-Air-Quality","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/harr1424/Indoor-Air-Quality","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harr1424%2FIndoor-Air-Quality","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harr1424%2FIndoor-Air-Quality/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harr1424%2FIndoor-Air-Quality/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harr1424%2FIndoor-Air-Quality/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harr1424","download_url":"https://codeload.github.com/harr1424/Indoor-Air-Quality/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harr1424%2FIndoor-Air-Quality/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29559961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T21:50:49.831Z","status":"ssl_error","status_checked_at":"2026-02-17T21:46:15.313Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["apns2","apple-push-notifications","firebase-storage","flask-api","go-api","go-encryption","go-filesystem","go-rate","golang","google-cloud-storage","ios-swift","python-gpio","python-threading","python3","rate-limiting","sds011","swift-http-request","swiftcharts","swiftui","swiftui-alert"],"created_at":"2025-06-26T00:10:15.237Z","updated_at":"2026-02-17T22:01:17.791Z","avatar_url":"https://github.com/harr1424.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Indoor-Air-Quality\nA project that uses an SDS011 sensor and RaspberryPi to measure indoor air quality.  Measurements are uploaded to Google Cloud Storage and visualized in an iOS app using Swift Charts. The RaspberryPi contacts an API written in Go to contact Apple Push Notification Services (APNs) if a measurement exceeds World Health Organization guidelines for air quality. The Raspberry Pi also controls a Pi Traffic Light to display a light color corresponding to air quality. \n\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n      \u003cimg width=\"400\" src=\"https://github.com/harr1424/Indoor-Air-Quality/blob/main/images/chart.png\" alt=\"A chart displaying indoor air quality measurements\"\u003e\n       \u003cspacer type=\"horizontal\" width=\"200\"\u003e\u003c/spacer\u003e\n    \u003cimg width=\"400\" src=\"https://github.com/harr1424/Indoor-Air-Quality/blob/main/images/alerts.png\" alt=\"Air quality alerts received on an iOS device\"\u003e\n    \u003cimg width=\"800\" src=\"https://github.com/harr1424/Indoor-Air-Quality/blob/main/images/pi.png\" alt=\"SDS011 sensor and Pi Traffic Light attached to a Raspberry Pi\"\u003e\n\u003c/p\u003e\n\n\n\n# Credit \nThe sds011.py file present in the Python directory (used to control the sds011 sensor) was authored by Ivan Kalchev. View his module at https://github.com/ikalchev/py-sds011\n\nCreating and sending APNs requests via HTTP2 (Go/apns.go) was greatly simplified by the package: https://github.com/sideshow/apns2\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharr1424%2Findoor-air-quality","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharr1424%2Findoor-air-quality","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharr1424%2Findoor-air-quality/lists"}