Set sensor icons
This commit is contained in:
		
							parent
							
								
									1dddaa9bcc
								
							
						
					
					
						commit
						0ecfe402ea
					
				@ -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):
 | 
			
		||||
 | 
			
		||||
@ -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"]
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
@ -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):
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user