aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/elvia_gridtariff.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/elvia_gridtariff.py')
-rw-r--r--scripts/elvia_gridtariff.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/scripts/elvia_gridtariff.py b/scripts/elvia_gridtariff.py
new file mode 100644
index 0000000..bcf4bd7
--- /dev/null
+++ b/scripts/elvia_gridtariff.py
@@ -0,0 +1,69 @@
+#!/usr/bin/python3
+''' get grid tariffs'''
+
+import os
+import sys
+from datetime import datetime
+from datetime import timedelta
+import requests
+from tzlocal import get_localzone
+
+from common import dbi
+
+# API documentation: https://elvia.portal.azure-api.net/docs/services/gridtariffapi/operations/post-digin-api-v-tariffquery-meteringpointsgridtariffs?
+
+apiKey = os.environ['el_elvia_grid_api_key']
+apiUrl = "https://elvia.azure-api.net/grid-tariff/digin/api/1/tariffquery/meteringpointsgridtariffs"
+meteringPointId = os.environ['el_meteringPointId']
+
+pg_db = os.environ['el_pg_db']
+pg_host = os.environ['el_pg_host']
+pg_table = "elvia_gridtariff"
+
+
+startTime = datetime.now(get_localzone()) - timedelta(days = 2)
+startTime = startTime.strftime('%Y-%m-%d')
+
+endTime = datetime.now(get_localzone()) + timedelta(days = 2)
+endTime = endTime.strftime('%Y-%m-%d')
+
+
+### Get the data
+try:
+ url = apiUrl
+ # Request headers
+ hdr = {
+ 'Cache-Control': 'no-cache',
+ 'X-API-Key': apiKey,
+ 'Content-Type': 'application/json'
+ }
+
+ # Request body
+ body = {
+ 'starttime': startTime,
+ 'endtime': endTime,
+ 'meteringPointIds': [ meteringPointId ]
+ }
+
+ response = requests.post(url, headers=hdr, json=body)
+ if response.status_code != 200:
+ print(response.status_code)
+ print("Oh shit")
+ response.raise_for_status()
+
+except Exception as e:
+ print("oh lol")
+ sys.exit(e)
+
+data = response.json()
+
+print("Got "+ str(len(data['gridTariffCollections'][0]['gridTariff']['tariffPrice']['hours'])) +" items from between "+ startTime + " and " + endTime)
+
+
+### insert data into database
+
+values = []
+for item in data['gridTariffCollections'][0]['gridTariff']['tariffPrice']['hours']:
+ values.append((meteringPointId, item['startTime'], item['expiredAt'], item['shortName'], item['isPublicHoliday'], item['energyPrice']['total'], item['energyPrice']['totalExVat']))
+
+dbi("INSERT INTO " + pg_table + " VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT (meteringPointId,startTime,endTime) DO NOTHING", values, verbose=True)