diff --git a/homeassistant/components/statsd.py b/homeassistant/components/statsd.py index 452faf8933b..3613f53c098 100644 --- a/homeassistant/components/statsd.py +++ b/homeassistant/components/statsd.py @@ -19,6 +19,7 @@ _LOGGER = logging.getLogger(__name__) CONF_ATTR = 'log_attributes' CONF_RATE = 'rate' +CONF_VALUE_MAP = 'value_mapping' DEFAULT_HOST = 'localhost' DEFAULT_PORT = 8125 @@ -34,6 +35,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_PREFIX, default=DEFAULT_PREFIX): cv.string, vol.Optional(CONF_RATE, default=DEFAULT_RATE): vol.All(vol.Coerce(int), vol.Range(min=1)), + vol.Optional(CONF_VALUE_MAP, default=None): dict, }), }, extra=vol.ALLOW_EXTRA) @@ -47,6 +49,7 @@ def setup(hass, config): port = conf.get(CONF_PORT) sample_rate = conf.get(CONF_RATE) prefix = conf.get(CONF_PREFIX) + value_mapping = conf.get(CONF_VALUE_MAP) show_attribute_flag = conf.get(CONF_ATTR) statsd_client = statsd.StatsClient(host=host, port=port, prefix=prefix) @@ -59,7 +62,10 @@ def setup(hass, config): return try: - _state = state_helper.state_as_number(state) + if value_mapping and state.state in value_mapping: + _state = float(value_mapping[state.state]) + else: + _state = state_helper.state_as_number(state) except ValueError: # Set the state to none and continue for any numeric attributes. _state = None diff --git a/tests/components/test_statsd.py b/tests/components/test_statsd.py index eb8933b77be..5fd907fe0b1 100644 --- a/tests/components/test_statsd.py +++ b/tests/components/test_statsd.py @@ -86,6 +86,7 @@ class TestStatsd(unittest.TestCase): config = { 'statsd': { 'host': 'host', + 'value_mapping': {'custom': 3} } } @@ -98,6 +99,7 @@ class TestStatsd(unittest.TestCase): valid = {'1': 1, '1.0': 1.0, + 'custom': 3, STATE_ON: 1, STATE_OFF: 0} for in_, out in valid.items():