Python library to download gas consumption from a GrDF (French Gas Company) account
Project description
PyGazpar
PyGazpar is a Python library for getting natural gas consumption from GrDF French provider.
Their natural gas meter is called Gazpar. It is wireless and transmit the gas consumption once per day.
All consumption data is available on the client account at GrDF Web Site (https://monespace.grdf.fr).
PyGazpar automatically goes through the Web Site and download the consumption data, and make it available in a Python structure.
Installation
Requirements
PyGazpar does not require Selenium and corresponding geckodriver to work.
With the new GrDF web site, it is possible to load the consumption data far easily than before.
PyGazpar uses Poetry for dependency and package management.
Create your virtual environment
$ cd /path/to/my_project_folder/
$ poetry install
PyGazpar installation
Use the package manager pip to install PyGazpar.
pip install pygazpar
You can also download the source code and install it manually.
cd /path/to/pygazpar/
$ poetry install
Usage
Command line:
- Standard usage (using Json GrDF API).
$ pygazpar -u 'your login' -p 'your password' -c 'your PCE identifier' --datasource 'json'
- Alternate usage (using Excel GrDF document).
$ pygazpar -u 'your login' -p 'your password' -c 'your PCE identifier' -t 'temporary directory where to store Excel file (ex: /tmp)' --datasource 'excel'
- Test usage (using local static data files, do not connect to GrDF site).
$ pygazpar -u 'your login' -p 'your password' -c 'your PCE identifier' --datasource 'test'
Library:
- Standard usage (using Json GrDF API).
import pygazpar
client = pygazpar.Client(pygazpar.JsonWebDataSource(
username='your login',
password='your password')
)
# Returns the list of your PCE identifiers attached to your account.
pce_identifiers = client.get_pce_identifiers()
# Returns the daily and monthly consumptions for the last 60 days on your PCE identifier.
data = client.load_since(pce_identifier='your PCE identifier',
last_n_days=60,
frequencies=[pygazpar.Frequency.DAILY, pygazpar.Frequency.MONTHLY])
See samples/jsonSample.py file for the full example.
- Alternate usage (using Excel GrDF document).
import pygazpar
client = pygazpar.Client(pygazpar.ExcelWebDataSource(
username='your login',
password='your password')
)
# Returns the list of your PCE identifiers attached to your account.
pce_identifiers = client.get_pce_identifiers()
# Returns the daily and monthly consumptions for the last 60 days on your PCE identifier.
data = client.load_since(pce_identifier='your PCE identifier',
last_n_days=60,
frequencies=[pygazpar.Frequency.DAILY, pygazpar.Frequency.MONTHLY])
See samples/excelSample.py file for the full example.
- Test usage (using local static data files, do not connect to GrDF site).
import pygazpar
client = pygazpar.Client(pygazpar.TestDataSource())
data = client.load_since(pce_identifier='your PCE identifier',
last_n_days=10,
frequencies=[pygazpar.Frequency.DAILY, Frequency.MONTHLY])
See samples/testSample.py file for the full example.
Output:
data =>
{
"daily": [
{
"time_period": "13/10/2022",
"start_index_m3": 15724,
"end_index_m3": 15725,
"volume_m3": 2,
"energy_kwh": 17,
"converter_factor_kwh/m3": 11.16,
"temperature_degC": null,
"type": "Mesur\u00e9",
"timestamp": "2022-12-13T23:58:35.606763"
},
...
{
"time_period": "11/12/2022",
"start_index_m3": 16081,
"end_index_m3": 16098,
"volume_m3": 18,
"energy_kwh": 201,
"converter_factor_kwh/m3": 11.27,
"temperature_degC": -1.47,
"type": "Mesur\u00e9",
"timestamp": "2022-12-13T23:58:35.606763"
}
],
"monthly": [
{
"time_period": "Novembre 2022",
"start_index_m3": 15750,
"end_index_m3": 15950,
"volume_m3": 204,
"energy_kwh": 2227,
"timestamp": "2022-12-13T23:58:35.606763"
},
{
"time_period": "D\u00e9cembre 2022",
"start_index_m3": 15950,
"end_index_m3": 16098,
"volume_m3": 148,
"energy_kwh": 1664,
"timestamp": "2022-12-13T23:58:35.606763"
}
]
}
Limitation
PyGazpar relies on how GrDF Web Site is built.
Any change in the Web site may break this library.
We expect in close Future that GrDF makes available an open API from which we can get safely their data.
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
License
Project status
PyGazpar has been initiated for integration with Home Assistant.
Corresponding Home Assistant integration custom component is available here.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pygazpar-1.3.1.tar.gz.
File metadata
- Download URL: pygazpar-1.3.1.tar.gz
- Upload date:
- Size: 31.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f31baa9eb3655d1e988bd93718c49be255267c3a07d28b089123a5d4762b444
|
|
| MD5 |
c03e57ea9249fbcecbec90b7993adfae
|
|
| BLAKE2b-256 |
05e48c9b5c1413d991c72ab628f90541036aa79e723f9de756977c82e57aec10
|
Provenance
The following attestation bundles were made for pygazpar-1.3.1.tar.gz:
Publisher:
create-release.yaml on ssenart/PyGazpar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pygazpar-1.3.1.tar.gz -
Subject digest:
5f31baa9eb3655d1e988bd93718c49be255267c3a07d28b089123a5d4762b444 - Sigstore transparency entry: 302373867
- Sigstore integration time:
-
Permalink:
ssenart/PyGazpar@9a9fb96cdc81a10a2d04eb5bb1fafe87aad80644 -
Branch / Tag:
refs/heads/release/1.3.1 - Owner: https://github.com/ssenart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
create-release.yaml@9a9fb96cdc81a10a2d04eb5bb1fafe87aad80644 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file pygazpar-1.3.1-py3-none-any.whl.
File metadata
- Download URL: pygazpar-1.3.1-py3-none-any.whl
- Upload date:
- Size: 30.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4cbe27bc3596e4f02f79bb0a00acfb5e33a9cc158abab4c968e0869c44cab1d
|
|
| MD5 |
42237db17f2898655d6a488f5633863b
|
|
| BLAKE2b-256 |
84aac6fdf99617b558160693904a7c0ccbd2086ea03faf6e8d96f28fea60b9c4
|
Provenance
The following attestation bundles were made for pygazpar-1.3.1-py3-none-any.whl:
Publisher:
create-release.yaml on ssenart/PyGazpar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pygazpar-1.3.1-py3-none-any.whl -
Subject digest:
c4cbe27bc3596e4f02f79bb0a00acfb5e33a9cc158abab4c968e0869c44cab1d - Sigstore transparency entry: 302373897
- Sigstore integration time:
-
Permalink:
ssenart/PyGazpar@9a9fb96cdc81a10a2d04eb5bb1fafe87aad80644 -
Branch / Tag:
refs/heads/release/1.3.1 - Owner: https://github.com/ssenart
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
create-release.yaml@9a9fb96cdc81a10a2d04eb5bb1fafe87aad80644 -
Trigger Event:
workflow_dispatch
-
Statement type: