Metadata-Version: 2.1
Name: awattar
Version: 0.2.1
Summary: aWATTar Client to analyse the energy market data
Home-page: https://github.com/Gransi/awattar
Author: Peter Gransdorfer
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License (GPL)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.10
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests
Requires-Dist: datetime
Requires-Dist: python-dateutil
Requires-Dist: click

# awattar

##  Installation

```sh
$ pip install awattar
```

This package is tested with Python 3.10 

## Command line

Use the command `awattar --help` and `awattar fetch-prices --help` to get more information.

```shell
$ awattar --help
Usage: awattar [OPTIONS] COMMAND [ARGS]...

  Access aWATTar's energy prices API.

Options:
  --country [DE|AT]  the API's target country (either Germany or Austria),
                     default: AT
  --help             Show this message and exit.

Commands:
  fetch-prices  Fetch hourly energy prices
```

### Command line example

```shell
$  awattar --country AT fetch-prices --day 2023-02-20
[
    {
        "start": "2023-02-20T00:00:00+01:00",
        "end": "2023-02-20T01:00:00+01:00",
        "price": 85.96,
        "unit": "Eur/MWh",
        "currency": "Eur",
        "energy_unit": "MWh",
        "price_per_kWh": 0.08596
    },
    ...
]
```

##  Examples

```python
    from awattar.client import AwattarClient

    print ('Connect to aWATTar')
    client = AwattarClient('AT') # or DE for Germany

    print ('Get marketdata from API')
    data =  client.request()
    
    for item in data:
        print(f'{item.start_datetime:%Y-%m-%d %H:%M:%S} - {item.end_datetime:%Y-%m-%d %H:%M:%S} - {(item.marketprice / 1000):.4f} EUR/kWh')

```

Output
```
Connect to aWATTar
Get marketdata from API
2020-08-11 13:00:00 - 2020-08-11 14:00:00 - 0.0350 EUR/kWh
2020-08-11 14:00:00 - 2020-08-11 15:00:00 - 0.0341 EUR/kWh
2020-08-11 15:00:00 - 2020-08-11 16:00:00 - 0.0340 EUR/kWh
2020-08-11 16:00:00 - 2020-08-11 17:00:00 - 0.0387 EUR/kWh
2020-08-11 17:00:00 - 2020-08-11 18:00:00 - 0.0417 EUR/kWh
2020-08-11 18:00:00 - 2020-08-11 19:00:00 - 0.0430 EUR/kWh
2020-08-11 19:00:00 - 2020-08-11 20:00:00 - 0.0465 EUR/kWh
2020-08-11 20:00:00 - 2020-08-11 21:00:00 - 0.0413 EUR/kWh
2020-08-11 21:00:00 - 2020-08-11 22:00:00 - 0.0400 EUR/kWh
2020-08-11 22:00:00 - 2020-08-11 23:00:00 - 0.0369 EUR/kWh
2020-08-11 23:00:00 - 2020-08-12 00:00:00 - 0.0309 EUR/kWh
```

##  Usage

### Initialize Awattar Client

Currently only Austria and Germany are supported

```python
    client = AwattarClient('AT') # or DE for Germany
```

### Get Market data

Get current Market data
```python
    data = client.request()
```

Get Market data from 2020-05-17
```python
    data = client.request(datetime.datetime(2020, 5, 17))
```

Get Market data between 2020-05-18 and 2020-05-19
```python
    data = client.request(datetime.datetime(2020, 5, 18), datetime.datetime(2020, 5, 19))
```

### Analyse Market data

```python
    print ('Connect to aWATTar')
    client = AwattarClient('AT')

    print ('Get Market data from API')
    client.request()
    
    min_item = client.min()
    print(f'Min: {min_item.start_datetime:%Y-%m-%d %H:%M:%S} - {min_item.end_datetime:%Y-%m-%d %H:%M:%S} - {(min_item.marketprice / 1000):.4f} EUR/kWh')

    max_item = client.max()
    print(f'Max: {max_item.start_datetime:%Y-%m-%d %H:%M:%S} - {max_item.end_datetime:%Y-%m-%d %H:%M:%S} - {(max_item.marketprice / 1000):.4f} EUR/kWh')

    mean_item = client.mean()
    print(f'Mean: {mean_item.start_datetime:%Y-%m-%d %H:%M:%S} - {mean_item.end_datetime:%Y-%m-%d %H:%M:%S} - {(mean_item.marketprice / 1000):.4f} EUR/kWh')


    best_slot = client.best_slot(3)
    if best_slot is None:
        print("No slot found")
    else:        
        print(f'Best slot 1: {best_slot.start_datetime:%Y-%m-%d %H:%M:%S} - {best_slot.end_datetime:%Y-%m-%d %H:%M:%S} - {(best_slot.marketprice / 1000):.4f} EUR/kWh')

    best_slot = client.best_slot(1,datetime.datetime(2020, 10, 5, 0, 0, 0),datetime.datetime(2020, 10, 6, 3, 0, 0))
    if best_slot is None:
        print("No slot found")
    else:        
        print(f'Best slot 2: {best_slot.start_datetime:%Y-%m-%d %H:%M:%S} - {best_slot.end_datetime:%Y-%m-%d %H:%M:%S} - {(best_slot.marketprice / 1000):.4f} EUR/kWh')
```

Output
```
Connect to aWATTar
Get Market data from API
Min: 2020-10-06 03:00:00 - 2020-10-06 04:00:00 - 0.0107 EUR/kWh
Max: 2020-10-05 19:00:00 - 2020-10-05 20:00:00 - 0.0544 EUR/kWh
Mean: 2020-10-05 17:00:00 - 2020-10-06 17:00:00 - 0.0349 EUR/kWh
Best slot 1: 2020-10-06 02:00:00 - 2020-10-06 05:00:00 - 0.0149 EUR/kWh
Best slot 2: 2020-10-06 02:00:00 - 2020-10-06 03:00:00 - 0.0190 EUR/kWh
```

# Source code
The source code is currently available on Github: [https://github.com/Gransi/awattar](https://github.com/Gransi/awattar)
