Files
scoreboard/govee.py
T
2026-05-03 03:27:57 -04:00

79 lines
1.9 KiB
Python

import requests
import random
import string
import json
GOVEE_API_BASE_URL = "https://openapi.api.govee.com/router/api/v1/"
class GoveeApi:
key = ""
headers = {}
def __init__(self, key):
self.key = key
self.headers = {
'Govee-API-Key': key
}
def __get_random_string(self):
characters = string.ascii_letters + string.digits
result_str = ''.join(random.choices(characters, k=4))
return result_str
def get_diy_scenes(self, sku, device):
payload = {
"requestId": self.__get_random_string(),
"payload": {
"sku": sku,
"device": device
}
}
res = requests.post(GOVEE_API_BASE_URL + 'device/diy-scenes', json=payload, headers=self.headers)
res.raise_for_status()
print("[GOVEE] DIY scene fetch: " + json.dumps(res.json(), indent=4))
return res.ok
def set_diy_scene(self, sku, device):
payload = {
'requestId': self.get_random_string(),
'payload': {
'sku': sku,
'device': device,
'capability': {
'type': 'device.capabilities.dynamic_scene',
'instance': 'diyScene',
'value': 22757907
}
}
}
res = requests.post(GOVEE_API_BASE_URL + 'device/control', headers=self.headers, json=payload)
res.raise_for_status()
print("[GOVEE] Set DIY scene: " + json.dumps(res.json(), indent=4))
return res.ok
def set_to_original_color(self, sku, device):
payload = {
'requestId': self.get_random_string(),
'payload': {
'sku': sku,
'device': device,
'capability': {
'type': 'devices.capabilities.color_setting',
'instance': 'colorRgb',
'value': 16711680
}
}
}
res = requests.post(GOVEE_API_BASE_URL + 'device/control', json=payload, headers=self.headers)
res.raise_for_status()
print("[GOVEE] Set to original: " + json.dumps(res.json(), indent=4))
return res.ok