From 98aec6e4b57123da073254ed856c6bb65d19e49c Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Tue, 8 May 2018 21:59:39 +0200 Subject: [PATCH 1/2] Ignore NaN values for influxdb --- homeassistant/components/influxdb.py | 9 ++++++--- tests/components/test_influxdb.py | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index 1f7f9f6262f8ed..22a7a65b991da8 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -9,6 +9,7 @@ import queue import threading import time +import math import requests.exceptions import voluptuous as vol @@ -220,9 +221,11 @@ def event_to_json(event): json['fields'][key] = float( RE_DECIMAL.sub('', new_value)) - # Infinity is not a valid float in InfluxDB - if (key, float("inf")) in json['fields'].items(): - del json['fields'][key] + # Infinity and NaN are not valid floats in InfluxDB + if key in json['fields']: + converted = json['fields'][key] + if math.isinf(converted) or math.isnan(converted): + del json['fields'][key] json['tags'].update(tags) diff --git a/tests/components/test_influxdb.py b/tests/components/test_influxdb.py index c909a8488be43e..e2323aca8559da 100644 --- a/tests/components/test_influxdb.py +++ b/tests/components/test_influxdb.py @@ -217,7 +217,7 @@ def test_event_listener_inf(self, mock_client): """Test the event listener for missing units.""" self._setup() - attrs = {'bignumstring': "9" * 999} + attrs = {'bignumstring': '9' * 999, 'nonumstring': 'nan'} state = mock.MagicMock( state=8, domain='fake', entity_id='fake.entity-id', object_id='entity', attributes=attrs) From fb1c96656914c66017933db6dd23de76f660ab75 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Tue, 8 May 2018 23:36:56 +0200 Subject: [PATCH 2/2] Catch TypeError --- homeassistant/components/influxdb.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/influxdb.py b/homeassistant/components/influxdb.py index 22a7a65b991da8..6d54324542add0 100644 --- a/homeassistant/components/influxdb.py +++ b/homeassistant/components/influxdb.py @@ -222,10 +222,11 @@ def event_to_json(event): RE_DECIMAL.sub('', new_value)) # Infinity and NaN are not valid floats in InfluxDB - if key in json['fields']: - converted = json['fields'][key] - if math.isinf(converted) or math.isnan(converted): + try: + if not math.isfinite(json['fields'][key]): del json['fields'][key] + except (KeyError, TypeError): + pass json['tags'].update(tags)