mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Include unit_of_measurement as InfluxDb field (#9790)
This commit is contained in:
parent
50775ce509
commit
2031b2803f
@ -151,6 +151,7 @@ def setup(hass, config):
|
|||||||
_state = state.state
|
_state = state.state
|
||||||
_state_key = "state"
|
_state_key = "state"
|
||||||
|
|
||||||
|
include_uom = True
|
||||||
measurement = component_config.get(state.entity_id).get(
|
measurement = component_config.get(state.entity_id).get(
|
||||||
CONF_OVERRIDE_MEASUREMENT)
|
CONF_OVERRIDE_MEASUREMENT)
|
||||||
if measurement in (None, ''):
|
if measurement in (None, ''):
|
||||||
@ -163,6 +164,8 @@ def setup(hass, config):
|
|||||||
measurement = default_measurement
|
measurement = default_measurement
|
||||||
else:
|
else:
|
||||||
measurement = state.entity_id
|
measurement = state.entity_id
|
||||||
|
else:
|
||||||
|
include_uom = False
|
||||||
|
|
||||||
json_body = [
|
json_body = [
|
||||||
{
|
{
|
||||||
@ -181,7 +184,7 @@ def setup(hass, config):
|
|||||||
for key, value in state.attributes.items():
|
for key, value in state.attributes.items():
|
||||||
if key in tags_attributes:
|
if key in tags_attributes:
|
||||||
json_body[0]['tags'][key] = value
|
json_body[0]['tags'][key] = value
|
||||||
elif key != 'unit_of_measurement':
|
elif key != 'unit_of_measurement' or include_uom:
|
||||||
# If the key is already in fields
|
# If the key is already in fields
|
||||||
if key in json_body[0]['fields']:
|
if key in json_body[0]['fields']:
|
||||||
key = key + "_"
|
key = key + "_"
|
||||||
|
@ -532,6 +532,48 @@ class TestInfluxDB(unittest.TestCase):
|
|||||||
self.assertFalse(mock_client.return_value.write_points.called)
|
self.assertFalse(mock_client.return_value.write_points.called)
|
||||||
mock_client.return_value.write_points.reset_mock()
|
mock_client.return_value.write_points.reset_mock()
|
||||||
|
|
||||||
|
def test_event_listener_unit_of_measurement_field(self, mock_client):
|
||||||
|
"""Test the event listener for unit of measurement field."""
|
||||||
|
config = {
|
||||||
|
'influxdb': {
|
||||||
|
'host': 'host',
|
||||||
|
'username': 'user',
|
||||||
|
'password': 'pass',
|
||||||
|
'override_measurement': 'state',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
assert setup_component(self.hass, influxdb.DOMAIN, config)
|
||||||
|
self.handler_method = self.hass.bus.listen.call_args_list[0][0][1]
|
||||||
|
|
||||||
|
attrs = {
|
||||||
|
'unit_of_measurement': 'foobars',
|
||||||
|
}
|
||||||
|
state = mock.MagicMock(
|
||||||
|
state='foo', domain='fake', entity_id='fake.entity-id',
|
||||||
|
object_id='entity', attributes=attrs)
|
||||||
|
event = mock.MagicMock(data={'new_state': state}, time_fired=12345)
|
||||||
|
body = [{
|
||||||
|
'measurement': 'state',
|
||||||
|
'tags': {
|
||||||
|
'domain': 'fake',
|
||||||
|
'entity_id': 'entity',
|
||||||
|
},
|
||||||
|
'time': 12345,
|
||||||
|
'fields': {
|
||||||
|
'state': 'foo',
|
||||||
|
'unit_of_measurement_str': 'foobars',
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
self.handler_method(event)
|
||||||
|
self.assertEqual(
|
||||||
|
mock_client.return_value.write_points.call_count, 1
|
||||||
|
)
|
||||||
|
self.assertEqual(
|
||||||
|
mock_client.return_value.write_points.call_args,
|
||||||
|
mock.call(body)
|
||||||
|
)
|
||||||
|
mock_client.return_value.write_points.reset_mock()
|
||||||
|
|
||||||
def test_event_listener_tags_attributes(self, mock_client):
|
def test_event_listener_tags_attributes(self, mock_client):
|
||||||
"""Test the event listener when some attributes should be tags."""
|
"""Test the event listener when some attributes should be tags."""
|
||||||
config = {
|
config = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user