MiGenieHASS/app/lib/migenie.py

78 lines
2.6 KiB
Python
Raw Normal View History

2022-12-15 12:13:09 +00:00
import requests
from dotenv import load_dotenv
import os
load_dotenv()
2022-12-15 14:51:58 +00:00
from lib.utils import convert_to_real_temp, is_valid_time
2022-12-15 12:13:09 +00:00
username = os.getenv("username")
password = os.getenv("password")
2022-12-15 14:51:58 +00:00
root_url = "https://public.wcs.schneider-electric.ws/rpc/public_genie/"
2022-12-15 12:13:09 +00:00
def poll_genie():
2022-12-15 14:51:58 +00:00
url = root_url+"poll"
2022-12-15 12:13:09 +00:00
payload = "{}"
headers = {
'User-Agent-Wiser': 'iPhoneTestTool;iOS6;WiserApp2.0.0',
'Content-Type': 'application/javascript',
}
response = requests.request("POST", url, headers=headers, data=payload, auth=(username, password))
return response.json()
def get_heating_data():
data = poll_genie()
return data['updateData']['zones'][0]
def get_water_data():
data = poll_genie()
2022-12-15 14:51:58 +00:00
return data['updateData']['zones'][1]
def boost_water(time:int):
if is_valid_time(time):
url = root_url+"apply_timer"
payload = '{"zoneId": [1],"setPoint": 255,"durationMinutes": ' + str(time) + '}'
headers = {
'User-Agent-Wiser': 'iPhoneTestTool;iOS6;WiserApp2.0.0',
'Content-Type': 'application/javascript'
}
response = requests.request("POST", url, headers=headers, data=payload, auth=(username, password))
return response.json()
else:
return {"Error":"Time must be multiples of 30"}
def turn_off_water():
url = root_url+"cancel_timer"
payload = '{"zoneId": [1]}'
headers = {
'User-Agent-Wiser': 'iPhoneTestTool;iOS6;WiserApp2.0.0',
'Content-Type': 'application/javascript'
}
response = requests.request("POST", url, headers=headers, data=payload, auth=(username, password))
return response.json()
def turn_on_heating(temp:int, time):
temp = str(convert_to_real_temp(temp, True))
if is_valid_time(time):
url = root_url+"adjust_setpoint"
payload = '{"zoneId": [0],"setpoint": ' +temp+',"durationMinutes": '+ str(time) + '}'
headers = {
'User-Agent-Wiser': 'iPhoneTestTool;iOS6;WiserApp2.0.0',
'Content-Type': 'application/javascript'
}
response = requests.request("POST", url, headers=headers, data=payload, auth=(username, password))
return response.json()
else:
return {"Error":"Time must be multiples of 30"}
def turn_off_heating():
url = root_url+"adjust_setpoint"
payload = '{"zoneId": [0],"setpoint": 0}'
headers = {
'User-Agent-Wiser': 'iPhoneTestTool;iOS6;WiserApp2.0.0',
'Content-Type': 'application/javascript'
}
response = requests.request("POST", url, headers=headers, data=payload, auth=(username, password))
return response.json()