#!/usr/bin/env python3

import requests
import urllib3
import datetime
import csv
urllib3.disable_warnings()
import os


HUE_IP = "${hue_ip}"  # replace with your bridge IP
HUE_APP_KEY = "${hue_app_key}" # local only
HUE_DEVICE_ID = "31f58786-3242-4e88-b9ce-23f44ba27bbe"
TEMPERATURE_LOG_DIR = "/opt/bootshorn/temperatures"

response = requests.get(
    f"https://{HUE_IP}/clip/v2/resource/temperature",
    headers={"hue-application-key": HUE_APP_KEY},
    verify=False,
)
response.raise_for_status()
data = response.json()

for item in data["data"]:
    if item["id"] == HUE_DEVICE_ID:
        temperature = item["temperature"]["temperature"]
        temperature_date_string = item["temperature"]["temperature_report"]["changed"]
        temperature_date = datetime.datetime.fromisoformat(temperature_date_string).astimezone(datetime.timezone.utc)
        break

print(f"@{temperature_date}: {temperature}°C")

filename = temperature_date.strftime("%Y-%m-%d_00-00-00.000000%z") + ".log"
logpath  = os.path.join(TEMPERATURE_LOG_DIR, filename)
now_utc = datetime.datetime.now(datetime.timezone.utc)

with open(logpath, "a+", newline="") as logfile:
    writer = csv.writer(logfile)
    writer.writerow([
        now_utc.strftime('%Y-%m-%d_%H-%M-%S.%f%z'), # current UTC time
        temperature_date.strftime('%Y-%m-%d_%H-%M-%S.%f%z'), # date of temperature reading
        temperature,
    ])