When I talk about limits I’m referring to the 40ug/m3 annual average limit.)
Abbeydale Road Corridor Community NO2 Monitoring
Abbeydale Post Office exceeded the limit in June. No locations have a Year To Date average in excess of 40.
Burngreave Clean Air Group
Burngreave 4/7 locations exceeded annual average in June, 5/7 locations are exceeding the limit for the year to date.
Carterknowle and Millhouses Community NO2 Monitoring
1 location exceeded in June, No locations have exceeded the annual average to date.
Crookemoor Community NO2 Monitoring
No locations exceeded the limit in June. No locations have exceeded the average year to date. The Crookes Valley Park / Crooksmoore Road Junction is getting close.
Darnall Community NO2 Monitoring
No exceedances in June but Handworth Road (odds) is getting close.
Deepcar Community NO2 Monitoring
No exceedancesEcclesall Community – No exceedances in June but Ecclesall Fisheries S11 9PH location approaching the annual limit for year to date.
Hallam Community NO2 Monitoring
Station taxi ranks and Sheaf Street crossing exceeded legal limit in June and also their year to date average exceeds the annual limit.
Heeley-Meersbrook NO2 Monitoring
Valley Road exceeded limit in June and Year to Date also.
Kelham Island NO2 Monitoring
Penistone Road exceeded in May and year to date.
Nether Edge NO2 Monitoring
Nether Edge Primary didn’t have any data for June. Other locations were less than the limit.
Rutland Road reached limit in June and has reached the limit year to date.
No exceedances so far in Tinsley which is great news but it means that the site of a school closed for air quality concerns had less NO2 in June than two schools in Nether Edge!
Walkley Road / South Road exceeded limit in May but not June. Woodseats School – no exceedances
There is no safe lower limit for NO2. The current limit was set in 2010. I think it’s fair to say that we know more about the health implications of air pollution than 11 years ago. The environment bill will allow us to match WHO air quality standards in law but currently the UK limit for NO2 is the same as the WHO limit!
We are very fortunate to have community monitoring of NO2 in Sheffield at 100 locations. NO2 is an irritating gas which can irritate and inflame the lining of your airways, causing a flare-up of asthma or COPD and symptoms such as coughing and difficulty breathing. 50% of NO2 comes from transport but a lot of it also comes from power plants and domestic heating. We are fortunate in Sheffield to have 3 DEFRA stations and 6 Council stations measuring NO2 on an hourly basis. You can access that data from our air quality data page.
The most recent data for 2021 to February is now available. They are available as a PDF with bar graphs on it which can be used to compare to a 40 ug/m3 threshold for the first two months of this year. What we need to know is whether the 40ug/m3 has been exceeded over the past year. The Council does publish annual averages but as of May 3rd, 2021, we do not have annual, adjusted figures for 2020.
We believe that the Council should, on a monthly basis publish the yearly running average for each location and highlight exceedances. Only annual figures count in legal terms though, they have to be adjusted and this does not happen quickly. Decisions like what type of Clean Air Zone to have, rests partly on these results.
In a previous post, we talked about connecting an air pollution sensor to a colour changing light bulb as a way of passively monitoring outdoor air quality.
The next logical step is to use the same setup to visualise multiple remote air quality sensors over the Internet. Thanks to the coverage of the sensor.community network, it’s possible to get nearly real time readings of PM2.5, PM10, temperature, humidity and in some cases barometric pressure from over 14,000 locations.
In order to access a sensor.community sensor in HomeKit, you will need to use Homebridge and the Airrohr plug-in. You can get the Airrohr plugin by entering the command:
npm i homebridge-airrohr
The next step is to configure Homebridge to access sensors:
For every sensor that you want to pull data from you just add a Homebridge configuration entry as follows:
Name: Whatever you want to call it. This is how it will appear in Homekit and 3rd party Homekit compatible apps.
Accessory: has to be “airrohr”
Public_airquality_json_data: “http://data.sensor.community/airrohr/v1/sensor/xxxxx/” where xxxxx is the public ID of the sensor, the one that you get on the sensor.community map. Don’t forget the ‘/’ after the ID or it won’t work.
Update_interval_seconds: You can set it to whatever you want but keep in mind you might get blocked if you check too often and since the default interval of the sensor is 145 seconds there’s not much point checking this too often.
If you are having trouble, the thing to do is to put the public_airquality_json_data value into a browser to test it. For instance if your public ID is 19818, your URL should be:
Putting that into a browser, you should see something like this:
I *think* that the plug-in uses the last readings but I would have to check the code to be sure.
Note: You don't need to have a sensor yourself, you just need to find the sensors in the place that you want to monitor.
My goal is to connect a colour changing bulb to every sensor in Sheffield or at least one per Council ward to be able to get an instant visual of the air quality across Sheffield and possibly even further afield. In the mean time, I want to monitor several sensors in different parts of Sheffield.
Which bulbs to use
Add a light to Apple Home app for each sensor and optionally name it for each sensor location. Make sure that the light is HomeKit certified or you are confident that your light will work with Homebridge. I had no luck with non-HomeKit certified lights. The following will work:
Philips Hue White and Colour – I have used the Bayonet and the GU10 type. No reason to think that others won’t work though.
Nanoleaf Essentials Bulb – It would be great to try their shaped panels but I suspect that they are not individually addressable. If you know different, let me know.
Create scenes in Apple Home app
Create a room in the Home App for your remote sensors. I called mine ‘Sheffield‘.
Create one scene for each colour (pollution level) / sensor combination so if you want to track 5 air quality levels at 7 locations that would be … 35 scenes! I decided to use the following colour scheme: Blue=Excellent, Green=OK, Yellow=Fair, Red=Poor and Purple=’Dangerous’.
Adding a new scene: Click on Custom
Name your Scene something that will help you identify the location and the air quality level, creating 5 levels for each sensor location.
Click on Add Accessories
Select the light that you want to use, in this example I chose the light for Ecclesall.
Now you have associated a light bulb with a location and air quality level. Next we will choose the colour.
Note that you can select colour and brightness level
Click on the x in the top-right hand corner and then click Done
When you have created all your scenes you can arrange them by location and air quality level. Note the Home App is inconsistent in showing which scenes are enabled but it still works perfectly.
It might look like this.
Create the automations / rules
You can then create automations in the Home app but the Airrohr plug-in only exposes levels of air quality (Excellent, Good, Fair etc.) which are based on PM2.5 and PM10. PM2.5 is also part of PM10 so you are counting it twice. The SDS011 sensor is not as accurate for PM10, therefore I do not want to use it.
An alternative is to use the free Elgato Eve app. It is a third party HomeKit app which allows you to create more complex rules to trigger the Scenes that we have defined in the Home app.
This is a multi-step process. The Eve app is not that intuitive (probably because it so powerful) but by the time you create 5 rules for every sensor location you will be an expert!
In the Eve app click on Automation and then Rules
Click Add Rule
You will get a screen telling you that a rule needs at least one trigger and can optionally have conditions, when the trigger is er triggered and the conditions are met, the Scene is set. Click Next to continue
Click Add Trigger
Use Other Value
Scroll down to PM 2.5 Density this has been provided by the Airrohr plug-in
You will then see all the remote sensors that you configured in Homebridge
Enable one (or more) of those sensors and then you will be asked to set a threshold in ug/m3 and a <= or >= operator. So for example I used:
<=3 ug/m3 which I used to create ‘Excellent‘ rules
<=8 ug/m3 which I used to create ‘Good‘ rules
<=11 ug/m3 which I used to create ‘Fair‘ rules
<=24 ug/m3 which I used to create ‘Poor‘ rules
>= 24 ug/m3 which I used to create ‘Dangerous‘ rule
A couple of things to note:
there is no safe lower limit for PM2.5 with research finding health effects at 5 ug/m3
Poor and Dangerous overlap but the range of readings for the sensor is 0-999 and you can’t enter the value directly, you have to use a slider which is pretty impossible to use. I was able to reliably select 3, 8, 11 and 24 and so those I’ve used. For more information on air quality thresholds see my earlier post called Why Who is Not Enough
I did not set a condition but you could try making it so that lights only come on at certain times of day for instance.
Clicking on Next again you should see your list of Scenes created earlier. All you have to do is to select the one that corresponds with the sensor and the air quality level that you are setting.
Once you have created all your rules you should see the lights starting to change. Remember that if you set a default of 60 seconds in Homebridge then the lights will only change every 60 seconds.
Although we have created a rule in a 3rd party app, the rule is actually run on a an Apple HomePod mini or other HomeKit hub. There does not seem to be a way to force a rule to be evaluated. I suspect that once a rule has been triggered, it is not triggered again. This might seem like desired functionality but think of it like this: air quality at a given location is <=3 ug/m3. Luckily it stays that way for 3 days but the rule is only triggered once. If you leave your lights on constantly, this is not a problem but if you want to turn them off every time you leave the room, you will need another mechanism to select the right colour when the lights are turned back on. In the case of the Philips Hue bulbs, you can use the Hue app to specify the Power-on behaviour and this can be Last used colour and brightness. This does not work perfectly. Another solution would be to manually set the colours based on air quality levels (the HomeBridge dashboard can show this information in the log panel) when you first power on the lights.
I have been experimenting with remote air quality monitoring using 4G and a Luftdaten type air quality monitor. These air quality monitors normally use an ESP8266 board which has built in Wi-Fi. If the monitor is within range of a Wi-Fi network this works very well. Sometimes this just isn’t possible though.
Wi-Fi is not always practical, 4G can be expensive
In one case, we wanted to monitor air quality at a school but it just wasn’t possible to connect to their Wi-Fi. I set up a 4G modem there but with a data SIM that cost £30 per month. Once the contract ran out I decided not to renew it. Currently the lowest cost data SIM is probably about £6 per month. Too expensive if you have a whole fleet of them.
Lately, I have been looking into the possibility of air quality monitoring with 4G using an IoT (Internet of things) plan that uses the 4G network. IoT SIMs are designed for low data applications (perhaps a vending machine which orders more snacks when running low).
I recently found a couple of companies that provide IoT services based on normal 4G on a nearly PAYG basis. I decided to order one from a UK based company called Luner for £7.19 including VAT and delivery. (But after you register it, they give you get £10 free credit) They charge £1 per month for the ‘line rental’ and 1p per MB. The estimated data cost for this solution will be about £1 per month. I send air quality and weather data to the international sensory.community project and also to my own server. If I just sent the data to the project servers it would be even less.
Use a Mi-Fi
A Mi-Fi uses the 4G signal to create a personal Wi-Fi network. For the Mi-Fi itself, I bought a reconditioned one for £34.99. It is incredibly small and comes with a 7 hour battery. If you leave the battery out, you can run it continuously via a USB cable. This Mi-Fi does not need to be turned on or configured in any way. It was not even necessary to configure it. I only had to install the Luner micro-SIM into the device and then connected it to power via the included micro-USB cable.
I connected the Luftdaten to connect to the SSID of the Mi-Fi using the provided password. You can always change these values using its web based dashboard. Otherwise it works as it normally would. Note that you can still monitor your air quality sensor by connecting a phone or computer to your Mi-Fi and finding the monitor’s IP address. Be careful to use a low-data mode and to disconnect your phone right away to avoid extra data charges.
Next Steps for air quality monitoring with 4G
Since the Mi-Fi and the Luftdaten monitor are powered by a normal USB cable it is possible to power them from a phone charging battery. I am currently using a 20,000 MAh USB battery pack to power both the Luftdaten and it’s Mi-Fi. Will write another post when I have the results.
I have always wanted a Light Bulb Pollution Monitor. I often check the air quality outside my office before going for a walk in the evening. The Luftdaten sensor outside my house has an onboard web server that you can browse to on any device. It gives you the following overview:
It can get a bit tedious picking up my phone, unlocking it, searching for the sensor on the Home Screen, clicking the icon…
I thought it might be better to have a more immediate visual indicator inside my house which would help me know how clean the air was.
There are already a lot of Luftdaten sensors in Sheffield including one right outside my house. Luftdaten sensors have a map where colour coded hexagon indicate the air quality in each area. I thought it would be nice to mimic this colour scheme:
Green: <10 ug/m3
Yellow: > 10 ug/m3
Orange: > 25 ug/m3
Red: > 50 ug/m3
Purple: >100 ug/m3)
There are a number of home automation platforms and I have some experience with Google’s Home and Homekit by Apple. The Luftdaten sensor is a £30 device which hasn’t been certified by any of these ecosystems usually associated with expensive, high end gadgets.
I don’t have a Google Home Hub but I do have an Apple HomePod Mini which can act as a Homekit hub.
Make HomeKit work with a non-HomeKit sensor
How to get Homekit to work with the DIY Luftdaten sensor? I installed Homebridge on my Mac. Then I installed the Airrohr plug-in from within Homebridge which requires manual configuration using the built-in configuration tool. Add a section that looks like this (note this shows two sensors configured, an indoors one called ‘UpstairsAir’ and an outside one called ‘OutsideAir’:
“name” the label that will be used to identify the sensor later
“accessory” has to be “airrohr” to identify the plugin to use
“jason_data” is this URL where that number is your Luftdaten (actually ESP8266) ID
“sensor_id” doesn’t seem to matter but I set it to the same ID as above
“update_interval_seconds” – note the Luftdaten only checks every 145 seconds unless you change the configuration.
After you edit the configuration, you have to save it and restart Homebridge. This should only take a few seconds. Click on the Status button if you want to watch the log.
Add Homebridge to HomeKit
Add Homebridge as an accessory in Homekit. You do this by pointing your iPhone at a bar code on the main Homebridge screen.
Once your air quality sensor(s) magically appear in Homekit, you can check the air quality, and other parameters like temperature, humidity and barometric pressure.
Use Automations to trigger other Homekit (or even Home bridge accessories as long as you have the correct plug-in). For instance, I could play ‘Smoke on the water’ whenever one of my neighbours lights up their wood burner out of my kids Homepods to warn them to close their windows.
Use HomeKit Automations To Control the Bulb
Note that for each level of air quality, you need to create a rule for what happens when you go above or below that level.
So the rules are
“When Air Quality Drops Below Excellent… (in other words, the air quality is now ‘good’)
“When Air Quality Drops Below Good…
“When Air Quality Drops Below Fair…
“When Air Quality Drops Below Inferior…
Notice that you can’t make a rule about dropping below Poor because Poor is the lowest level.
But you also have to create:
“When Air Quality Rises Above Poor…
“When Air Quality Rises Above Inferior…
“When Air Quality Rises Above Fair…
“When Air Quality Rises Above Good…
Here is a partial list of the Automations necessary followed by an example of what one of them looks like:
I used an LIFX mini Wi-Fi bulb which is already Homekit certified. Homekit lets you specify the exact colour and brightness that you want to associate with each air quality level.
Hope you enjoy this Light Bulb Air Pollution Monitor as much as do!
The plug-in evaluates both PM2.5 and PM10 levels, compares them to WHO daily limits of 25 and 50 ug/m3 respectively by calculating the measurements as percentages of the WHO limits. It does this separately and then averages the two values. I’m not that interested in PM10 and not sure that the SDS011 sensor inside the Luftdaten measures it very accurately.
The WHO limit for PM2.5 is 25 ug/m3 averaged over a day. If the PM2.5 reading is <=40%, in this case 10 ug/m3, this is considered excellent. PM2.5 has no safe limit. 60% of mortality occurs below 7ug/m3. How can 10 be OK?
I’ve noticed that almost once per day, I see that the automations in Homekit have changed by themselves and in a non-helpful way. The automation rule which says “When air quality rises above good” will suddenly change itself to “When air quality rises above excellent. This is not possible as excellent is the highest level. The automation never gets triggered and the light stays on ‘yellow’ which = ‘good’. The same thing happens to the lowest air quality level ‘poor’. The rule which should say “When air quality drops below inferior” gets changed to “When air quality drops below poor” which is not possible. Note that when you edit these rules you cannot choose “Rises above Excellent” or “Drops below Poor” because they would not make sense. For some reason, Homekit changes the automations to this logic. If you have a solution for this, please get in touch!
P.S. Since writing this blog I have updated the rules so that the rules don’t trigger outside the hours of 0900 and 2300. This means that I have had to add a rule to switch off the light at 2300 – otherwise it’s stuck on whatever colour it was at 2300. I will also add a rule to turn on the light (to Green) at 0900 otherwise if the air quality is Excellent in the morning, nothing happens until the air quality drops to Good.
If you click on the Sheffield Air Quality Data menu link, you will see we have a new page which collects in one place a link to all of the available Sheffield Air Quality data. Some of it is real-time or nearly real-time, some of it is a report that comes out on a monthly basis.
If you know of other sources of air quality data in Sheffield, please let me know.
On the day that the delayed Environment Bill has been delayed again there have been calls for adoption of World Health Organisation limits on air pollution here in the UK. This article argues that the WHO limits, while lower than those currently set for the UK / EU do not go far enough.
Current UK Air Pollution Limits vs WHO
Two of the main pollutants covered by the WHO limits are NO2 (Nitrogen Dioxide) and PM 2.5 (Particulate Matter or fine dust where the size of the particles is less than 2.5 microns, a grain of sand is 90 microns).
NO2: WHO and EU / UK limits are currently the same at 40 ug/m3 so we will not consider N02 here.
PM2.5 WHO limit is an average level of 10 ug/m3 over the whole year or 25 ug/m3 over a 24 hour period. The EU / UK limit for PM2.5 is 25 averaged over the whole year, a level we thankfully never achieve in the UK. See below for a comparison of UK and WHO limits.
Annual mean concentrations of PM2.5 across the UK were falling until 2015 when they became static for Urban Background sites (like the one at Devonshire Green) and dropped very slightly for Roadside sites (we have one on Barnsley Road south of the Northern General). Looking at the mean of all the UK locations, the UK is at 10ug/m3 already. 2020 is not shown on this chart but the mean of all the stations capable of hourly PM2.5 readings was 8.44. All of the 63 locations were 10 or below except for three stations.
What about the 24 hour limit?
As well as the annual limit, the WHO sets a 24 hour average limit of 25 ug/m3. Looking at the one DEFRA station at Devonshire Green, Sheffield we can compare the rolling 24 hour average in 2020 vs the WHO limit (shown as a green line):
You can see that generally our 24 hour rolling average is less than the WHO limit. There were exceptions:
18 hours in February
56 hours around the start of the first lockdown
97 hours during Bonfire Week
27 hours at the end of November
Devonshire Green exceeded the WHO 24 hour limit only 2% of the time in 2020
If we were to adopt a 24 hour limit of 25 ug/m3, we would be able to easily achieve that by getting rid of extreme seasonal events – in Sheffield that might be bonfires or allotment burning. It is unlikely that it would justify a Clean Air Zone (for instance).
But The Air Is Cleaner Because Of All The Lockdowns Right?
The average PM2.5 levels across all the hourly stations was lower in 2020 but in previous years it was already very close to the WHO limit of 10.
“The results presented here for burden indicate that more than 60% of the total deaths, of the shortened total population survival and of the decreased life expectancy, derive from concentration below 7 ug/m3”
If the World Health Organisation limit for PM is 10 and 60% of the harm is done below 7, is 10 really what we should be campaigning for?
The current WHO guidelines are over 15 years old. We should not set UK limits to WHO limits unless we track WHO limits as these will be revised in future. The Environment Bill as it stands does not even give us a new PM2.5 limit until October 31st, 2022. Given the most recent delay it may well be 2023 before our new UK limit which may or may not match the 2005 WHO limit would come into force.
In April we finally had enough sensors to decide that we could start sharing a monthly report. This will be mostly just numbers and graphs at first but we are hoping to eventually start sharing our insights into what might be the sources of these particulates. The above graph represents 640,000 data points from about 50 sensors. Not all the sensors were online for the whole month so we have produced an accompanying table for each location showing min, max, avg and count where count is the number of measurements recorded.