diff --git a/fritz_advanced_thermostat/fritz_advanced_thermostat.py b/fritz_advanced_thermostat/fritz_advanced_thermostat.py index a7aa63a..9bafeac 100644 --- a/fritz_advanced_thermostat/fritz_advanced_thermostat.py +++ b/fritz_advanced_thermostat/fritz_advanced_thermostat.py @@ -2,7 +2,6 @@ import re import requests from .errors import FritzAdvancedThermostatConnectionError, FritzAdvancedThermostatCompatibilityError, FritzAdvancedThermostatExecutionError, FritzAdvancedThermostatKeyError -from fritzconnection import FritzConnection from pyfritzhome import Fritzhome from selenium import webdriver from selenium.webdriver.chrome.options import Options @@ -55,9 +54,7 @@ def __init__(self, self._sid = fh._sid self._devices = fh._devices self._prefixed_host = fh.get_prefixed_host() - # Check Fritz!OS via FritzConnection - fc = FritzConnection(address=host, user=user, password=password) - self._fritzos = fc.system_version + self._fritzos = self._load_fritzos() self._supported_firmware = ['7.29', '7.30', '7.31', '7.56', '7.57'] # Set basic properties self._experimental = experimental @@ -100,6 +97,18 @@ def __init__(self, self._selenium_options.add_argument('ignore-certificate-errors') self._check_fritzos() + def _load_fritzos(self): + data = { + "xhr": 1, + "sid": self._sid, + "page": "overview", + } + + response = requests.post(self._prefixed_host + "/data.lua", data=data, allow_redirects=True, timeout=300) + response.raise_for_status() + + return json.loads(response.text)["data"]["fritzos"]["nspver"] + def _check_fritzos(self): if self._fritzos not in self._supported_firmware: if self._experimental: diff --git a/requirements.txt b/requirements.txt index c518f1f..0bc2dd3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ -fritzconnection>=1.12.2 pyfritzhome>=0.6.8 requests>=2.31.0 selenium==4.10.0