From 7de0db1d1b683bb74c6a221827228b58afc07fc9 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Sat, 9 Sep 2017 01:36:58 -0600 Subject: [PATCH] Adds documentation for the proposed AirVisual sensor platform (#3321) * Adds documentation for the proposed AirVisual sensor platform * Fixed small typo --- source/_components/sensor.airvisual.markdown | 112 +++++++++++++++++++ source/images/supported_brands/airvisual.jpg | Bin 0 -> 17694 bytes 2 files changed, 112 insertions(+) create mode 100644 source/_components/sensor.airvisual.markdown create mode 100644 source/images/supported_brands/airvisual.jpg diff --git a/source/_components/sensor.airvisual.markdown b/source/_components/sensor.airvisual.markdown new file mode 100644 index 00000000000..98686274dcd --- /dev/null +++ b/source/_components/sensor.airvisual.markdown @@ -0,0 +1,112 @@ +--- +layout: page +title: "AirVisual" +description: "Instructions on how to use AirVisual data within Home Assistant" +date: 2017-09-06 12:15 +sidebar: true +comments: false +sharing: true +footer: true +logo: airvisual.jpg +ha_category: Health +ha_release: 0.53 +ha_iot_class: "Cloud Polling" +--- + +The `airvisual` sensor platform queries the [AirVisual](https://airvisual.com/) API for air quality +data on the nearest city to a latitude and longitude. The resulting information +creates sensors for the Air Quality Index (AQI), the human-friendly air quality +level, and the main pollutant of that area. Sensors that conform to either/both +the [U.S. and Chinese air quality standards](http://www.clm.com/publication.cfm?ID=366) can be created. + +This platform requires an AirVisual API key, which can be obtained [here](https://airvisual.com/api). Note +that the platform was designed using the "Community" package; the "Startup" +and "Enterprise" package keys should continue to function, but actual results +may vary (or not work at all). + +

+The "Community" API key is limited to 10,000 calls per month. In order to leave +a buffer, the `airvisual` platform queries the API every 10 minutes. +

+ +## {% linkable_title Configuring the Platform %} + +To enable this platform, add the following lines to your `configuration.yaml` +file: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + latitude: 42.81212 + longitude: 108.12422 + radius: 500 +``` + +Configuration variables: + +- **api_key** (*Required*): your AirVisual API key +- **monitored_conditions** (*Required*): the air quality standard(s) to use +(`us` for U.S., `cn` for Chinese) +- **latitude** (*Optional*): the latitude to monitor; if excluded, the latitude +defined in `configuration.yaml` will be used +- **longitude** (*Optional*): the longitude to monitor; if excluded, the longitude +defined in `configuration.yaml` will be used +- **radius** (*Optional*): the radius (in meters) around the latitude/longitude to +search for the nearest city; defaults to `1000` + +## {% linkable_title Sensor Types %} + +When configured, the platform will create three sensors for each configured +air quality standard: + +### Air Quality Index + +**Description:** This sensor displays a numeric air quality index (AQI), a metric +for the overall "health" of the air. + +**Example Sensor Name:** `sensor.chinese_air_quality_index` + +**Example Sensor Value:** `32` + +**Explanation:** + +AQI | Status | Description +------- | :----------------: | ---------- +0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk +51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution +101 - 150 | **Unhealthy for Sensitive Groups** | Members of sensitive groups may experience health effects. The general public is not likely to be affected +151 - 200 | **Unhealthy** | Everyone may begin to experience health effects; members of sensitive groups may experience more serious health effects +201 - 300 | **Very unhealthy** | Health warnings of emergency conditions. The entire population is more likely to be affected +301+ | **Hazardous** | Health alert: everyone may experience more serious health effects + +### Air Polution Level + +**Description:** This sensor displays the associated `Status` (from the above +table) for the current AQI. + +**Sample Sensor Name:** `sensor.us_air_pollution_level` + +**Example Sensor Value:** `Moderate` + +### Main Pollutant + +**Description:** This sensor displays the pollutant whose value is currently +highest. + +**Sample Sensor Name:** `sensor.us_main_pollutant` + +**Example Sensor Value:** `PM2.5` + +**Explanation:** + +Pollutant | Symbol | More Info +------- | :----------------: | ---------- +Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) +Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) +Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) diff --git a/source/images/supported_brands/airvisual.jpg b/source/images/supported_brands/airvisual.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddce6892ae7b2fcaf936bdb680833892ffceab87 GIT binary patch literal 17694 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 literal 0 HcmV?d00001