Bump simplisafe-python to 8.1.1 (#31915)
This commit is contained in:
parent
a6b5d73f1c
commit
74f0262e82
4 changed files with 39 additions and 57 deletions
|
@ -1,12 +1,8 @@
|
|||
"""Support for SimpliSafe alarm systems."""
|
||||
import asyncio
|
||||
from dataclasses import InitVar, asdict, dataclass, field
|
||||
from datetime import datetime
|
||||
import logging
|
||||
from typing import Optional
|
||||
|
||||
from simplipy import API
|
||||
from simplipy.entity import EntityTypes
|
||||
from simplipy.errors import InvalidCredentialsError, SimplipyError, WebsocketError
|
||||
from simplipy.websocket import (
|
||||
EVENT_CAMERA_MOTION_DETECTED,
|
||||
|
@ -15,7 +11,6 @@ from simplipy.websocket import (
|
|||
EVENT_LOCK_LOCKED,
|
||||
EVENT_LOCK_UNLOCKED,
|
||||
EVENT_MOTION_DETECTED,
|
||||
get_event_type_from_payload,
|
||||
)
|
||||
import voluptuous as vol
|
||||
|
||||
|
@ -38,7 +33,6 @@ from homeassistant.helpers.service import (
|
|||
async_register_admin_service,
|
||||
verify_domain_control,
|
||||
)
|
||||
from homeassistant.util.dt import utc_from_timestamp
|
||||
|
||||
from .config_flow import configured_instances
|
||||
from .const import (
|
||||
|
@ -77,10 +71,14 @@ WEBSOCKET_EVENTS_TO_TRIGGER_HASS_EVENT = [
|
|||
EVENT_MOTION_DETECTED,
|
||||
]
|
||||
|
||||
ATTR_LAST_EVENT_CHANGED_BY = "last_event_changed_by"
|
||||
ATTR_LAST_EVENT_INFO = "last_event_info"
|
||||
ATTR_LAST_EVENT_SENSOR_NAME = "last_event_sensor_name"
|
||||
ATTR_LAST_EVENT_SENSOR_SERIAL = "last_event_sensor_serial"
|
||||
ATTR_LAST_EVENT_SENSOR_TYPE = "last_event_sensor_type"
|
||||
ATTR_LAST_EVENT_TIMESTAMP = "last_event_timestamp"
|
||||
ATTR_LAST_EVENT_TYPE = "last_event_type"
|
||||
ATTR_LAST_EVENT_TYPE = "last_event_type"
|
||||
ATTR_PIN_LABEL = "label"
|
||||
ATTR_PIN_LABEL_OR_VALUE = "label_or_pin"
|
||||
ATTR_PIN_VALUE = "pin"
|
||||
|
@ -317,46 +315,6 @@ async def async_unload_entry(hass, entry):
|
|||
return True
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class SimpliSafeWebsocketEvent:
|
||||
"""Define a representation of a parsed websocket event."""
|
||||
|
||||
event_data: InitVar[dict]
|
||||
|
||||
changed_by: Optional[str] = field(init=False)
|
||||
event_type: Optional[str] = field(init=False)
|
||||
info: str = field(init=False)
|
||||
sensor_name: str = field(init=False)
|
||||
sensor_serial: str = field(init=False)
|
||||
sensor_type: EntityTypes = field(init=False)
|
||||
system_id: int = field(init=False)
|
||||
timestamp: datetime = field(init=False)
|
||||
|
||||
def __post_init__(self, event_data):
|
||||
"""Initialize."""
|
||||
object.__setattr__(self, "changed_by", event_data["pinName"])
|
||||
object.__setattr__(self, "event_type", get_event_type_from_payload(event_data))
|
||||
object.__setattr__(self, "info", event_data["info"])
|
||||
object.__setattr__(self, "sensor_name", event_data["sensorName"])
|
||||
object.__setattr__(self, "sensor_serial", event_data["sensorSerial"])
|
||||
try:
|
||||
object.__setattr__(
|
||||
self, "sensor_type", EntityTypes(event_data["sensorType"]).name
|
||||
)
|
||||
except ValueError:
|
||||
_LOGGER.warning(
|
||||
'Encountered unknown entity type: %s ("%s"). Please report it at'
|
||||
"https://github.com/home-assistant/home-assistant/issues.",
|
||||
event_data["sensorType"],
|
||||
event_data["sensorName"],
|
||||
)
|
||||
object.__setattr__(self, "sensor_type", None)
|
||||
object.__setattr__(self, "system_id", event_data["sid"])
|
||||
object.__setattr__(
|
||||
self, "timestamp", utc_from_timestamp(event_data["eventTimestamp"])
|
||||
)
|
||||
|
||||
|
||||
class SimpliSafeWebsocket:
|
||||
"""Define a SimpliSafe websocket "manager" object."""
|
||||
|
||||
|
@ -410,15 +368,11 @@ class SimpliSafeWebsocket:
|
|||
"""Define a handler to fire when the websocket is disconnected."""
|
||||
_LOGGER.info("Disconnected from websocket")
|
||||
|
||||
def _on_event(self, data):
|
||||
def _on_event(self, event):
|
||||
"""Define a handler to fire when a new SimpliSafe event arrives."""
|
||||
event = SimpliSafeWebsocketEvent(data)
|
||||
_LOGGER.debug("New websocket event: %s", event)
|
||||
self.last_events[data["sid"]] = event
|
||||
async_dispatcher_send(self._hass, TOPIC_UPDATE.format(data["sid"]))
|
||||
|
||||
if event.event_type in WEBSOCKET_EVENTS_TO_TRIGGER_HASS_EVENT:
|
||||
self._hass.bus.async_fire(EVENT_SIMPLISAFE_EVENT, event_data=asdict(event))
|
||||
self.last_events[event.system_id] = event
|
||||
async_dispatcher_send(self._hass, TOPIC_UPDATE.format(event.system_id))
|
||||
|
||||
_LOGGER.debug("Resetting websocket watchdog")
|
||||
self._websocket_watchdog_listener()
|
||||
|
@ -427,6 +381,28 @@ class SimpliSafeWebsocket:
|
|||
)
|
||||
self._websocket_reconnect_delay = DEFAULT_SOCKET_MIN_RETRY
|
||||
|
||||
if event.event_type not in WEBSOCKET_EVENTS_TO_TRIGGER_HASS_EVENT:
|
||||
return
|
||||
|
||||
if event.sensor_type:
|
||||
sensor_type = event.sensor_type.name
|
||||
else:
|
||||
sensor_type = None
|
||||
|
||||
self._hass.bus.async_fire(
|
||||
EVENT_SIMPLISAFE_EVENT,
|
||||
event_data={
|
||||
ATTR_LAST_EVENT_CHANGED_BY: event.changed_by,
|
||||
ATTR_LAST_EVENT_TYPE: event.event_type,
|
||||
ATTR_LAST_EVENT_INFO: event.info,
|
||||
ATTR_LAST_EVENT_SENSOR_NAME: event.sensor_name,
|
||||
ATTR_LAST_EVENT_SENSOR_SERIAL: event.sensor_serial,
|
||||
ATTR_LAST_EVENT_SENSOR_TYPE: sensor_type,
|
||||
ATTR_SYSTEM_ID: event.system_id,
|
||||
ATTR_LAST_EVENT_TIMESTAMP: event.timestamp,
|
||||
},
|
||||
)
|
||||
|
||||
async def async_websocket_connect(self):
|
||||
"""Register handlers and connect to the websocket."""
|
||||
if self._websocket_reconnect_underway:
|
||||
|
@ -669,11 +645,17 @@ class SimpliSafeEntity(Entity):
|
|||
return
|
||||
|
||||
self._last_processed_websocket_event = last_websocket_event
|
||||
|
||||
if last_websocket_event.sensor_type:
|
||||
sensor_type = last_websocket_event.sensor_type.name
|
||||
else:
|
||||
sensor_type = None
|
||||
|
||||
self._attrs.update(
|
||||
{
|
||||
ATTR_LAST_EVENT_INFO: last_websocket_event.info,
|
||||
ATTR_LAST_EVENT_SENSOR_NAME: last_websocket_event.sensor_name,
|
||||
ATTR_LAST_EVENT_SENSOR_TYPE: last_websocket_event.sensor_type,
|
||||
ATTR_LAST_EVENT_SENSOR_TYPE: sensor_type,
|
||||
ATTR_LAST_EVENT_TIMESTAMP: last_websocket_event.timestamp,
|
||||
}
|
||||
)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"name": "SimpliSafe",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/simplisafe",
|
||||
"requirements": ["simplisafe-python==7.3.0"],
|
||||
"requirements": ["simplisafe-python==8.1.1"],
|
||||
"dependencies": [],
|
||||
"codeowners": ["@bachya"]
|
||||
}
|
||||
|
|
|
@ -1830,7 +1830,7 @@ simplehound==0.3
|
|||
simplepush==1.1.4
|
||||
|
||||
# homeassistant.components.simplisafe
|
||||
simplisafe-python==7.3.0
|
||||
simplisafe-python==8.1.1
|
||||
|
||||
# homeassistant.components.sisyphus
|
||||
sisyphus-control==2.2.1
|
||||
|
|
|
@ -623,7 +623,7 @@ sentry-sdk==0.13.5
|
|||
simplehound==0.3
|
||||
|
||||
# homeassistant.components.simplisafe
|
||||
simplisafe-python==7.3.0
|
||||
simplisafe-python==8.1.1
|
||||
|
||||
# homeassistant.components.sleepiq
|
||||
sleepyq==0.7
|
||||
|
|
Loading…
Add table
Reference in a new issue