working 2.0 clone
This commit is contained in:
64
custom_components/remote_homeassistant/sensor.py
Normal file
64
custom_components/remote_homeassistant/sensor.py
Normal file
@@ -0,0 +1,64 @@
|
||||
"""Sensor platform for connection status.."""
|
||||
from homeassistant.const import CONF_HOST, CONF_PORT, CONF_VERIFY_SSL
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity import DeviceInfo, Entity
|
||||
|
||||
from .const import DOMAIN, CONF_ENTITY_PREFIX, CONF_SECURE, CONF_MAX_MSG_SIZE, DEFAULT_MAX_MSG_SIZE
|
||||
|
||||
|
||||
async def async_setup_entry(hass, config_entry, async_add_entities):
|
||||
"""Set up sensor based ok config entry."""
|
||||
async_add_entities([ConnectionStatusSensor(config_entry)])
|
||||
|
||||
|
||||
class ConnectionStatusSensor(Entity):
|
||||
"""Representation of a remote_homeassistant sensor."""
|
||||
|
||||
def __init__(self, config_entry):
|
||||
"""Initialize the remote_homeassistant sensor."""
|
||||
self._state = None
|
||||
self._entry = config_entry
|
||||
|
||||
proto = 'http' if config_entry.data.get(CONF_SECURE) else 'https'
|
||||
host = config_entry.data[CONF_HOST]
|
||||
port = config_entry.data[CONF_PORT]
|
||||
self._attr_name = f"Remote connection to {host}:{port}"
|
||||
self._attr_unique_id = config_entry.unique_id
|
||||
self._attr_should_poll = False
|
||||
self._attr_device_info = DeviceInfo(
|
||||
name="Home Assistant",
|
||||
configuration_url=f"{proto}://{host}:{port}",
|
||||
identifiers={(DOMAIN, f"remote_{self._attr_unique_id}")},
|
||||
)
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
"""Return sensor state."""
|
||||
return self._state
|
||||
|
||||
@property
|
||||
def extra_state_attributes(self):
|
||||
"""Return device state attributes."""
|
||||
return {
|
||||
"host": self._entry.data[CONF_HOST],
|
||||
"port": self._entry.data[CONF_PORT],
|
||||
"secure": self._entry.data.get(CONF_SECURE, False),
|
||||
"verify_ssl": self._entry.data.get(CONF_VERIFY_SSL, False),
|
||||
"max_msg_size": self._entry.data.get(CONF_MAX_MSG_SIZE, DEFAULT_MAX_MSG_SIZE),
|
||||
"entity_prefix": self._entry.options.get(CONF_ENTITY_PREFIX, ""),
|
||||
"uuid": self.unique_id,
|
||||
}
|
||||
|
||||
async def async_added_to_hass(self):
|
||||
"""Subscribe to events."""
|
||||
await super().async_added_to_hass()
|
||||
|
||||
def _update_handler(state):
|
||||
"""Update entity state when status was updated."""
|
||||
self._state = state
|
||||
self.schedule_update_ha_state()
|
||||
|
||||
signal = f"remote_homeassistant_{self._entry.unique_id}"
|
||||
self.async_on_remove(
|
||||
async_dispatcher_connect(self.hass, signal, _update_handler)
|
||||
)
|
||||
Reference in New Issue
Block a user