diff --git a/EngieApi/Contracts.py b/EngieApi/Contracts.py index edb82bb..e10167c 100644 --- a/EngieApi/Contracts.py +++ b/EngieApi/Contracts.py @@ -1,4 +1,5 @@ import datetime +from typing import List import numpy as np @@ -8,7 +9,6 @@ from EngieApi.EngieAPI import EngieAPI class Dynamic: def __init__(self, btw=1.21): - self.btw = btw self.vast = 100.7 # EUR / jaar @@ -35,22 +35,26 @@ class Dynamic: prijs = 0.2040 + 0.1 * (epex_spot) # zonder BTW per Cent/kWh # cent to eur prijs /= 100 - prijs += self.groene_stroom + self.wwk + self.energiebijdrage + self.federale_accijns - + prijs += ( + self.groene_stroom + self.wwk + self.energiebijdrage + self.federale_accijns + ) + # distirbution costs d = Capaciteitstarief() p, yearly = d.calculate_per_kwh(peak=peak) prijs += p - + # add btw prijs *= self.btw return prijs, yearly + self.vast - def calculate_total_price_for_day(self, verbruik: list[int], date: datetime.date, peak: float) -> float: + def calculate_total_price_for_day( + self, verbruik: List[int], date: datetime.date, peak: float + ) -> float: """calculate_total_price_for_day calculate total price for given usage :param verbruik: a list of hourly usage values - :type verbruik: list[int] + :type verbruik: List[int] :param date: the date for the energy prices :type date: datetime.date :param peak: the monthly peak for the distribution costs diff --git a/EngieApi/EngieAPI.py b/EngieApi/EngieAPI.py index 9af6120..2deff5a 100755 --- a/EngieApi/EngieAPI.py +++ b/EngieApi/EngieAPI.py @@ -1,9 +1,10 @@ import json from datetime import date, datetime, timedelta +from typing import List import requests -date_format = '%Y-%m-%dT%H:%M:%S%z' +date_format = "%Y-%m-%dT%H:%M:%S%z" class EngieAPI: @@ -18,10 +19,10 @@ class EngieAPI: "User-Agent": "Mozilla/5.0 (Linux; Android 7.0; SM-G930V Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36", "Referer": "https://engieenergy.azurewebsites.net/", "Content-Length": "294", - "Accept-Language": "en-GB,en;q=0.9" + "Accept-Language": "en-GB,en;q=0.9", } - def get_epex_spot(self, date: date) -> list[float]: + def get_epex_spot(self, date: date) -> List[float]: to_date = datetime(date.year, date.month, date.day, 23, 59, 59) from_date = to_date - timedelta(days=1, hours=23, minutes=59, seconds=59) @@ -29,14 +30,10 @@ class EngieAPI: "ApplicationDate": { "From": from_date.strftime(date_format), "To": to_date.strftime(date_format), - "UseTime": True + "UseTime": True, }, "IncludeOffset": True, - "Items": [ - { - "IdRef": 7070 - } - ] + "Items": [{"IdRef": 7070}], } res = requests.post(self.url, headers=self.headers, data=json.dumps(data)) @@ -46,7 +43,7 @@ class EngieAPI: # check if the Date is the same as the one requested, attention to the timezone if datetime.strptime(j["Date"], date_format).date() == date: values.append(j["Value"]) - + if not values: raise ValueError("No data found for this date") return values diff --git a/setup.py b/setup.py index cf14c61..f09d187 100644 --- a/setup.py +++ b/setup.py @@ -2,6 +2,6 @@ from setuptools import find_packages, setup setup( name="EngieApi", - version="0.1", + version="0.1.1", packages=find_packages(), )