purpleair 0.0.4

Creator: bigcodingguy24

Last updated:

Add to Cart

Description:

purpleair 0.0.4

purpleair
A library for working with the Purple Air APIs. See https://api.purpleair.com for API info.
License
This is provided via the MIT License.
APIs
Currently the following APIs are implemented:

Check an API Key

check_key()


Check Sensor Data

get_sensor_data()


Check Sensors Data

get_sensors_data()


Check Sensor History

get_sensor_history()


Check Sensor History (CSV)

get_sensor_history_csv()



See the docstrings and API docs for information on these functions.
How to Get Sensor Id
Go to the https://purpleair.com map. Find your sensor and click it. Look at the url. Here is an example:
https://map.purpleair.com/1/mHUMIDITY/a10/p604800/cC0?select=63217#11.24/38.5924/-121.2715

This is the sensor id: ^^^^^
= 63217

How to Get API Keys
Send an email to contact@purpleair.com requesting API keys.
Examples
Getting Single Sensor Data
In [1]: from purpleair import PurpleAir

In [2]: p = PurpleAir('READ_KEY_HERE')

# See help(p.get_sensor_data) for param names, and see https://api.purpleair.com for API info.

In [3]: p.get_sensor_data('99999')
Out[3]:
{'api_version': 'V1.0.10-0.0.17',
'time_stamp': 1657577251,
'data_time_stamp': 1657577238,
'sensor': {'sensor_index': 99999,
'last_modified': 1628736055,
'date_created': 1624389476,
'last_seen': 1657577216,
'private': 0,
'is_owner': 0,
'name': '99999',
'icon': 0,
'location_type': 0,
'model': 'PA-II',
'hardware': '2.0+BME280+PMSX003-B+PMSX003-A',
'led_brightness': 35,
'firmware_version': '7.00',
'rssi': -63,
'uptime': 2571,
'pa_latency': 251,
'memory': 15272,
'position_rating': 5,
'latitude': 99999,
'longitude': 99999,
'altitude': 99999,
'channel_state': 3,
'channel_flags': 0,
'channel_flags_manual': 0,
'channel_flags_auto': 0,
'confidence': 100,
'confidence_auto': 100,
'confidence_manual': 100,
'humidity': 13,
'humidity_a': 13,
'temperature': 103,
'temperature_a': 103,
'pressure': 1000.2,
'pressure_a': 1000.16,
'analog_input': 0.01,
'pm1.0': 6.1,
'pm1.0_a': 6.1,
'pm1.0_b': 6.1,
'pm1.0_atm': 6.1,
'pm1.0_cf_1': 6.1,
'pm2.5': 9.5,
'pm2.5_a': 9.2,
'pm2.5_b': 9.8,
'pm2.5_atm': 9.5,
'pm2.5_cf_1': 9.5,
'pm2.5_alt': 7.0,
'pm2.5_alt_a': 7.4,
'pm2.5_alt_b': 6.6,
'pm10.0': 9.9,
'pm10.0_a': 9.7,
'pm10.0_b': 10.2,
'pm10.0_atm': 9.9,
'pm10.0_cf_1': 9.9,
'scattering_coefficient': 21.3,
'scattering_coefficient_a': 22.6,
'scattering_coefficient_b': 20.0,
'deciviews': 12.7,
'deciviews_a': 13.1,
'deciviews_b': 12.2,
'visual_range': 109.8,
'visual_range_a': 105.0,
'visual_range_b': 114.6,
'0.3_um_count': 1421,
'0.3_um_count_a': 1508,
'0.3_um_count_b': 1335,
'0.5_um_count': 388,
'0.5_um_count_a': 416,
'0.5_um_count_b': 361,
'1.0_um_count': 72,
'1.0_um_count_a': 74,
'1.0_um_count_b': 70,
'2.5_um_count': 2,
'2.5_um_count_a': 1,
'2.5_um_count_b': 4,
'5.0_um_count': 0,
'5.0_um_count_a': 0,
'5.0_um_count_b': 0,
'10.0_um_count': 0,
'10.0_um_count_a': 0,
'10.0_um_count_b': 0,
'pm1.0_atm_a': 6.08,
'pm2.5_atm_a': 9.19,
'pm10.0_atm_a': 9.71,
'pm1.0_cf_1_a': 6.08,
'pm2.5_cf_1_a': 9.19,
'pm10.0_cf_1_a': 9.71,
'pm1.0_atm_b': 6.11,
'pm2.5_atm_b': 9.82,
'pm10.0_atm_b': 10.18,
'pm1.0_cf_1_b': 6.11,
'pm2.5_cf_1_b': 9.82,
'pm10.0_cf_1_b': 10.18,
'primary_id_a': 1423249,
'primary_key_a': '1BEFQX60DUFTLDA8',
'primary_id_b': 1423251,
'primary_key_b': '1Q1AIWD7K2I3ACJM',
'secondary_id_a': 1423250,
'secondary_key_a': 'P39SSA1REDNK6EW3',
'secondary_id_b': 1423252,
'secondary_key_b': 'SGQY235BUUIQ2SW4',
'stats': {'pm2.5': 9.5,
'pm2.5_10minute': 8.0,
'pm2.5_30minute': 6.6,
'pm2.5_60minute': 6.6,
'pm2.5_6hour': 6.1,
'pm2.5_24hour': 3.8,
'pm2.5_1week': 3.1,
'time_stamp': 1657577216},
'stats_a': {'pm2.5': 9.2,
'pm2.5_10minute': 8.1,
'pm2.5_30minute': 6.7,
'pm2.5_60minute': 6.7,
'pm2.5_6hour': 6.2,
'pm2.5_24hour': 3.9,
'pm2.5_1week': 3.2,
'time_stamp': 1657577216},
'stats_b': {'pm2.5': 9.8,
'pm2.5_10minute': 8.0,
'pm2.5_30minute': 6.5,
'pm2.5_60minute': 6.4,
'pm2.5_6hour': 5.9,
'pm2.5_24hour': 3.8,
'pm2.5_1week': 3.0,
'time_stamp': 1657577216}}}

Getting Multiple Sensors Data via location_id and modified_since
See https://api.purpleair.com for what the parameters mean and how they're used.
In [1]: from purpleair import PurpleAir

In [2]: p = PurpleAir('READ_KEY_HERE')

# See help(p.get_sensors_data) for param names, and see https://api.purpleair.com for API info.

# Pull temperature/humidity from all sensors that are outside and have been modified today
# location_type=0 per api docs means outdoor sensors
# Use modified_since with a datetime corresponding with the first moment of today

In [3]: p.get_sensors_data(fields=('temperature', 'humidity', ), location_type=0, modified_since=datetime(year=datetime.now().year, month=datetime.now().month, day=datetime.now().day))
Out[3]:
{'api_version': 'V1.0.11-0.0.40',
'time_stamp': 1663454033,
'data_time_stamp': 1663454012,
'location_type': 0,
'modified_since': 1663428833,
'max_age': 604800,
'firmware_default_version': '7.00',
'fields': ['sensor_index', 'humidity', 'temperature'],
'data': [[131075, 35, 90],
[131079, 53, 71],
[131077, 35, 78],
[131083, 36, 77],
[131087, 23, 76],
[131085, 12, 85],
[131091, 16, 101],
...

Getting temperature for a Given Sensor via Sensor History and Sensor History CSV
See https://api.purpleair.com for what the parameters mean and how they're used.
In [1]: from purpleair import PurpleAir

In [2]: p = PurpleAir('READ_KEY_HERE')

# See help(p.get_sensor_history) for param names, and see https://api.purpleair.com for API info.

In [3]: p.get_sensor_history(sensor_index=99999, fields=('temperature', ), start_timestamp=datetime.today())
Out[3]:
{'api_version': 'V1.0.11-0.0.40',
'time_stamp': 1663894836,
'sensor_index': 99999,
'start_timestamp': 1663869637,
'end_timestamp': 1664128837,
'average': 10,
'fields': ['time_stamp', 'temperature'],
'data': [[1663888200, 85.0],
[1663893000, 83.8],
[1663879800, 82.0],
[1663873800, 80.2],
[1663877400, 81.0],
[1663884000, 83.2],
[1663890600, 86.0],
[1663870200, 90.2],
[1663876200, 74.4],
[1663889400, 86.0],
[1663891800, 87.0],
[1663881000, 82.2],
[1663874400, 80.4],
[1663875600, 80.0],
[1663892400, 84.2],
[1663885200, 84.0],
[1663887600, 84.4],
[1663886400, 84.6],
[1663870800, 86.4],
[1663883400, 81.6],
[1663871400, 83.8],
[1663875000, 79.6],
[1663880400, 82.0],
[1663872600, 81.2],
[1663872000, 80.8],
[1663882200, 81.4],
[1663878000, 81.2],
[1663888800, 85.6],
[1663891200, 86.8],
[1663887000, 84.8],
[1663893600, 84.8],
[1663879200, 82.0],
[1663890000, 86.0],
[1663882800, 82.4],
[1663873200, 81.0],
[1663878600, 82.0],
[1663869600, 93.6],
[1663885800, 84.0],
[1663881600, 83.0],
[1663884600, 84.0],
[1663876800, 80.8]]}

# See help(p.get_sensor_history_csv) for param names, and see https://api.purpleair.com for API info.

In [4]: print(p.get_sensor_history_csv(sensor_index=99999, fields=('temperature', ), start_timestamp=datetime.today()))
time_stamp,sensor_index,temperature
1663888200,99999,85.0
1663893000,99999,83.8
1663879800,99999,82.0
1663873800,99999,80.2
1663877400,99999,81.0
1663884000,99999,83.2
1663890600,99999,86.0
1663870200,99999,90.2
1663876200,99999,74.4
1663889400,99999,86.0
1663891800,99999,87.0
1663881000,99999,82.2
1663874400,99999,80.4
1663875600,99999,80.0
1663892400,99999,84.2
1663885200,99999,84.0
1663887600,99999,84.4
1663886400,99999,84.6
1663870800,99999,86.4
1663883400,99999,81.6
1663871400,99999,83.8
1663875000,99999,79.6
1663880400,99999,82.0
1663872600,99999,81.2
1663872000,99999,80.8
1663882200,99999,81.4
1663878000,99999,81.2
1663888800,99999,85.6
1663891200,99999,86.8
1663887000,99999,84.8
1663893600,99999,84.8
1663879200,99999,82.0
1663890000,99999,86.0
1663882800,99999,82.4
1663873200,99999,81.0
1663878600,99999,82.0
1663869600,99999,93.6
1663885800,99999,84.0
1663881600,99999,83.0
1663884600,99999,84.0
1663876800,99999,80.8

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.