43 lines
		
	
	
		
			No EOL
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			No EOL
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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,
 | |
|     ]) |