Add unique_id to essent sensors (#31408)

* Fix mix-up of sensor entities and their values

* Prevent multiple calls for the same meter
This commit is contained in:
Arjan van Balken 2020-02-02 15:45:05 +01:00 committed by GitHub
parent 48402d49dc
commit 55aa341dab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,6 @@
"""Support for Essent API.""" """Support for Essent API."""
from datetime import timedelta from datetime import timedelta
from typing import Optional
from pyessent import PyEssent from pyessent import PyEssent
import voluptuous as vol import voluptuous as vol
@ -73,7 +74,7 @@ class EssentBase:
def update(self): def update(self):
"""Retrieve the latest meter data from Essent.""" """Retrieve the latest meter data from Essent."""
essent = PyEssent(self._username, self._password) essent = PyEssent(self._username, self._password)
eans = essent.get_EANs() eans = set(essent.get_EANs())
for possible_meter in eans: for possible_meter in eans:
meter_data = essent.read_meter(possible_meter, only_last_meter_reading=True) meter_data = essent.read_meter(possible_meter, only_last_meter_reading=True)
if meter_data: if meter_data:
@ -92,6 +93,11 @@ class EssentMeter(Entity):
self._tariff = tariff self._tariff = tariff
self._unit = unit self._unit = unit
@property
def unique_id(self) -> Optional[str]:
"""Return a unique ID."""
return f"{self._meter}-{self._type}-{self._tariff}"
@property @property
def name(self): def name(self):
"""Return the name of the sensor.""" """Return the name of the sensor."""