Don't expose services in Utility_Meter unless tariffs are available (#20878)

* only expose services when tariffs configured

* don't register services multiple times
pull/20973/head
Diogo Gomes 2019-02-17 04:04:56 +00:00 committed by Paulus Schoutsen
parent 9c92880b5a
commit 9cab597bc4
2 changed files with 17 additions and 12 deletions

View File

@ -51,6 +51,7 @@ async def async_setup(hass, config):
"""Set up an Utility Meter."""
component = EntityComponent(_LOGGER, DOMAIN, hass)
hass.data[DATA_UTILITY] = {}
register_services = False
for meter, conf in config.get(DOMAIN).items():
_LOGGER.debug("Setup %s.%s", DOMAIN, meter)
@ -80,21 +81,23 @@ async def async_setup(hass, config):
})
hass.async_create_task(discovery.async_load_platform(
hass, SENSOR_DOMAIN, DOMAIN, tariff_confs, config))
register_services = True
component.async_register_entity_service(
SERVICE_RESET, SERVICE_METER_SCHEMA,
'async_reset_meters'
)
if register_services:
component.async_register_entity_service(
SERVICE_RESET, SERVICE_METER_SCHEMA,
'async_reset_meters'
)
component.async_register_entity_service(
SERVICE_SELECT_TARIFF, SERVICE_SELECT_TARIFF_SCHEMA,
'async_select_tariff'
)
component.async_register_entity_service(
SERVICE_SELECT_TARIFF, SERVICE_SELECT_TARIFF_SCHEMA,
'async_select_tariff'
)
component.async_register_entity_service(
SERVICE_SELECT_NEXT_TARIFF, SERVICE_METER_SCHEMA,
'async_next_tariff'
)
component.async_register_entity_service(
SERVICE_SELECT_NEXT_TARIFF, SERVICE_METER_SCHEMA,
'async_next_tariff'
)
return True
@ -150,6 +153,7 @@ class TariffSelect(RestoreEntity):
async def async_reset_meters(self):
"""Reset all sensors of this meter."""
_LOGGER.debug("reset meter %s", self.entity_id)
async_dispatcher_send(self.hass, SIGNAL_RESET_METER,
self.entity_id)

View File

@ -189,6 +189,7 @@ class UtilityMeterSensor(RestoreEntity):
if self._tariff != tariff_entity_state.state:
return
_LOGGER.debug("tracking source: %s", self._sensor_source_id)
self._collecting = async_track_state_change(
self.hass, self._sensor_source_id, self.async_reading)