Begin refactor

This commit is contained in:
2025-03-30 18:08:40 +01:00
parent 1b9fc0ae1d
commit d3b55cb028

View File

@@ -12,7 +12,18 @@ headers = {'content-type': 'application/x-www-form-urlencoded',
dev_id = "082e858131ff012c51" dev_id = "082e858131ff012c51"
class Tevolve: class Tevolve:
def __init__(self):
self.api_url = "https://api-tevolve.termoweb.net/api/v2"
self.dev_url = "/grouped_devs"
self.dev_id = ""
self.token_primary = ""
self.token_refresh = ""
self.sid = ""
setmode = "" setmode = ""
setTemperature = "" setTemperature = ""
@@ -33,6 +44,45 @@ class Tevolve:
livingroom_set_temp = "" livingroom_set_temp = ""
livingroom_active = "" livingroom_active = ""
def get_dev(self):
if self.token_primary != "":
headers = {'content-type': 'application/json',
'Authorization': "Bearer " + self.token_primary}
dev_request = requests.get(str(self.api_url+self.dev_url), headers=headers).json()
self.dev_id = dev_request[0]["devs"][0]["dev_id"]
def get_token(self):
if self.token_primary == "":
headers = {'content-type': 'application/x-www-form-urlencoded',
'authorization': 'Basic NWM0OWRjZTk3NzUxMDM1MTUwNmM0MmRiOnRldm9sdmU='}
data = "username=1202283%40uad.ac.uk&password=24e76d8e4&grant_type=password"
token_request = requests.post("https://api-tevolve.termoweb.net/client/token", headers=headers, data=data)
if token_request.status_code == 200:
request_json = json.loads(token_request.text)
self.token_primary = request_json["access_token"]
self.token_refresh = request_json["refresh_token"]
else:
self.token_primary = ""
self.token_refresh = ""
print("Could not get token")
@staticmethod @staticmethod
def token_manager(): def token_manager():
@@ -47,42 +97,34 @@ class Tevolve:
else: else:
time.sleep(30) time.sleep(30)
@staticmethod
def get_sid():
time.sleep(5)
url = "https://api-tevolve.termoweb.net/socket.io/?token=" + Tevolve.token + "&dev_id=082e858131ff012c51&EIO" \ def get_sid(self):
url = "https://api-tevolve.termoweb.net/socket.io/?token=" + self.token_primary + "&dev_id=" + str(self.dev_id) + "&EIO" \
"=3&transport=polling" "=3&transport=polling"
response = requests.request("GET", url)
payload = {}
response = requests.request("GET", url, data=payload)
if response.status_code == 200: if response.status_code == 200:
self.sid = json.loads(response.text[5:])["sid"]
temp = response.text[5:]
temp = json.loads(temp)
Tevolve.sid = temp['sid']
else: else:
Tevolve.token = None self.token_primary = ""
Tevolve.token_manager() # Tevolve.token_manager()
@staticmethod
def post_websocket():
Tevolve.token_manager()
Tevolve.get_sid()
url = "https://api-tevolve.termoweb.net/socket.io/?token=" + Tevolve.token + "&dev_id=082e858131ff012c51&EIO" \ def post_websocket(self):
# Tevolve.token_manager()
# Tevolve.get_sid()
url = "https://api-tevolve.termoweb.net/socket.io/?token=" + self.token_primary + "&dev_id=" + str(self.dev_id) + "&EIO" \
"=3&transport=polling&t=Ntb6xXn" \ "=3&transport=polling&t=Ntb6xXn" \
"&sid=" + Tevolve.sid "&sid=" + self.sid
payload = "401:40/api/v2/socket_io?token=" + Tevolve.token + "&dev_id=082e858131ff012c51" payload = "401:40/api/v2/socket_io?token=" + self.token_primary + "&dev_id=" + str(self.dev_id)
headers = { headers = {
'Cookie': "io=" + Tevolve.sid, 'Cookie': "io=" + self.sid,
'Content-Type': 'text/plain', 'Content-Type': 'text/plain',
'Connection': 'keep-alive' 'Connection': 'keep-alive'
@@ -90,14 +132,15 @@ class Tevolve:
requests.request("POST", url, headers=headers, data=payload) requests.request("POST", url, headers=headers, data=payload)
@staticmethod
def create_websocket():
time.sleep(5)
websocket_url = "wss://api-tevolve.termoweb.net/socket.io/?token=" + Tevolve.token + "&dev_id=082e858131ff012c51&EIO=3&transport=websocket&sid=" + Tevolve.sid + "" def create_websocket(self):
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 + ""
def on_message(ws, message): def on_message(ws, message):
Tevolve.websocket_message = message self.websocket_message = message
print(message)
def on_open(ws): def on_open(ws):
@@ -119,14 +162,14 @@ 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")
Tevolve.post_websocket() self.post_websocket()
Tevolve.create_websocket() self.create_websocket()
def on_error(ws, err): def on_error(ws, err):
print("WEB SOCKET ERROR") print("WEB SOCKET ERROR")
Tevolve.post_websocket() self.post_websocket()
Tevolve.create_websocket() self.create_websocket()
ws = websocket.WebSocketApp(websocket_url) ws = websocket.WebSocketApp(websocket_url)
websocket.enableTrace(False) websocket.enableTrace(False)
@@ -187,8 +230,8 @@ class Tevolve:
if mode == "manual": if mode == "manual":
return "heat" return "heat"
@staticmethod
def get_status(heater_id): def get_status(heater_id, self):
headers = { headers = {
'host': 'api-tevolve.termoweb.net', 'host': 'api-tevolve.termoweb.net',
@@ -197,7 +240,7 @@ class Tevolve:
'accept': 'application/json, text/plain, */*', 'accept': 'application/json, text/plain, */*',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) ' 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) '
'Version/15.4 Safari/605.1.15', 'Version/15.4 Safari/605.1.15',
'authorization': 'Bearer ' + Tevolve.token, 'authorization': 'Bearer ' + self.token_primary,
'referer': 'https://tevolve.termoweb.net/', 'referer': 'https://tevolve.termoweb.net/',
} }
@@ -233,3 +276,16 @@ class Tevolve:
response = requests.post(url, headers=headers, data=payload) response = requests.post(url, headers=headers, data=payload)
if response.status_code == 201 or response.status_code == 200: if response.status_code == 201 or response.status_code == 200:
pass pass
if __name__ == '__main__':
test = Tevolve()
test.get_token()
test.get_dev()
test.get_sid()
test.post_websocket()
test.create_websocket()
while 1:
if test.websocket_message != "":
print(test.websocket_message)
test.websocket_message = ""