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

* only expose services when tariffs configured

* don't register services multiple times
This commit is contained in:
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.""" """Set up an Utility Meter."""
component = EntityComponent(_LOGGER, DOMAIN, hass) component = EntityComponent(_LOGGER, DOMAIN, hass)
hass.data[DATA_UTILITY] = {} hass.data[DATA_UTILITY] = {}
register_services = False
for meter, conf in config.get(DOMAIN).items(): for meter, conf in config.get(DOMAIN).items():
_LOGGER.debug("Setup %s.%s", DOMAIN, meter) _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.async_create_task(discovery.async_load_platform(
hass, SENSOR_DOMAIN, DOMAIN, tariff_confs, config)) hass, SENSOR_DOMAIN, DOMAIN, tariff_confs, config))
register_services = True
component.async_register_entity_service( if register_services:
SERVICE_RESET, SERVICE_METER_SCHEMA, component.async_register_entity_service(
'async_reset_meters' SERVICE_RESET, SERVICE_METER_SCHEMA,
) 'async_reset_meters'
)
component.async_register_entity_service( component.async_register_entity_service(
SERVICE_SELECT_TARIFF, SERVICE_SELECT_TARIFF_SCHEMA, SERVICE_SELECT_TARIFF, SERVICE_SELECT_TARIFF_SCHEMA,
'async_select_tariff' 'async_select_tariff'
) )
component.async_register_entity_service( component.async_register_entity_service(
SERVICE_SELECT_NEXT_TARIFF, SERVICE_METER_SCHEMA, SERVICE_SELECT_NEXT_TARIFF, SERVICE_METER_SCHEMA,
'async_next_tariff' 'async_next_tariff'
) )
return True return True
@ -150,6 +153,7 @@ class TariffSelect(RestoreEntity):
async def async_reset_meters(self): async def async_reset_meters(self):
"""Reset all sensors of this meter.""" """Reset all sensors of this meter."""
_LOGGER.debug("reset meter %s", self.entity_id)
async_dispatcher_send(self.hass, SIGNAL_RESET_METER, async_dispatcher_send(self.hass, SIGNAL_RESET_METER,
self.entity_id) self.entity_id)

View File

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