From 41625f7410c00dbf25340321c83e265ae7218bf8 Mon Sep 17 00:00:00 2001 From: Jonathan Keljo Date: Thu, 6 Jan 2022 05:59:56 -0800 Subject: [PATCH] Bump greeneye_monitor to v3.0.1 (#63531) --- .../components/greeneye_monitor/__init__.py | 10 +++++----- .../components/greeneye_monitor/manifest.json | 10 +++++++--- .../components/greeneye_monitor/sensor.py | 16 ++++++++-------- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/greeneye_monitor/common.py | 9 ++++++++- tests/components/greeneye_monitor/test_init.py | 6 +++--- tests/components/greeneye_monitor/test_sensor.py | 8 ++++---- 8 files changed, 37 insertions(+), 26 deletions(-) diff --git a/homeassistant/components/greeneye_monitor/__init__.py b/homeassistant/components/greeneye_monitor/__init__.py index d2b0e7c307b..e24e7b81806 100644 --- a/homeassistant/components/greeneye_monitor/__init__.py +++ b/homeassistant/components/greeneye_monitor/__init__.py @@ -127,13 +127,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: hass.data[DATA_GREENEYE_MONITOR] = monitors server_config = config[DOMAIN] - server = await monitors.start_server(server_config[CONF_PORT]) + await monitors.start_server(server_config[CONF_PORT]) - async def close_server(event: Event) -> None: - """Close the monitoring server.""" - await server.close() + async def close_monitors(event: Event) -> None: + """Close the Monitors object.""" + await monitors.close() - hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, close_server) + hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, close_monitors) all_sensors = [] for monitor_config in server_config[CONF_MONITORS]: diff --git a/homeassistant/components/greeneye_monitor/manifest.json b/homeassistant/components/greeneye_monitor/manifest.json index 628a91774f4..a243d767d99 100644 --- a/homeassistant/components/greeneye_monitor/manifest.json +++ b/homeassistant/components/greeneye_monitor/manifest.json @@ -2,7 +2,11 @@ "domain": "greeneye_monitor", "name": "GreenEye Monitor (GEM)", "documentation": "https://www.home-assistant.io/integrations/greeneye_monitor", - "requirements": ["greeneye_monitor==2.1"], - "codeowners": ["@jkeljo"], + "requirements": [ + "greeneye_monitor==3.0.1" + ], + "codeowners": [ + "@jkeljo" + ], "iot_class": "local_push" -} +} \ No newline at end of file diff --git a/homeassistant/components/greeneye_monitor/sensor.py b/homeassistant/components/greeneye_monitor/sensor.py index b0d1a246819..7c01897fa9d 100644 --- a/homeassistant/components/greeneye_monitor/sensor.py +++ b/homeassistant/components/greeneye_monitor/sensor.py @@ -1,7 +1,7 @@ """Support for the sensors in a GreenEye Monitor.""" from __future__ import annotations -from typing import Any, Optional, Union, cast +from typing import Any, Union import greeneye @@ -96,9 +96,9 @@ async def async_setup_platform( UnderlyingSensorType = Union[ greeneye.monitor.Channel, - greeneye.monitor.Monitor, greeneye.monitor.PulseCounter, greeneye.monitor.TemperatureSensor, + greeneye.monitor.VoltageSensor, ] @@ -178,7 +178,7 @@ class CurrentSensor(GEMSensor): if not self._sensor: return None - return cast(Optional[float], self._sensor.watts) + return self._sensor.watts @property def extra_state_attributes(self) -> dict[str, Any] | None: @@ -229,7 +229,7 @@ class PulseCounter(GEMSensor): * self._counted_quantity_per_pulse * self._seconds_per_time_unit ) - return cast(float, result) + return result @property def _seconds_per_time_unit(self) -> int: @@ -281,7 +281,7 @@ class TemperatureSensor(GEMSensor): if not self._sensor: return None - return cast(Optional[float], self._sensor.temperature) + return self._sensor.temperature class VoltageSensor(GEMSensor): @@ -295,9 +295,9 @@ class VoltageSensor(GEMSensor): super().__init__(monitor_serial_number, name, "volts", number) @property - def _sensor(self) -> greeneye.monitor.Monitor | None: + def _sensor(self) -> greeneye.monitor.VoltageSensor | None: """Wire the updates to the monitor itself, since there is no voltage element in the API.""" - return self._monitor + return self._monitor.voltage_sensor if self._monitor else None @property def native_value(self) -> float | None: @@ -305,4 +305,4 @@ class VoltageSensor(GEMSensor): if not self._sensor: return None - return cast(Optional[float], self._sensor.voltage) + return self._sensor.voltage diff --git a/requirements_all.txt b/requirements_all.txt index c69b8e37c07..07fdf92f6dc 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -773,7 +773,7 @@ gps3==0.33.3 greeclimate==1.0.1 # homeassistant.components.greeneye_monitor -greeneye_monitor==2.1 +greeneye_monitor==3.0.1 # homeassistant.components.greenwave greenwavereality==0.5.1 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index b1e4dfcd88f..5bf6c36c8f3 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -489,7 +489,7 @@ googlemaps==2.5.1 greeclimate==1.0.1 # homeassistant.components.greeneye_monitor -greeneye_monitor==2.1 +greeneye_monitor==3.0.1 # homeassistant.components.growatt_server growattServer==1.1.0 diff --git a/tests/components/greeneye_monitor/common.py b/tests/components/greeneye_monitor/common.py index ac00ccbfc0b..952992ee500 100644 --- a/tests/components/greeneye_monitor/common.py +++ b/tests/components/greeneye_monitor/common.py @@ -185,6 +185,13 @@ def mock_temperature_sensor() -> MagicMock: return temperature_sensor +def mock_voltage_sensor() -> MagicMock: + """Create a mock GreenEye Monitor voltage sensor.""" + voltage_sensor = mock_with_listeners() + voltage_sensor.voltage = 120.0 + return voltage_sensor + + def mock_channel() -> MagicMock: """Create a mock GreenEye Monitor CT channel.""" channel = mock_with_listeners() @@ -198,7 +205,7 @@ def mock_monitor(serial_number: int) -> MagicMock: """Create a mock GreenEye Monitor.""" monitor = mock_with_listeners() monitor.serial_number = serial_number - monitor.voltage = 120.0 + monitor.voltage_sensor = mock_voltage_sensor() monitor.pulse_counters = [mock_pulse_counter() for i in range(0, 4)] monitor.temperature_sensors = [mock_temperature_sensor() for i in range(0, 8)] monitor.channels = [mock_channel() for i in range(0, 32)] diff --git a/tests/components/greeneye_monitor/test_init.py b/tests/components/greeneye_monitor/test_init.py index 143fb14f28c..5bffe2eb4a4 100644 --- a/tests/components/greeneye_monitor/test_init.py +++ b/tests/components/greeneye_monitor/test_init.py @@ -188,12 +188,12 @@ async def test_multi_monitor_config(hass: HomeAssistant, monitors: AsyncMock) -> async def test_setup_and_shutdown(hass: HomeAssistant, monitors: AsyncMock) -> None: """Test that the component can set up and shut down cleanly, closing the underlying server on shutdown.""" - server = AsyncMock() - monitors.start_server = AsyncMock(return_value=server) + monitors.start_server = AsyncMock(return_value=None) + monitors.close = AsyncMock(return_value=None) assert await setup_greeneye_monitor_component_with_config( hass, SINGLE_MONITOR_CONFIG_POWER_SENSORS ) await hass.async_stop() - assert server.close.called + assert monitors.close.called diff --git a/tests/components/greeneye_monitor/test_sensor.py b/tests/components/greeneye_monitor/test_sensor.py index 401e9e93048..9cd6f97fc38 100644 --- a/tests/components/greeneye_monitor/test_sensor.py +++ b/tests/components/greeneye_monitor/test_sensor.py @@ -64,9 +64,9 @@ async def test_disable_sensor_after_monitor_connected( ) monitor = connect_monitor(monitors, SINGLE_MONITOR_SERIAL_NUMBER) - assert len(monitor.listeners) == 1 + assert len(monitor.voltage_sensor.listeners) == 1 await disable_entity(hass, "sensor.voltage_1") - assert len(monitor.listeners) == 0 + assert len(monitor.voltage_sensor.listeners) == 0 async def test_updates_state_when_sensor_pushes( @@ -80,8 +80,8 @@ async def test_updates_state_when_sensor_pushes( monitor = connect_monitor(monitors, SINGLE_MONITOR_SERIAL_NUMBER) assert_sensor_state(hass, "sensor.voltage_1", "120.0") - monitor.voltage = 119.8 - monitor.notify_all_listeners() + monitor.voltage_sensor.voltage = 119.8 + monitor.voltage_sensor.notify_all_listeners() assert_sensor_state(hass, "sensor.voltage_1", "119.8")