Bump greeneye_monitor to v3.0.1 (#63531)

This commit is contained in:
Jonathan Keljo 2022-01-06 05:59:56 -08:00 committed by GitHub
parent 60b6871b46
commit 41625f7410
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 37 additions and 26 deletions

View File

@ -127,13 +127,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
hass.data[DATA_GREENEYE_MONITOR] = monitors hass.data[DATA_GREENEYE_MONITOR] = monitors
server_config = config[DOMAIN] 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: async def close_monitors(event: Event) -> None:
"""Close the monitoring server.""" """Close the Monitors object."""
await server.close() 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 = [] all_sensors = []
for monitor_config in server_config[CONF_MONITORS]: for monitor_config in server_config[CONF_MONITORS]:

View File

@ -2,7 +2,11 @@
"domain": "greeneye_monitor", "domain": "greeneye_monitor",
"name": "GreenEye Monitor (GEM)", "name": "GreenEye Monitor (GEM)",
"documentation": "https://www.home-assistant.io/integrations/greeneye_monitor", "documentation": "https://www.home-assistant.io/integrations/greeneye_monitor",
"requirements": ["greeneye_monitor==2.1"], "requirements": [
"codeowners": ["@jkeljo"], "greeneye_monitor==3.0.1"
],
"codeowners": [
"@jkeljo"
],
"iot_class": "local_push" "iot_class": "local_push"
} }

View File

@ -1,7 +1,7 @@
"""Support for the sensors in a GreenEye Monitor.""" """Support for the sensors in a GreenEye Monitor."""
from __future__ import annotations from __future__ import annotations
from typing import Any, Optional, Union, cast from typing import Any, Union
import greeneye import greeneye
@ -96,9 +96,9 @@ async def async_setup_platform(
UnderlyingSensorType = Union[ UnderlyingSensorType = Union[
greeneye.monitor.Channel, greeneye.monitor.Channel,
greeneye.monitor.Monitor,
greeneye.monitor.PulseCounter, greeneye.monitor.PulseCounter,
greeneye.monitor.TemperatureSensor, greeneye.monitor.TemperatureSensor,
greeneye.monitor.VoltageSensor,
] ]
@ -178,7 +178,7 @@ class CurrentSensor(GEMSensor):
if not self._sensor: if not self._sensor:
return None return None
return cast(Optional[float], self._sensor.watts) return self._sensor.watts
@property @property
def extra_state_attributes(self) -> dict[str, Any] | None: def extra_state_attributes(self) -> dict[str, Any] | None:
@ -229,7 +229,7 @@ class PulseCounter(GEMSensor):
* self._counted_quantity_per_pulse * self._counted_quantity_per_pulse
* self._seconds_per_time_unit * self._seconds_per_time_unit
) )
return cast(float, result) return result
@property @property
def _seconds_per_time_unit(self) -> int: def _seconds_per_time_unit(self) -> int:
@ -281,7 +281,7 @@ class TemperatureSensor(GEMSensor):
if not self._sensor: if not self._sensor:
return None return None
return cast(Optional[float], self._sensor.temperature) return self._sensor.temperature
class VoltageSensor(GEMSensor): class VoltageSensor(GEMSensor):
@ -295,9 +295,9 @@ class VoltageSensor(GEMSensor):
super().__init__(monitor_serial_number, name, "volts", number) super().__init__(monitor_serial_number, name, "volts", number)
@property @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.""" """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 @property
def native_value(self) -> float | None: def native_value(self) -> float | None:
@ -305,4 +305,4 @@ class VoltageSensor(GEMSensor):
if not self._sensor: if not self._sensor:
return None return None
return cast(Optional[float], self._sensor.voltage) return self._sensor.voltage

View File

@ -773,7 +773,7 @@ gps3==0.33.3
greeclimate==1.0.1 greeclimate==1.0.1
# homeassistant.components.greeneye_monitor # homeassistant.components.greeneye_monitor
greeneye_monitor==2.1 greeneye_monitor==3.0.1
# homeassistant.components.greenwave # homeassistant.components.greenwave
greenwavereality==0.5.1 greenwavereality==0.5.1

View File

@ -489,7 +489,7 @@ googlemaps==2.5.1
greeclimate==1.0.1 greeclimate==1.0.1
# homeassistant.components.greeneye_monitor # homeassistant.components.greeneye_monitor
greeneye_monitor==2.1 greeneye_monitor==3.0.1
# homeassistant.components.growatt_server # homeassistant.components.growatt_server
growattServer==1.1.0 growattServer==1.1.0

View File

@ -185,6 +185,13 @@ def mock_temperature_sensor() -> MagicMock:
return temperature_sensor 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: def mock_channel() -> MagicMock:
"""Create a mock GreenEye Monitor CT channel.""" """Create a mock GreenEye Monitor CT channel."""
channel = mock_with_listeners() channel = mock_with_listeners()
@ -198,7 +205,7 @@ def mock_monitor(serial_number: int) -> MagicMock:
"""Create a mock GreenEye Monitor.""" """Create a mock GreenEye Monitor."""
monitor = mock_with_listeners() monitor = mock_with_listeners()
monitor.serial_number = serial_number 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.pulse_counters = [mock_pulse_counter() for i in range(0, 4)]
monitor.temperature_sensors = [mock_temperature_sensor() for i in range(0, 8)] monitor.temperature_sensors = [mock_temperature_sensor() for i in range(0, 8)]
monitor.channels = [mock_channel() for i in range(0, 32)] monitor.channels = [mock_channel() for i in range(0, 32)]

View File

@ -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: 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.""" """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=None)
monitors.start_server = AsyncMock(return_value=server) monitors.close = AsyncMock(return_value=None)
assert await setup_greeneye_monitor_component_with_config( assert await setup_greeneye_monitor_component_with_config(
hass, SINGLE_MONITOR_CONFIG_POWER_SENSORS hass, SINGLE_MONITOR_CONFIG_POWER_SENSORS
) )
await hass.async_stop() await hass.async_stop()
assert server.close.called assert monitors.close.called

View File

@ -64,9 +64,9 @@ async def test_disable_sensor_after_monitor_connected(
) )
monitor = connect_monitor(monitors, SINGLE_MONITOR_SERIAL_NUMBER) 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") 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( 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) monitor = connect_monitor(monitors, SINGLE_MONITOR_SERIAL_NUMBER)
assert_sensor_state(hass, "sensor.voltage_1", "120.0") assert_sensor_state(hass, "sensor.voltage_1", "120.0")
monitor.voltage = 119.8 monitor.voltage_sensor.voltage = 119.8
monitor.notify_all_listeners() monitor.voltage_sensor.notify_all_listeners()
assert_sensor_state(hass, "sensor.voltage_1", "119.8") assert_sensor_state(hass, "sensor.voltage_1", "119.8")