{"id":15689699,"url":"https://github.com/hazyair/hazyair","last_synced_at":"2025-05-07T23:05:54.496Z","repository":{"id":28282156,"uuid":"116285300","full_name":"hazyair/hazyair","owner":"hazyair","description":"Air quality monitoring tool.","archived":false,"fork":false,"pushed_at":"2022-12-30T17:31:13.000Z","size":1000,"stargazers_count":3,"open_issues_count":14,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T23:05:49.175Z","etag":null,"topics":["air","chart","humidity","measurements","monitoring","pressure","raspberry-pi","raspberrypi","sensor","temperature"],"latest_commit_sha":null,"homepage":"https://hazyair.github.io/hazyair","language":"JavaScript","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/hazyair.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-04T16:56:46.000Z","updated_at":"2022-08-07T14:56:07.000Z","dependencies_parsed_at":"2023-01-14T08:33:00.878Z","dependency_job_id":null,"html_url":"https://github.com/hazyair/hazyair","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hazyair%2Fhazyair","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hazyair%2Fhazyair/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hazyair%2Fhazyair/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hazyair%2Fhazyair/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hazyair","download_url":"https://codeload.github.com/hazyair/hazyair/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252968117,"owners_count":21833251,"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":["air","chart","humidity","measurements","monitoring","pressure","raspberry-pi","raspberrypi","sensor","temperature"],"created_at":"2024-10-03T18:04:08.206Z","updated_at":"2025-05-07T23:05:54.471Z","avatar_url":"https://github.com/hazyair.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# __*hazyair*__ - air quality monitoring tool. \n\n__*hazyair*__ is a handy tool that enables to retrieve measurments of the:\n* dust conectration in the air (PM1.0, PM2.5, PM10),\n* temperature,\n* humidity,\n* pressure,\n\nfrom the sensors and optionally store them to the simple database. It can also visualize the measurement results on the\ncharts that can be accessed from the web browsers.\n\n## Hardware - [Configuration](https://github.com/hazyair/hazyair/wiki)\n\n__*hazyair*__ was orginally developed on Raspberry Pi Zero W but it should work on any version of Raspberry Pi.\nFollowing sensors are supported:\n* dust sensors - [Plantower sesors](https://github.com/perfectworks/node-plantower#supported-device-models),\nSDS011 (__not tested__), SDS018 (__not tested__), SDS021 (__not tested__),\n* temperature sensors - DS18B20,\n* temperature, pressure and optionally humidity combo sensors - BME280, BMP280,\n* builtin dust, temperature, humidity sensors - Xiaomi Air Purifier 2.\n\n## Installation\n\n### Common Steps\n\nInstall `node`.\n\n```bash\nsudo apt-get install nodejs\n```\n\nInstall `npm`.\n\n```bash\nsudo apt-get install npm\nsudo npm install -g npm@latest\nsudo apt-get remove npm\nsudo apt-get autoremove\n```\n\n### Development\n\n```bash\ngit clone https://github.com/\\\nhazyair/hazyair.git\ncd hazyair\nnpm install\n```\n\n### Production \n\nCreate `node_modules` folder.\n\n```bash\nmkdir node_modules\n```\n\nInstall `hazyair` module.\n\n```bash\nnpm install hazyair\n```\n\n### Use as a service\n\nBrowse to `hazyair` folder.\n\n```bash\ncd node_modules/hazyair\n```\n\nRun desired sensor configuration script (examples below).\n\n```bash\nnpm run plantower PMS7003 \\\n/dev/serial0\n\nnpm run nova SDS011 \\\n/dev/serial0\n\nnpm run maxim\n\nnpm run bosch BME280 1 119\n\nnpm run xiaomi AirPurifier2 \\\n192.168.0.1\n```\n\nDeploy `hazyair` service.\n\n```bash\nnpm run deploy\n```\n\nRun web browser and open charts under following link ```http://\u003cip_address\u003e:8081```.\n\n### Use as a module - [API](https://github.com/hazyair/hazyair/wiki/API)\n\n\n```javascript\nconst Hazyair =\n            require('hazyair');\n\n// Initialize hazyair.\nhazyair = new Hazyair([{\n    parameter: 'dust',\n    model: 'PMS7003',\n    persistent: true,\n    options: {\n        device: '/dev/serial0'\n    }\n}]);\n\n// Optionally handle incoming\n// measurements.\nhazyair.on('dust', (data) =\u003e {\n   // New measurement result\n   // available.\n});\n\n// Optionally send out incoming\n// data to the ThingSpeak™\n// service once available.\nhazyair.thingspeak({\n    api_key:\n        'XXXXXXXXXXXXXXXX',\n    parameters: {\n        dust: {\n\n    concentration_pm10_normal:\n            'field1'\n        \n        }\n\n    }\n});\n\n// Optionally send out incoming\n// data to the dweet.io\n// service once available.\nhazyair.dweet({ \n    thing:\n        'XXXXXXXXXXXXXXXX',\n    parameters: {\n        dust: {\n\n    concentration_pm10_normal:\n            'PM10'\n\n        }\n\n    }\n});\n\n// Start collecting\n// measurements data.\nhazyair.start();\n\n// Optionally start http server\n// and make data accessible to\n// the web browsers.\nhazyair.listen({\n    port: 8081\n}, () =\u003e {\n    // Additional code goes\n    // here.\n});\n```\n\n## License\n\nMIT License\n\nCopyright (c) 2018-2019 Marcin Sielski\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhazyair%2Fhazyair","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhazyair%2Fhazyair","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhazyair%2Fhazyair/lists"}