#!/usr/bin/env python3 """ import energy prices from tibber """ import os import sys from datetime import datetime, timedelta import common import requests from tzlocal import get_localzone # variables apiKey = os.environ["el_tibber_token"] apiUrl = "https://api.tibber.com/v1-beta/gql" 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, timeout=10) if response.status_code != 200: print(response.status_code) print("Oh shit") response.raise_for_status() except requests.exceptions.RequestException 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"]) ) # SQL sql = ( """INSERT INTO tibber_prices VALUES(%s, %s, %s, %s, %s) ON CONFLICT (startsat) DO NOTHING""", ) common.dbi(sql, prices, verbose=True)