diff --git a/custom_components/browser_mod/binary_sensor.py b/custom_components/browser_mod/binary_sensor.py index a6c0ded..8327151 100644 --- a/custom_components/browser_mod/binary_sensor.py +++ b/custom_components/browser_mod/binary_sensor.py @@ -1,6 +1,6 @@ from homeassistant.components.binary_sensor import BinarySensorEntity -from .const import DATA_BROWSERS, DOMAIN, DATA_ADDERS +from .const import DOMAIN, DATA_ADDERS from .entities import BrowserModEntity @@ -15,14 +15,14 @@ async def async_setup_entry(hass, config_entry, async_add_entities): class BrowserBinarySensor(BrowserModEntity, BinarySensorEntity): - def __init__(self, coordinator, browserID, parameter, name): - BrowserModEntity.__init__(self, coordinator, browserID, name) + def __init__(self, coordinator, browserID, parameter, name, icon=None): + BrowserModEntity.__init__(self, coordinator, browserID, name, icon) BinarySensorEntity.__init__(self) self.parameter = parameter @property def is_on(self): - return self._data.get(DATA_BROWSERS, {}).get(self.parameter, None) + return self._data.get("browser", {}).get(self.parameter, None) class ActivityBinarySensor(BrowserModEntity, BinarySensorEntity): diff --git a/custom_components/browser_mod/browser.py b/custom_components/browser_mod/browser.py index bb24283..2063a3a 100644 --- a/custom_components/browser_mod/browser.py +++ b/custom_components/browser_mod/browser.py @@ -57,33 +57,50 @@ class BrowserModBrowser: coordinator = self.coordinator browserID = self.browserID - def _assert_browser_sensor(type, name, *properties): + def _assert_browser_sensor(type, name, *properties, **kwarg): """Create a browser state sensor if it does not already exist""" if name in self.entities: return adder = hass.data[DOMAIN][DATA_ADDERS][type] cls = {"sensor": BrowserSensor, "binary_sensor": BrowserBinarySensor}[type] - new = cls(coordinator, browserID, name, *properties) + new = cls(coordinator, browserID, name, *properties, **kwarg) adder([new]) self.entities[name] = new - _assert_browser_sensor("sensor", "path", "Browser path") + _assert_browser_sensor("sensor", "path", "Browser path", icon="mdi:web") _assert_browser_sensor("sensor", "visibility", "Browser visibility") - _assert_browser_sensor("sensor", "userAgent", "Browser userAgent") - _assert_browser_sensor("sensor", "currentUser", "Browser user") - _assert_browser_sensor("sensor", "width", "Browser width", "px") - _assert_browser_sensor("sensor", "height", "Browser height", "px") + _assert_browser_sensor( + "sensor", "userAgent", "Browser userAgent", icon="mdi:account-details" + ) + _assert_browser_sensor( + "sensor", "currentUser", "Browser user", icon="mdi:account" + ) + _assert_browser_sensor( + "sensor", "width", "Browser width", "px", icon="mdi:arrow-left-right" + ) + _assert_browser_sensor( + "sensor", "height", "Browser height", "px", icon="mdi:arrow-up-down" + ) # Don't create battery sensor unless battery level is reported if self.data.get("browser", {}).get("battery_level", None) is not None: _assert_browser_sensor( "sensor", "battery_level", "Browser battery", "%", "battery" ) - _assert_browser_sensor("binary_sensor", "darkMode", "Browser dark mode") - _assert_browser_sensor("binary_sensor", "fullyKiosk", "Browser FullyKiosk") + _assert_browser_sensor( + "binary_sensor", + "darkMode", + "Browser dark mode", + icon="mdi:theme-light-dark", + ) + _assert_browser_sensor( + "binary_sensor", "fullyKiosk", "Browser FullyKiosk", icon="mdi:alpha-f" + ) # Don't create a charging sensor unless charging state is reported if self.data.get("browser", {}).get("charging", None) is not None: - _assert_browser_sensor("binary_sensor", "charging", "Browser charging") + _assert_browser_sensor( + "binary_sensor", "charging", "Browser charging", icon="mdi:power-plug" + ) if "activity" not in self.entities: adder = hass.data[DOMAIN][DATA_ADDERS]["binary_sensor"] diff --git a/custom_components/browser_mod/entities.py b/custom_components/browser_mod/entities.py index eece033..6421d41 100644 --- a/custom_components/browser_mod/entities.py +++ b/custom_components/browser_mod/entities.py @@ -11,10 +11,11 @@ _LOGGER = logging.getLogger(__name__) class BrowserModEntity(CoordinatorEntity): - def __init__(self, coordinator, browserID, name): + def __init__(self, coordinator, browserID, name, icon=None): super().__init__(coordinator) self.browserID = browserID self._name = name + self._icon = icon @property def _data(self): @@ -54,3 +55,7 @@ class BrowserModEntity(CoordinatorEntity): @property def unique_id(self): return f"{self.browserID}-{self._name.replace(' ','_')}" + + @property + def icon(self): + return self._icon diff --git a/custom_components/browser_mod/sensor.py b/custom_components/browser_mod/sensor.py index 771a134..dad0b0d 100644 --- a/custom_components/browser_mod/sensor.py +++ b/custom_components/browser_mod/sensor.py @@ -23,8 +23,9 @@ class BrowserSensor(BrowserModEntity, SensorEntity): name, unit_of_measurement=None, device_class=None, + icon=None, ): - BrowserModEntity.__init__(self, coordinator, browserID, name) + BrowserModEntity.__init__(self, coordinator, browserID, name, icon) SensorEntity.__init__(self) self.parameter = parameter self._device_class = device_class @@ -32,10 +33,7 @@ class BrowserSensor(BrowserModEntity, SensorEntity): @property def native_value(self): - data = self._data - data = data.get("browser", {}) - data = data.get(self.parameter, None) - return data + return self._data.get("browser", {}).get(self.parameter, None) @property def device_class(self):