aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/tibber_prices.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/tibber_prices.py')
-rw-r--r--scripts/tibber_prices.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/scripts/tibber_prices.py b/scripts/tibber_prices.py
new file mode 100644
index 0000000..81b3afb
--- /dev/null
+++ b/scripts/tibber_prices.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+''' import energy prices from tibber '''
+
+import os
+import sys
+from datetime import datetime
+from datetime import timedelta
+from tzlocal import get_localzone
+import requests
+
+from common import dbi
+
+
+# variables
+apiKey = os.environ['el_tibber_token']
+apiUrl = "https://api.tibber.com/v1-beta/gql"
+
+pg_db = os.environ['el_pg_db']
+pg_host = os.environ['el_pg_host']
+pg_table = "tibber_prices"
+
+startTime = datetime.now(get_localzone()) - timedelta(days = 1)
+startTime = startTime.isoformat('T')
+
+endTime = datetime.now(get_localzone()).isoformat('T')
+
+# Get the data
+try:
+ url = apiUrl
+
+ # Request headers
+ hdr = {
+ 'Authorization': "Bearer " + apiKey,
+ 'Content-Type': 'application/json',
+ }
+
+ body = {"query":"""{
+ viewer {
+ homes {
+ currentSubscription{
+ priceInfo{
+ today { total energy tax startsAt level currency }
+ tomorrow { total energy tax startsAt level currency }
+ }
+ }
+ }
+ } }"""}
+
+ 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()
+
+numdata = len(data["data"]["viewer"]["homes"][0]["currentSubscription"]["priceInfo"]["today"]) + len(data["data"]["viewer"]["homes"][0]["currentSubscription"]["priceInfo"]["tomorrow"])
+
+print("Got " + str(numdata) + " rows from Tibber")
+
+### insert data into database
+
+# prices
+prices = []
+for item in data["data"]["viewer"]["homes"][0]["currentSubscription"]["priceInfo"]["today"]:
+ prices.append((item["startsAt"],item["total"],item["energy"],item["tax"],item["level"]))
+
+for item in data["data"]["viewer"]["homes"][0]["currentSubscription"]["priceInfo"]["tomorrow"]:
+ prices.append((item["startsAt"],item["total"],item["energy"],item["tax"],item["level"]))
+
+
+dbi("INSERT INTO " + pg_table + " VALUES(%s,%s,%s,%s,%s) ON CONFLICT (startsat) DO NOTHING", prices, verbose=True)