Guide to publishing Shinyei sensor data on the World Air Quality Index project

This page is made for those interrested in measuring Air Quality based on the Shinyei sensor. For more information about the Shinyei sensor, please refer to this on-going experiment page: sensor/shinyei/.


Hardware Setup

For this experiement, the hardware used to retrieve the data from the Shinyei Sensor is a PC Duino - but any Raspberry PI would also work fine.

All which is needed, on the PC Duino side, to extract the information from the Shinyei sensor is two digital input. In our configuration, we use the GPIO6 and GPIO7 from the PC Duino. Since the PC duino also provide a 5V output, we directly power supply the SHinyei from the Pc Duino pins.

For now, threshold input (IN1) is left unsed, but it will be used later as a way to split particule by size, and hence detect both PM10 and PM2.5 particules.


The scripts are available online from github. They are based on the Air Quality data-upload API described at api/sensor.

To run the scripts, you just need to use this simple command: python It will output data in the following style:

 $ python

16:51:27: 13.02 9.27
16:51:32: 10.15 3.03
16:51:37: 8.58 1.86
16:51:42: 8.97 1.01
16:51:47: 8.32 1.05
16:51:52: 8.22 1.05
16:51:57: 7.33 0.75
16:52:02: 6.72 0.75
16:52:07: 6.05 0.75
16:52:12: 6.4 0.75
16:52:17: 7.13 0.75
--- 16:52:22 --- 0.073053159646 0.00751250729585 ---
Posting {'type': 'shinyei-pdp42ns-1u', 'unit': 'lpo', 'value': 0.07305315964603189} {'type': 'shinyei-pdp42ns-2.5u', 'unit': 'lpo', 'value': 0.007512507295851456} -> 200 OK
Server says {u'sensorID': u'589', u'result': u'ok', u'dataids': [2835085, 2835086]}
Firs column is obviously the current time. The second and third column are the measured LPO (in percentage, from 0 to 100). The script measures the LPO over 1 minute, so the 'current' LPO indication will be displayed 10 times. The 1 minute average is displayed as '--- 16:52:22 --- 0.073053159646 0.00751250729585 ---' (unit from 0 to 1). After that, the averaged LPO is posted ( Posting {'type': 'shinyei-pdp42ns-1u', 'unit': 'lpo', 'value': 0.07305315964603189} {'type': 'shinyei-pdp42ns-2.5u', 'unit': 'lpo', 'value': 0.007512507295851456} -> 200 OK ) to the server.



Once your setup is working, do not forget to use your own sensor ID, by replacing the value "shinyei.test-sensor" in the file with your own sensor ID. Sensor ID can be any string, but we recommand to use the convention sensor-type.(location+).your-name, such as for instance shinyei.china.beijing.haidian.john-doe.

 uploader = AirQualityUploader("shinyei.test-sensor")
Once you have choosen your own sensor ID, do not forget to protect it by password so that no-one else but you can upload data. For that, you just need to contact us and let us the ID you want to protect. We will then provide you the password to be used.


Still to be done

There are sitll many things to be done. Si if you want to join us and support our work, here are some of the things which we need help for:
  • Hardware connectivity based on the Raspberry PI, Beagle Bonne and other IOT Hardware.
  • Use an intermediate arduino-like to poll and pre-process the data from the Shinyei.
  • Improve the python-scripts with fail-safe support (i.e. keep the data even though if there is no WIFI connection).


Read or publish comments (they rely on Disqus)

대기질 및 환경 오염 측정에 관하여 :

대기질 지수 단계에 대하여

0 - 50 좋음 대기오염 관련 질환자군에서도 영향이 유발되지 않을 수준
51 -100 보통 환자군에게 만성 노출시 경미한 영향이 유발될 수 있는 수준
101-150 민감군영향 환자군 및 민감군에게 유해한 영향이 유발될 수 있는 수준
151-200 나쁨 환자군 및 민감군(어린이, 노약자 등)에게 유해한 영향 유발, 일반인도 건강상 불쾌감을 경험할 수 있는 수준
201-300 매우나쁨 환자군 및 민감군에게 급성 노출시 심각한 영향 유발, 일반인도 약한 영향이 유발될 수 있는 수준
300+ 위험 환자군 및 민감군에게 응급 조치가 발생되거나, 일반인에게 유해한 영향이 유발될 수 있는 수준
(Reference: see

대기질과 오염에 대해 더 많은 것을 알아보려면 위키피디아의 대기질 문서(영어)을 보거나 대기질과 건강에 대한 AirNow 가이드(영어)를 참조해보세요.

매우 유용한 베이징의 의학박사 Richard Saint Cyr MD의 건강 관련 팁을 보려면 의 블로그를 확인하세요.

사용안내: 모든 대기 질 데이터는 발행 당시에 검증되지 않았으며, 품질 보증으로 인해 이러한 데이터는 예고없이 언제든지 수정 될 수 있습니다. 세계 대기 품질 지수 프로젝트는이 정보의 내용을 편집함에있어 합당한 기술과 관심을 행사했으며 어떤 상황에서도 세계 대기 품질 지수 (World Air Quality Index) 프로젝트 팀 또는 그 대리인은이 데이터의 공급으로 인해 직접 또는 간접적으로 발생하는 손실, 상해 또는 손해에 대해 계약, 불법 행위 또는 기타의 책임을지지 않습니다.


언어 설정 :

Temperature unit: