Skip to main content

Python Wrappers for AirThings API

Project description

airthings-api

Description

Python Wrappers for AirThings API

Installation

Usage (Jupyter)

NB: You can now use async/await at the top level in the IPython terminal and in the notebook, it should — in most of the cases — “just work”. Update IPython to version 7+, IPykernel to version 5+.

# import the library
ata = __import__('airthings-api')
import aiohttp

session = aiohttp.ClientSession()

# Create an API manager; use your dashboard's credentials
manager = ata.api.web.AirThingsManager(
    username='jdoe@gmail.com', 
    password='xxxxxxxx',
    session=session) 

# Get the 'me' instance
me = await manager.get_me_instance()

print(me.email)
# Should be 'jdoe@gmail.com' I guess

# Get the 'locations' instances
locations_instance = await manager.get_locations_instance()

# Print devices and sensor values
for location in locations_instance.locations:
    for device in location.devices:
        print('device: {0}'.format(device.room_name))

        for current_sensor_value in device.current_sensor_values:
            print('  {0}: {1} {2}'.format(
                current_sensor_value.type_,
                current_sensor_value.value,
                current_sensor_value.provided_unit))

await session.close()

# device: Wave Mini
#   temp: 21.6 c
#   humidity: 41.0 pct
#   voc: 253.0 ppb
#   mold: 0.0 riskIndex
# device: Wave
#   radonShortTermAvg: 103.0 bq
#   temp: 20.5 c
#   humidity: 47.0 pct
# device: Hub AirThings

Usage (Python file)

NB: If you run in a Python file, wrapping the call within asyncio.run(...) will do the trick.

ata = __import__('airthings-api')
import aiohttp
import asyncio


async def test():

    session = aiohttp.ClientSession()

    # Create an API manager; use your dashboard's credentials
    manager = ata.api.web.AirThingsManager(
        username='jdoe@gmail.com', 
        password='xxxxxxxx',
        session=session) 

    # Get the 'me' instance
    me = await manager.get_me_instance()

    print(me.email)
    # Should be 'jdoe@gmail.com' I guess

    # Get the 'locations' instances
    locations_instance = await manager.get_locations_instance()

    # Print devices and sensor values
    for location in locations_instance.locations:
        for device in location.devices:
            print('device: {0}'.format(device.room_name))

            for current_sensor_value in device.current_sensor_values:
                print('  {0}: {1} {2}'.format(
                    current_sensor_value.type_,
                    current_sensor_value.value,
                    current_sensor_value.provided_unit))

    await session.close()

    # device: Wave Mini
    #   temp: 21.6 c
    #   humidity: 41.0 pct
    #   voc: 253.0 ppb
    #   mold: 0.0 riskIndex
    # device: Wave
    #   radonShortTermAvg: 103.0 bq
    #   temp: 20.5 c
    #   humidity: 47.0 pct
    # device: Hub AirThings


if __name__ == '__main__':

    asyncio.run(test())

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

AirThings-API-0.1.5.tar.gz (10.5 kB view hashes)

Uploaded Source

Built Distribution

AirThings_API-0.1.5-py3-none-any.whl (13.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page