Skip to main content

painless access to the netatmo weather api

Project description

https://gitlab.com/nobodyinperson/python3-patatmo/badges/master/build.svg https://img.shields.io/badge/docs-sphinx-brightgreen.svg https://gitlab.com/nobodyinperson/python3-patatmo/badges/master/coverage.svg https://badge.fury.io/py/patatmo.svg

This packages provides easy access to the patatmo API. It is painless as it completely and intelligently hides the OAuth2 authentication from you.

Disclaimer

This software to access the Netatmo Weather API emerged as part of thesis and also out of private interest. The author is not in any way affiliated with Netatmo (SAS).

Capabilities

Currently, the weather API’s methods Getpublicdata, Getstationsdata and Getmeasure are implemented.

Example usage

An example of obtaining all public station’s data in the region of Hamburg/Germany:

import patatmo

# your netatmo connect developer credentials
credentials = {
    "password":"5uP3rP45sW0rD",
    "username":"user.email@internet.com",
    "client_id":    "03012823b3fd2e420fbf980b",
    "client_secret":"YXNkZmFzZGYgamFzamYgbGFzIG"
}

# configure the authentication
authentication = patatmo.api.authentication.Authentication(
    credentials=credentials,
    tmpfile = "temp_auth.json"
)
# providing a path to a tmpfile is optionally.
# If you do so, the tokens are stored there for later reuse,
# e.g. next time you invoke this script.
# This saves time because no new tokens have to be requested.
# New tokens are then only requested if the old ones expire.

# create a api client
client = patatmo.api.client.NetatmoClient(authentication)

# lat/lon outline of Hamburg/Germany
hamburg_region = {
    "lat_ne" : 53.7499,
    "lat_sw" : 53.3809,
    "lon_ne" : 10.3471,
    "lon_sw" : 9.7085,
}

# issue the API request
hamburg = client.Getpublicdata(region = hamburg_region)

# convert the response to a pandas.DataFrame
print(hamburg.dataframe())
output (excerpt):

     index   altitude  humidity                 id   latitude  longitude  \
0        0  30.000000        84  70:ee:50:12:9a:b8  53.516950  10.155990
1        1  23.000000        83  70:ee:50:03:da:4c  53.523361  10.167193
2        2  23.000000        76  70:ee:50:01:47:34  53.510080  10.165600
3        3  15.000000        93  70:ee:50:03:bc:2c  53.530948  10.134062
..     ...        ...       ...                ...        ...        ...

     pressure  temperature       time_humidity       time_pressure  \
0      1029.1          8.1 2017-02-16 10:59:31 2017-02-16 11:00:05
1      1026.7          8.3 2017-02-16 10:53:53 2017-02-16 10:54:01
2      1030.0          9.4 2017-02-16 10:53:06 2017-02-16 10:53:42
3      1026.8          8.0 2017-02-16 10:56:32 2017-02-16 10:56:54
..        ...          ...                 ...                 ...

       time_temperature       timezone
0   2017-02-16 10:59:31  Europe/Berlin
1   2017-02-16 10:53:53  Europe/Berlin
2   2017-02-16 10:53:06  Europe/Berlin
3   2017-02-16 10:56:32  Europe/Berlin
..                  ...            ...

[708 rows x 12 columns]

Install

This package is on PyPi. To install patatmo, run

pip install --user patatmo

Documentation

You can find detailed documentation of this package here on on Gitlab.

Development

The following might only be interesting for developers

Local installation

Install this module from the repository root via pip:

# local user library under ~/.local
pip3 install --user .
# in "editable" mode
pip3 install --user -e .

Testing

To be able to run all tests, you need to specify valid credentials and a device and model id of your test station. You can do so either in the file tests/USER_DATA.json (e.g. copy the example file cp tests/USER_DATA.json.example tests/USER_DATA.json and adjust it) or via the environment variables

NETATMO_CLIENT_ID
NETATMO_CLIENT_SECRET
NETATMO_USERNAME
NETATMO_PASSWORD
NETATMO_DEVICE_ID
NETATMO_MODULE_ID

Otherwise, only the possible tests are run.

Then:

  • make test to run all tests directly

  • make testverbose to run all tests directly with verbose output

  • make setup-test to run all tests via the ./setup.py test mechanism

  • make coverage to get a test coverage

Versioning

  • make increase-patch to increase the patch version number

  • make increase-minor to increase the minor version number

  • make increase-major to increase the major version number

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

patatmo-0.2.2.linux-x86_64.tar.gz (31.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

patatmo-0.2.2-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file patatmo-0.2.2.linux-x86_64.tar.gz.

File metadata

File hashes

Hashes for patatmo-0.2.2.linux-x86_64.tar.gz
Algorithm Hash digest
SHA256 1ca05c5cfe6229080ce4e51d80265fe21414f1c02cd5d235accaf125334df1cb
MD5 c8cfa8870a23456319a7ae70a0caea6d
BLAKE2b-256 c8da51ad2aa6fa4accbc62e03273eebc9bf7e65b7f21f17b305f5471f4fe1c5a

See more details on using hashes here.

File details

Details for the file patatmo-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for patatmo-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ca6d0fb2e765084992db1d97ec0f6a9f8ac40c533129b1787ccf3205cdf880ca
MD5 fa9dcf7729d8f52ef264c27035dda7fa
BLAKE2b-256 9d792b3aa3fe93cb6c1474e36a82c0c1d6eb4681a8d537d75a3637146255af83

See more details on using hashes here.

Supported by

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