Add entity registry support to ecobee integration (#27088)

* Add unique id to platforms

Add unique id for binary sensor, climate, and sensor.

* Add unique id to weather platform

* Simplify unique_id for weather platform

* Fix lint for unique_id in sensor

* Fix lint for unique_id in binary sensor
This commit is contained in:
Mark Coombes 2019-10-01 17:28:13 -04:00 committed by Paulus Schoutsen
parent e033c46c91
commit ee45431d0e
4 changed files with 28 additions and 0 deletions

View file

@ -43,6 +43,15 @@ class EcobeeBinarySensor(BinarySensorDevice):
"""Return the name of the Ecobee sensor."""
return self._name.rstrip()
@property
def unique_id(self):
"""Return a unique identifier for this sensor."""
for sensor in self.data.ecobee.get_remote_sensors(self.index):
if sensor["name"] == self.sensor_name:
if "code" in sensor:
return f"{sensor['code']}-{self.device_class}"
return f"{sensor['id']}-{self.device_class}"
@property
def is_on(self):
"""Return the status of the sensor."""

View file

@ -305,6 +305,11 @@ class Thermostat(ClimateDevice):
"""Return the name of the Ecobee Thermostat."""
return self.thermostat["name"]
@property
def unique_id(self):
"""Return a unique identifier for this ecobee thermostat."""
return self.thermostat["identifier"]
@property
def temperature_unit(self):
"""Return the unit of measurement."""

View file

@ -54,6 +54,15 @@ class EcobeeSensor(Entity):
"""Return the name of the Ecobee sensor."""
return self._name
@property
def unique_id(self):
"""Return a unique identifier for this sensor."""
for sensor in self.data.ecobee.get_remote_sensors(self.index):
if sensor["name"] == self.sensor_name:
if "code" in sensor:
return f"{sensor['code']}-{self.device_class}"
return f"{sensor['id']}-{self.device_class}"
@property
def device_class(self):
"""Return the device class of the sensor."""

View file

@ -61,6 +61,11 @@ class EcobeeWeather(WeatherEntity):
"""Return the name of the sensor."""
return self._name
@property
def unique_id(self):
"""Return a unique identifier for the weather platform."""
return self.data.ecobee.get_thermostat(self._index)["identifier"]
@property
def condition(self):
"""Return the current condition."""