Fix DSMR startup logic (#55051)

pull/55065/head
Erik Montnemery 2021-08-23 12:32:57 +02:00 committed by GitHub
parent 2dd4de060b
commit ee009cc332
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 6 additions and 4 deletions

View File

@ -22,7 +22,7 @@ from homeassistant.const import (
EVENT_HOMEASSISTANT_STOP,
VOLUME_CUBIC_METERS,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.core import CoreState, HomeAssistant, callback
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, StateType
@ -139,7 +139,7 @@ async def async_setup_entry(
transport = None
protocol = None
while hass.is_running:
while hass.state == CoreState.not_running or hass.is_running:
# Start DSMR asyncio.Protocol reader
try:
transport, protocol = await hass.loop.create_task(reader_factory())
@ -154,7 +154,7 @@ async def async_setup_entry(
await protocol.wait_closed()
# Unexpected disconnect
if hass.is_running:
if hass.state == CoreState.not_running or hass.is_running:
stop_listener()
transport = None
@ -181,7 +181,9 @@ async def async_setup_entry(
entry.data.get(CONF_RECONNECT_INTERVAL, DEFAULT_RECONNECT_INTERVAL)
)
except CancelledError:
if stop_listener and hass.is_running:
if stop_listener and (
hass.state == CoreState.not_running or hass.is_running
):
stop_listener() # pylint: disable=not-callable
if transport: