mirror of
https://github.com/home-assistant/core.git
synced 2025-04-24 01:08:12 +00:00
Bump axis to v45 (#84992)
This commit is contained in:
parent
02b5da710b
commit
534bb74069
@ -51,10 +51,10 @@ class AxisEventBase(AxisEntityBase):
|
||||
super().__init__(device)
|
||||
self.event = event
|
||||
|
||||
self._attr_name = f"{event.TYPE} {event.id}"
|
||||
self._attr_name = f"{event.type} {event.id}"
|
||||
self._attr_unique_id = f"{device.unique_id}-{event.topic}-{event.id}"
|
||||
|
||||
self._attr_device_class = event.CLASS
|
||||
self._attr_device_class = event.group
|
||||
|
||||
async def async_added_to_hass(self) -> None:
|
||||
"""Subscribe sensors events."""
|
||||
|
@ -55,8 +55,8 @@ async def async_setup_entry(
|
||||
"""Add binary sensor from Axis device."""
|
||||
event: AxisEvent = device.api.event[event_id]
|
||||
|
||||
if event.CLASS not in (CLASS_OUTPUT, CLASS_PTZ) and not (
|
||||
event.CLASS == CLASS_LIGHT and event.TYPE == "Light"
|
||||
if event.group not in (CLASS_OUTPUT, CLASS_PTZ) and not (
|
||||
event.group == CLASS_LIGHT and event.type == "Light"
|
||||
):
|
||||
async_add_entities([AxisBinarySensor(event, device)])
|
||||
|
||||
@ -75,7 +75,8 @@ class AxisBinarySensor(AxisEventBase, BinarySensorEntity):
|
||||
super().__init__(event, device)
|
||||
self.cancel_scheduled_update = None
|
||||
|
||||
self._attr_device_class = DEVICE_CLASS.get(self.event.CLASS)
|
||||
self._attr_device_class = DEVICE_CLASS.get(self.event.group)
|
||||
self._attr_is_on = event.is_tripped
|
||||
|
||||
@callback
|
||||
def update_callback(self, no_delay=False):
|
||||
@ -83,6 +84,7 @@ class AxisBinarySensor(AxisEventBase, BinarySensorEntity):
|
||||
|
||||
Parameter no_delay is True when device_event_reachable is sent.
|
||||
"""
|
||||
self._attr_is_on = self.event.is_tripped
|
||||
|
||||
@callback
|
||||
def scheduled_update(now):
|
||||
@ -104,22 +106,17 @@ class AxisBinarySensor(AxisEventBase, BinarySensorEntity):
|
||||
utcnow() + timedelta(seconds=self.device.option_trigger_time),
|
||||
)
|
||||
|
||||
@property
|
||||
def is_on(self) -> bool:
|
||||
"""Return true if event is active."""
|
||||
return self.event.is_tripped
|
||||
|
||||
@property
|
||||
def name(self) -> str | None:
|
||||
"""Return the name of the event."""
|
||||
if (
|
||||
self.event.CLASS == CLASS_INPUT
|
||||
self.event.group == CLASS_INPUT
|
||||
and self.event.id in self.device.api.vapix.ports
|
||||
and self.device.api.vapix.ports[self.event.id].name
|
||||
):
|
||||
return self.device.api.vapix.ports[self.event.id].name
|
||||
|
||||
if self.event.CLASS == CLASS_MOTION:
|
||||
if self.event.group == CLASS_MOTION:
|
||||
|
||||
for event_class, event_data in (
|
||||
(FenceGuard, self.device.api.vapix.fence_guard),
|
||||
@ -133,6 +130,6 @@ class AxisBinarySensor(AxisEventBase, BinarySensorEntity):
|
||||
and event_data
|
||||
and self.event.id in event_data
|
||||
):
|
||||
return f"{self.event.TYPE} {event_data[self.event.id].name}"
|
||||
return f"{self.event.type} {event_data[self.event.id].name}"
|
||||
|
||||
return self._attr_name
|
||||
|
@ -9,8 +9,8 @@ import axis
|
||||
from axis.configuration import Configuration
|
||||
from axis.errors import Unauthorized
|
||||
from axis.event_stream import OPERATION_INITIALIZED
|
||||
from axis.mqtt import mqtt_json_to_event
|
||||
from axis.streammanager import SIGNAL_PLAYING, STATE_STOPPED
|
||||
from axis.vapix.interfaces.mqtt import mqtt_json_to_event
|
||||
|
||||
from homeassistant.components import mqtt
|
||||
from homeassistant.components.mqtt import DOMAIN as MQTT_DOMAIN
|
||||
|
@ -33,7 +33,7 @@ async def async_setup_entry(
|
||||
"""Add light from Axis device."""
|
||||
event: AxisEvent = device.api.event[event_id]
|
||||
|
||||
if event.CLASS == CLASS_LIGHT and event.TYPE == "Light":
|
||||
if event.group == CLASS_LIGHT and event.type == "Light":
|
||||
async_add_entities([AxisLight(event, device)])
|
||||
|
||||
config_entry.async_on_unload(
|
||||
@ -57,7 +57,7 @@ class AxisLight(AxisEventBase, LightEntity):
|
||||
self.max_intensity = 0
|
||||
|
||||
light_type = device.api.vapix.light_control[self.light_id].light_type
|
||||
self._attr_name = f"{light_type} {event.TYPE} {event.id}"
|
||||
self._attr_name = f"{light_type} {event.type} {event.id}"
|
||||
|
||||
self._attr_supported_color_modes = {ColorMode.BRIGHTNESS}
|
||||
self._attr_color_mode = ColorMode.BRIGHTNESS
|
||||
|
@ -3,7 +3,7 @@
|
||||
"name": "Axis",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/axis",
|
||||
"requirements": ["axis==44"],
|
||||
"requirements": ["axis==45"],
|
||||
"dhcp": [
|
||||
{
|
||||
"registered_devices": true
|
||||
|
@ -27,7 +27,7 @@ async def async_setup_entry(
|
||||
"""Add switch from Axis device."""
|
||||
event: AxisEvent = device.api.event[event_id]
|
||||
|
||||
if event.CLASS == CLASS_OUTPUT:
|
||||
if event.group == CLASS_OUTPUT:
|
||||
async_add_entities([AxisSwitch(event, device)])
|
||||
|
||||
config_entry.async_on_unload(
|
||||
|
@ -392,7 +392,7 @@ aurorapy==0.2.7
|
||||
# avion==0.10
|
||||
|
||||
# homeassistant.components.axis
|
||||
axis==44
|
||||
axis==45
|
||||
|
||||
# homeassistant.components.azure_event_hub
|
||||
azure-eventhub==5.7.0
|
||||
|
@ -334,7 +334,7 @@ auroranoaa==0.0.2
|
||||
aurorapy==0.2.7
|
||||
|
||||
# homeassistant.components.axis
|
||||
axis==44
|
||||
axis==45
|
||||
|
||||
# homeassistant.components.azure_event_hub
|
||||
azure-eventhub==5.7.0
|
||||
|
@ -74,7 +74,7 @@ async def test_camera_with_stream_profile(hass):
|
||||
|
||||
async def test_camera_disabled(hass):
|
||||
"""Test that Axis camera platform is loaded properly but does not create camera entity."""
|
||||
with patch("axis.vapix.Params.image_format", new=None):
|
||||
with patch("axis.vapix.vapix.Params.image_format", new=None):
|
||||
await setup_axis_integration(hass)
|
||||
|
||||
assert len(hass.states.async_entity_ids(CAMERA_DOMAIN)) == 0
|
||||
|
@ -494,7 +494,7 @@ async def test_shutdown():
|
||||
async def test_get_device_fails(hass):
|
||||
"""Device unauthorized yields authentication required error."""
|
||||
with patch(
|
||||
"axis.vapix.Vapix.request", side_effect=axislib.Unauthorized
|
||||
"axis.vapix.vapix.Vapix.request", side_effect=axislib.Unauthorized
|
||||
), pytest.raises(axis.errors.AuthenticationRequired):
|
||||
await axis.device.get_axis_device(hass, ENTRY_CONFIG)
|
||||
|
||||
@ -502,7 +502,7 @@ async def test_get_device_fails(hass):
|
||||
async def test_get_device_device_unavailable(hass):
|
||||
"""Device unavailable yields cannot connect error."""
|
||||
with patch(
|
||||
"axis.vapix.Vapix.request", side_effect=axislib.RequestError
|
||||
"axis.vapix.vapix.Vapix.request", side_effect=axislib.RequestError
|
||||
), pytest.raises(axis.errors.CannotConnect):
|
||||
await axis.device.get_axis_device(hass, ENTRY_CONFIG)
|
||||
|
||||
@ -510,6 +510,6 @@ async def test_get_device_device_unavailable(hass):
|
||||
async def test_get_device_unknown_error(hass):
|
||||
"""Device yield unknown error."""
|
||||
with patch(
|
||||
"axis.vapix.Vapix.request", side_effect=axislib.AxisException
|
||||
"axis.vapix.vapix.Vapix.request", side_effect=axislib.AxisException
|
||||
), pytest.raises(axis.errors.AuthenticationRequired):
|
||||
await axis.device.get_axis_device(hass, ENTRY_CONFIG)
|
||||
|
@ -81,10 +81,10 @@ async def test_lights(hass, mock_rtsp_event):
|
||||
|
||||
# Add light
|
||||
with patch(
|
||||
"axis.light_control.LightControl.get_current_intensity",
|
||||
"axis.vapix.interfaces.light_control.LightControl.get_current_intensity",
|
||||
return_value={"data": {"intensity": 100}},
|
||||
), patch(
|
||||
"axis.light_control.LightControl.get_valid_intensity",
|
||||
"axis.vapix.interfaces.light_control.LightControl.get_valid_intensity",
|
||||
return_value={"data": {"ranges": [{"high": 150}]}},
|
||||
):
|
||||
mock_rtsp_event(
|
||||
@ -106,11 +106,11 @@ async def test_lights(hass, mock_rtsp_event):
|
||||
|
||||
# Turn on, set brightness, light already on
|
||||
with patch(
|
||||
"axis.light_control.LightControl.activate_light"
|
||||
"axis.vapix.interfaces.light_control.LightControl.activate_light"
|
||||
) as mock_activate, patch(
|
||||
"axis.light_control.LightControl.set_manual_intensity"
|
||||
"axis.vapix.interfaces.light_control.LightControl.set_manual_intensity"
|
||||
) as mock_set_intensity, patch(
|
||||
"axis.light_control.LightControl.get_current_intensity",
|
||||
"axis.vapix.interfaces.light_control.LightControl.get_current_intensity",
|
||||
return_value={"data": {"intensity": 100}},
|
||||
):
|
||||
await hass.services.async_call(
|
||||
@ -124,9 +124,9 @@ async def test_lights(hass, mock_rtsp_event):
|
||||
|
||||
# Turn off
|
||||
with patch(
|
||||
"axis.light_control.LightControl.deactivate_light"
|
||||
"axis.vapix.interfaces.light_control.LightControl.deactivate_light"
|
||||
) as mock_deactivate, patch(
|
||||
"axis.light_control.LightControl.get_current_intensity",
|
||||
"axis.vapix.interfaces.light_control.LightControl.get_current_intensity",
|
||||
return_value={"data": {"intensity": 100}},
|
||||
):
|
||||
await hass.services.async_call(
|
||||
@ -152,11 +152,11 @@ async def test_lights(hass, mock_rtsp_event):
|
||||
|
||||
# Turn on, set brightness
|
||||
with patch(
|
||||
"axis.light_control.LightControl.activate_light"
|
||||
"axis.vapix.interfaces.light_control.LightControl.activate_light"
|
||||
) as mock_activate, patch(
|
||||
"axis.light_control.LightControl.set_manual_intensity"
|
||||
"axis.vapix.interfaces.light_control.LightControl.set_manual_intensity"
|
||||
) as mock_set_intensity, patch(
|
||||
"axis.light_control.LightControl.get_current_intensity",
|
||||
"axis.vapix.interfaces.light_control.LightControl.get_current_intensity",
|
||||
return_value={"data": {"intensity": 100}},
|
||||
):
|
||||
await hass.services.async_call(
|
||||
@ -170,9 +170,9 @@ async def test_lights(hass, mock_rtsp_event):
|
||||
|
||||
# Turn off, light already off
|
||||
with patch(
|
||||
"axis.light_control.LightControl.deactivate_light"
|
||||
"axis.vapix.interfaces.light_control.LightControl.deactivate_light"
|
||||
) as mock_deactivate, patch(
|
||||
"axis.light_control.LightControl.get_current_intensity",
|
||||
"axis.vapix.interfaces.light_control.LightControl.get_current_intensity",
|
||||
return_value={"data": {"intensity": 100}},
|
||||
):
|
||||
await hass.services.async_call(
|
||||
|
Loading…
x
Reference in New Issue
Block a user