Move from thread to rel dispatcher

This commit is contained in:
2025-11-19 22:20:30 +00:00
parent 58a8d8dcb5
commit 75e4214841
2 changed files with 36 additions and 26 deletions

View File

@@ -15,7 +15,9 @@ if __name__ == "__main__":
token_thread_event = threading.Event() token_thread_event = threading.Event()
t = threading.Thread(target=tevolve.token_manager, args=(token_thread_event,), daemon=True).start() mqtt_manager = MqttManager(tevolve)
t = threading.Thread(target=tevolve.token_manager, args=(token_thread_event, mqtt_manager, ), daemon=True).start()
while token_thread_event.is_set() is False: while token_thread_event.is_set() is False:
time.sleep(1) time.sleep(1)
@@ -26,7 +28,8 @@ if __name__ == "__main__":
status = tevolve.get_status() status = tevolve.get_status()
mqtt_manager = MqttManager(tevolve) # mqtt_manager = MqttManager(tevolve)
time.sleep(5)
while 1: while 1:
if mqtt_manager.is_connected == True: if mqtt_manager.is_connected == True:
@@ -36,4 +39,4 @@ if __name__ == "__main__":
tevolve.get_sid() tevolve.get_sid()
tevolve.post_websocket() tevolve.post_websocket()
tevolve.create_websocket(mqtt_manager) # tevolve.create_websocket(mqtt_manager)

View File

@@ -3,7 +3,7 @@ import json
import threading import threading
import websocket import websocket
import time import time
import rel # import rel
import datetime import datetime
data = "username=1202283%40uad.ac.uk&password=24e76d8e4&grant_type=password" data = "username=1202283%40uad.ac.uk&password=24e76d8e4&grant_type=password"
@@ -32,6 +32,7 @@ class Tevolve:
self.latest_message = "" self.latest_message = ""
self.time_token_start = 0 self.time_token_start = 0
setmode = "" setmode = ""
setTemperature = "" setTemperature = ""
sid = "" sid = ""
@@ -42,7 +43,7 @@ class Tevolve:
def token_manager(self, event): def token_manager(self, event, mqtt_manager):
while 1: while 1:
@@ -58,6 +59,10 @@ class Tevolve:
self.token_primary = x.json()["access_token"] self.token_primary = x.json()["access_token"]
self.time_token_start = time.time() self.time_token_start = time.time()
print("GOT TOKEN") print("GOT TOKEN")
try:
self.r.join()
except Exception as e:
self.r = threading.Thread(target=self.create_websocket).start()
event.set() event.set()
else: else:
@@ -266,7 +271,7 @@ class Tevolve:
pass pass
def create_websocket(self, mqtt_connection): def create_websocket(self):
global start_time global start_time
global end_time global end_time
@@ -284,13 +289,15 @@ class Tevolve:
a = json.loads(message[20:]) a = json.loads(message[20:])
if a[0] == "update": if a[0] == "update":
self.last_update = a[1] self.last_update = a[1]
mqtt_connection.update_homeassistant_entity(self.last_update) self.update_homeassistant_entity(self.last_update)
def on_open(ws): def on_open(ws):
start_time = datetime.datetime.now()
try: try:
self.post_websocket() self.post_websocket()
websocket_url = "wss://api-tevolve.termoweb.net/socket.io/?token=" + self.token_primary + \
"&dev_id=" + str(self.dev_id) + "&EIO=3&transport=websocket&sid=" + self.sid + ""
print("postwebsocket") print("postwebsocket")
print("websocket (run)") print("websocket (run)")
@@ -314,19 +321,19 @@ class Tevolve:
def on_close(ws, close_status_code, close_msg): def on_close(ws, close_status_code, close_msg):
print("WEB SOCKET ClOSED") print("WEB SOCKET ClOSED")
global end_time # global end_time
end_time = datetime.datetime.now() # end_time = datetime.datetime.now()
print("starttime: " + str(start_time)) # print("starttime: " + str(start_time))
print("endtime: " + str(end_time)) # print("endtime: " + str(end_time))
breakpoint() # breakpoint()
#
# mqtt_connection.publish_heater() # # mqtt_connection.publish_heater()
time.sleep(2) # time.sleep(2)
try: # try:
self.post_websocket() # self.post_websocket()
# self.create_websocket(mqtt_connection) # # self.create_websocket(mqtt_connection)
except Exception as e: # except Exception as e:
print(e) # print(e)
def on_error(ws, err): def on_error(ws, err):
print("WEB SOCKET ERROR") print("WEB SOCKET ERROR")
breakpoint() breakpoint()
@@ -369,8 +376,8 @@ class Tevolve:
# ws.on_error = on_error # ws.on_error = on_error
# ws.on_reconnect = on_reconnect # ws.on_reconnect = on_reconnect
ws.run_forever(dispatcher=rel, ping_interval=10, ping_payload='42/api/v2/socket_io,["message","ping"]', reconnect=5) ws.run_forever(ping_interval=10, ping_payload='42/api/v2/socket_io,["message","ping"]')
rel.signal(2, rel.abort) # rel.signal(2, rel.abort)
rel.dispatch() # rel.dispatch()
# r = threading.Thread(target=run) self.r = threading.Thread(target=run)
# r.start()