Make Brother uptime sensor disabled by default (#43478)
This commit is contained in:
parent
20db980695
commit
885e393df9
4 changed files with 76 additions and 14 deletions
|
@ -18,6 +18,7 @@ ATTR_DRUM_COUNTER = "drum_counter"
|
|||
ATTR_DRUM_REMAINING_LIFE = "drum_remaining_life"
|
||||
ATTR_DRUM_REMAINING_PAGES = "drum_remaining_pages"
|
||||
ATTR_DUPLEX_COUNTER = "duplex_unit_pages_counter"
|
||||
ATTR_ENABLED = "enabled"
|
||||
ATTR_FUSER_REMAINING_LIFE = "fuser_remaining_life"
|
||||
ATTR_ICON = "icon"
|
||||
ATTR_LABEL = "label"
|
||||
|
@ -51,71 +52,85 @@ SENSOR_TYPES = {
|
|||
ATTR_ICON: "mdi:printer",
|
||||
ATTR_LABEL: ATTR_STATUS.title(),
|
||||
ATTR_UNIT: None,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_PAGE_COUNTER: {
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_PAGE_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BW_COUNTER: {
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_BW_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_COLOR_COUNTER: {
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_COLOR_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_DUPLEX_COUNTER: {
|
||||
ATTR_ICON: "mdi:file-document-outline",
|
||||
ATTR_LABEL: ATTR_DUPLEX_COUNTER.replace("_", " ").title(),
|
||||
ATTR_UNIT: UNIT_PAGES,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_DRUM_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BLACK_DRUM_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_BLACK_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_CYAN_DRUM_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_CYAN_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_MAGENTA_DRUM_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_MAGENTA_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_YELLOW_DRUM_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:chart-donut",
|
||||
ATTR_LABEL: ATTR_YELLOW_DRUM_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BELT_UNIT_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:current-ac",
|
||||
ATTR_LABEL: ATTR_BELT_UNIT_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_FUSER_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:water-outline",
|
||||
ATTR_LABEL: ATTR_FUSER_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_LASER_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:spotlight-beam",
|
||||
ATTR_LABEL: ATTR_LASER_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_PF_KIT_1_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:printer-3d",
|
||||
ATTR_LABEL: ATTR_PF_KIT_1_REMAINING_LIFE.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_PF_KIT_MP_REMAINING_LIFE: {
|
||||
ATTR_ICON: "mdi:printer-3d",
|
||||
|
@ -126,41 +141,54 @@ SENSOR_TYPES = {
|
|||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_BLACK_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_CYAN_TONER_REMAINING: {
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_CYAN_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_MAGENTA_TONER_REMAINING: {
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_MAGENTA_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_YELLOW_TONER_REMAINING: {
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_YELLOW_TONER_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_BLACK_INK_REMAINING: {
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_BLACK_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_CYAN_INK_REMAINING: {
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_CYAN_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_MAGENTA_INK_REMAINING: {
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_MAGENTA_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_YELLOW_INK_REMAINING: {
|
||||
ATTR_ICON: "mdi:printer-3d-nozzle",
|
||||
ATTR_LABEL: ATTR_YELLOW_INK_REMAINING.replace("_", " ").title(),
|
||||
ATTR_UNIT: PERCENTAGE,
|
||||
ATTR_ENABLED: True,
|
||||
},
|
||||
ATTR_UPTIME: {
|
||||
ATTR_ICON: None,
|
||||
ATTR_LABEL: ATTR_UPTIME.title(),
|
||||
ATTR_UNIT: None,
|
||||
ATTR_ENABLED: False,
|
||||
},
|
||||
ATTR_UPTIME: {ATTR_ICON: None, ATTR_LABEL: ATTR_UPTIME.title(), ATTR_UNIT: None},
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ from .const import (
|
|||
ATTR_DRUM_COUNTER,
|
||||
ATTR_DRUM_REMAINING_LIFE,
|
||||
ATTR_DRUM_REMAINING_PAGES,
|
||||
ATTR_ENABLED,
|
||||
ATTR_ICON,
|
||||
ATTR_LABEL,
|
||||
ATTR_MAGENTA_DRUM_COUNTER,
|
||||
|
@ -139,4 +140,4 @@ class BrotherPrinterSensor(CoordinatorEntity):
|
|||
@property
|
||||
def entity_registry_enabled_default(self):
|
||||
"""Return if the entity should be enabled when first added to the entity registry."""
|
||||
return True
|
||||
return SENSOR_TYPES[self.kind][ATTR_ENABLED]
|
||||
|
|
|
@ -8,7 +8,7 @@ from tests.async_mock import patch
|
|||
from tests.common import MockConfigEntry, load_fixture
|
||||
|
||||
|
||||
async def init_integration(hass) -> MockConfigEntry:
|
||||
async def init_integration(hass, skip_setup=False) -> MockConfigEntry:
|
||||
"""Set up the Brother integration in Home Assistant."""
|
||||
entry = MockConfigEntry(
|
||||
domain=DOMAIN,
|
||||
|
@ -16,12 +16,15 @@ async def init_integration(hass) -> MockConfigEntry:
|
|||
unique_id="0123456789",
|
||||
data={CONF_HOST: "localhost", CONF_TYPE: "laser"},
|
||||
)
|
||||
with patch(
|
||||
"brother.Brother._get_data",
|
||||
return_value=json.loads(load_fixture("brother_printer_data.json")),
|
||||
):
|
||||
entry.add_to_hass(hass)
|
||||
await hass.config_entries.async_setup(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
entry.add_to_hass(hass)
|
||||
|
||||
if not skip_setup:
|
||||
with patch(
|
||||
"brother.Brother._get_data",
|
||||
return_value=json.loads(load_fixture("brother_printer_data.json")),
|
||||
):
|
||||
await hass.config_entries.async_setup(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
return entry
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
from datetime import datetime, timedelta
|
||||
import json
|
||||
|
||||
from homeassistant.components.brother.const import UNIT_PAGES
|
||||
from homeassistant.components.brother.const import DOMAIN, UNIT_PAGES
|
||||
from homeassistant.components.sensor import DOMAIN as SENSOR_DOMAIN
|
||||
from homeassistant.const import (
|
||||
ATTR_DEVICE_CLASS,
|
||||
ATTR_ENTITY_ID,
|
||||
|
@ -25,13 +26,27 @@ ATTR_COUNTER = "counter"
|
|||
|
||||
async def test_sensors(hass):
|
||||
"""Test states of the sensors."""
|
||||
entry = await init_integration(hass, skip_setup=True)
|
||||
|
||||
registry = await hass.helpers.entity_registry.async_get_registry()
|
||||
|
||||
# Pre-create registry entries for disabled by default sensors
|
||||
registry.async_get_or_create(
|
||||
SENSOR_DOMAIN,
|
||||
DOMAIN,
|
||||
"0123456789_uptime",
|
||||
suggested_object_id="hl_l2340dw_uptime",
|
||||
disabled_by=None,
|
||||
)
|
||||
test_time = datetime(2019, 11, 11, 9, 10, 32, tzinfo=UTC)
|
||||
with patch(
|
||||
"homeassistant.components.brother.sensor.utcnow", return_value=test_time
|
||||
), patch(
|
||||
"brother.Brother._get_data",
|
||||
return_value=json.loads(load_fixture("brother_printer_data.json")),
|
||||
):
|
||||
await init_integration(hass)
|
||||
|
||||
registry = await hass.helpers.entity_registry.async_get_registry()
|
||||
await hass.config_entries.async_setup(entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
state = hass.states.get("sensor.hl_l2340dw_status")
|
||||
assert state
|
||||
|
@ -224,6 +239,21 @@ async def test_sensors(hass):
|
|||
assert entry.unique_id == "0123456789_uptime"
|
||||
|
||||
|
||||
async def test_disabled_by_default_sensors(hass):
|
||||
"""Test the disabled by default Brother sensors."""
|
||||
await init_integration(hass)
|
||||
|
||||
registry = await hass.helpers.entity_registry.async_get_registry()
|
||||
state = hass.states.get("sensor.hl_l2340dw_uptime")
|
||||
assert state is None
|
||||
|
||||
entry = registry.async_get("sensor.hl_l2340dw_uptime")
|
||||
assert entry
|
||||
assert entry.unique_id == "0123456789_uptime"
|
||||
assert entry.disabled
|
||||
assert entry.disabled_by == "integration"
|
||||
|
||||
|
||||
async def test_availability(hass):
|
||||
"""Ensure that we mark the entities unavailable correctly when device is offline."""
|
||||
await init_integration(hass)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue