diff --git a/openevsehttp/__main__.py b/openevsehttp/__main__.py index 4cb56ae..7996435 100644 --- a/openevsehttp/__main__.py +++ b/openevsehttp/__main__.py @@ -231,8 +231,11 @@ async def test_and_get(self) -> dict: def ws_start(self) -> None: """Start the websocket listener.""" - if self._ws_listening: - raise AlreadyListening + if self.websocket: + if self._ws_listening and self.websocket.state == "connected": + raise AlreadyListening + if self._ws_listening and self.websocket.state != "connected": + self._ws_listening = False self._start_listening() def _start_listening(self): diff --git a/openevsehttp/websocket.py b/openevsehttp/websocket.py index 4da3b4b..dbf1ae1 100644 --- a/openevsehttp/websocket.py +++ b/openevsehttp/websocket.py @@ -38,7 +38,7 @@ def __init__( self._user = user self._password = password self.callback = callback - self._state = None + self._state = STATE_DISCONNECTED self.failed_attempts = 0 self._error_reason = None self._client = None diff --git a/tests/test_main.py b/tests/test_main.py index 0bdf68a..99e706e 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -19,7 +19,11 @@ UnsupportedFeature, ) from tests.common import load_fixture -from openevsehttp.websocket import SIGNAL_CONNECTION_STATE, STATE_CONNECTED +from openevsehttp.websocket import ( + SIGNAL_CONNECTION_STATE, + STATE_CONNECTED, + STATE_DISCONNECTED, +) pytestmark = pytest.mark.asyncio @@ -53,7 +57,7 @@ async def test_ws_state(test_charger): """Test v4 Status reply.""" await test_charger.update() value = test_charger.ws_state - assert value == None + assert value == STATE_DISCONNECTED await test_charger.ws_disconnect()