Give a sleeping printer time to wake up (#180616)

This commit is contained in:
Franck Nijhof
2026-08-29 18:16:18 +02:00
committed by GitHub
parent 76f77d0fb5
commit 8a89fa8016
4 changed files with 17 additions and 2 deletions
+2 -1
View File
@@ -27,7 +27,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo
from .const import CONF_BASE_PATH, CONF_SERIAL, DOMAIN
from .const import CONF_BASE_PATH, CONF_SERIAL, DOMAIN, REQUEST_TIMEOUT
_LOGGER = logging.getLogger(__name__)
@@ -45,6 +45,7 @@ async def validate_input(hass: HomeAssistant, data: dict) -> dict[str, Any]:
tls=data[CONF_SSL],
verify_ssl=data[CONF_VERIFY_SSL],
session=session,
request_timeout=REQUEST_TIMEOUT,
)
printer = await ipp.printer()
+3
View File
@@ -14,6 +14,9 @@ ATTR_STATE_MESSAGE = "state_message"
ATTR_STATE_REASON = "state_reason"
ATTR_URI_SUPPORTED = "uri_supported"
# Printers waking from sleep can take well over pyipp's own default
REQUEST_TIMEOUT = 30
# Config Keys
CONF_BASE_PATH = "base_path"
CONF_SERIAL = "serial"
+2 -1
View File
@@ -12,7 +12,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import CONF_BASE_PATH, DOMAIN
from .const import CONF_BASE_PATH, DOMAIN, REQUEST_TIMEOUT
SCAN_INTERVAL = timedelta(seconds=60)
@@ -36,6 +36,7 @@ class IPPDataUpdateCoordinator(DataUpdateCoordinator[IPPPrinter]):
tls=config_entry.data[CONF_SSL],
verify_ssl=config_entry.data[CONF_VERIFY_SSL],
session=async_get_clientsession(hass, config_entry.data[CONF_VERIFY_SSL]),
request_timeout=REQUEST_TIMEOUT,
)
super().__init__(
+10
View File
@@ -4,6 +4,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
from pyipp import IPPConnectionError
from homeassistant.components.ipp.const import REQUEST_TIMEOUT
from homeassistant.components.ipp.coordinator import IPPDataUpdateCoordinator
from homeassistant.config_entries import ConfigEntryState
from homeassistant.core import HomeAssistant
@@ -43,3 +44,12 @@ async def test_load_unload_config_entry(
await hass.config_entries.async_unload(mock_config_entry.entry_id)
await hass.async_block_till_done()
assert mock_config_entry.state is ConfigEntryState.NOT_LOADED
async def test_request_timeout(
hass: HomeAssistant, mock_config_entry: MockConfigEntry
) -> None:
"""Test a printer gets time to wake up before we give up on it."""
coordinator = IPPDataUpdateCoordinator(hass, mock_config_entry)
assert coordinator.ipp.request_timeout == REQUEST_TIMEOUT