From e806822daed41f86a611a599ee6773cbde989a52 Mon Sep 17 00:00:00 2001 From: Alex Frantz Date: Sat, 2 May 2026 22:16:44 -0400 Subject: [PATCH] udp.. --- govee.py | 18 +++++++++++++++--- test.py | 12 ++++++++++++ 2 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 test.py diff --git a/govee.py b/govee.py index 0f7a706..6fa2163 100644 --- a/govee.py +++ b/govee.py @@ -1,4 +1,4 @@ -import requests +import time import json import socket @@ -35,7 +35,19 @@ class GoveeApi: } self.send_over_socket(payload) - def send_over_socket(self, payload): + def send_over_socket(self, payload, retries=2, delay=0.1): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - sock.sendto(json.dumps(payload).encode(), (self.device_ip, 4003)) + sock.settimeout(1) + data = json.dumps(payload).encode() + + for attempt in range(retries): + sock.sendto(data, (self.device_ip, 4003)) + try: + response, _ = sock.recvfrom(1024) + print(f"Got response on attempt {attempt + 1}") + break # stop retrying once we get an ack + except socket.timeout: + if attempt < retries - 1: + time.sleep(delay) + sock.close() diff --git a/test.py b/test.py new file mode 100644 index 0000000..ca79cb0 --- /dev/null +++ b/test.py @@ -0,0 +1,12 @@ +from govee import GoveeApi +from time import sleep + +GOVEE_DEVICE = "3D:22:D7:94:40:46:2F:72" +GOVEE_SKU = "H6168" +GOVEE_AWS = "owABAgT/AGQMACr//+YAADb//8k=,o//QAAIDAwAAAAAAAAAAAAAAAI4=,MwUKdwAAAAAAAAAAAAAAAAAAAEs=" +GOVEE_IP = "172.16.0.15" + +govee_api = GoveeApi(device_ip=GOVEE_IP) +govee_api.send_scene(GOVEE_AWS) +# sleep(5) +# govee_api.set_?to_original_color() \ No newline at end of file