From 8af64456ec8995c2e584bacd85ba1bca5f219b6f Mon Sep 17 00:00:00 2001 From: fillefilip8 Date: Sun, 6 Sep 2020 20:49:54 +0200 Subject: [PATCH] Add number parsing for OpenHardwareMonitor (#39030) --- .../components/openhardwaremonitor/sensor.py | 15 ++++++++++++--- .../components/openhardwaremonitor/test_sensor.py | 11 +++++++++-- tests/fixtures/openhardwaremonitor.json | 6 +++--- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/openhardwaremonitor/sensor.py b/homeassistant/components/openhardwaremonitor/sensor.py index c0c71405ab3..115366dac66 100644 --- a/homeassistant/components/openhardwaremonitor/sensor.py +++ b/homeassistant/components/openhardwaremonitor/sensor.py @@ -77,6 +77,11 @@ class OpenHardwareMonitorDevice(Entity): """Return the state attributes of the sun.""" return self.attributes + @classmethod + def parse_number(cls, string): + """In some locales a decimal numbers uses ',' instead of '.'.""" + return string.replace(",", ".") + def update(self): """Update the device from a new JSON object.""" self._data.update() @@ -89,12 +94,16 @@ class OpenHardwareMonitorDevice(Entity): values = array[path_number] if path_index == len(self.path) - 1: - self.value = values[OHM_VALUE].split(" ")[0] + self.value = self.parse_number(values[OHM_VALUE].split(" ")[0]) _attributes.update( { "name": values[OHM_NAME], - STATE_MIN_VALUE: values[OHM_MIN].split(" ")[0], - STATE_MAX_VALUE: values[OHM_MAX].split(" ")[0], + STATE_MIN_VALUE: self.parse_number( + values[OHM_MIN].split(" ")[0] + ), + STATE_MAX_VALUE: self.parse_number( + values[OHM_MAX].split(" ")[0] + ), } ) diff --git a/tests/components/openhardwaremonitor/test_sensor.py b/tests/components/openhardwaremonitor/test_sensor.py index 6c8776f740d..3cf5ba84a25 100644 --- a/tests/components/openhardwaremonitor/test_sensor.py +++ b/tests/components/openhardwaremonitor/test_sensor.py @@ -41,8 +41,15 @@ class TestOpenHardwareMonitorSetup(unittest.TestCase): assert len(entities) == 38 state = self.hass.states.get( - "sensor.test_pc_intel_core_i7_7700_clocks_bus_speed" + "sensor.test_pc_intel_core_i7_7700_temperatures_cpu_core_1" ) assert state is not None - assert state.state == "100" + assert state.state == "31.0" + + state = self.hass.states.get( + "sensor.test_pc_intel_core_i7_7700_temperatures_cpu_core_2" + ) + + assert state is not None + assert state.state == "30.0" diff --git a/tests/fixtures/openhardwaremonitor.json b/tests/fixtures/openhardwaremonitor.json index 13c5b5481e0..960da03f535 100644 --- a/tests/fixtures/openhardwaremonitor.json +++ b/tests/fixtures/openhardwaremonitor.json @@ -91,9 +91,9 @@ "id": 12, "Text": "CPU Core #2", "Children": [], - "Min": "29.0 °C", - "Value": "30.0 °C", - "Max": "61.0 °C", + "Min": "29,0 °C", + "Value": "30,0 °C", + "Max": "61,0 °C", "ImageURL": "images/transparent.png" }, {