Skip to content

Commit ccc24f3

Browse files
committed
FIX Broken plugin in HASS 2021.12.1
1 parent 7c03dd3 commit ccc24f3

2 files changed

Lines changed: 43 additions & 38 deletions

File tree

custom_components/moox_track/__init__.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
"""Support for MOOX Track."""
2+
from http import HTTPStatus
3+
24
from aiohttp import web
35
import voluptuous as vol
46

5-
from homeassistant.components.device_tracker import DOMAIN as DEVICE_TRACKER
6-
from homeassistant.const import (
7-
ATTR_ID,
8-
CONF_WEBHOOK_ID,
9-
HTTP_OK,
10-
HTTP_UNPROCESSABLE_ENTITY,
11-
)
7+
from homeassistant.const import ATTR_ID, CONF_WEBHOOK_ID, Platform
128
from homeassistant.helpers import config_entry_flow
139
import homeassistant.helpers.config_validation as cv
1410
from homeassistant.helpers.dispatcher import async_dispatcher_send
@@ -25,13 +21,13 @@
2521
DOMAIN,
2622
)
2723

28-
PLATFORMS = [DEVICE_TRACKER]
24+
PLATFORMS = [Platform.DEVICE_TRACKER]
2925

3026

3127
TRACKER_UPDATE = f"{DOMAIN}_tracker_update"
3228

3329

34-
DEFAULT_ACCURACY = HTTP_OK
30+
DEFAULT_ACCURACY = 200
3531
DEFAULT_BATTERY = -1
3632

3733

@@ -66,7 +62,9 @@ async def handle_webhook(hass, webhook_id, request):
6662
try:
6763
data = WEBHOOK_SCHEMA(dict(request.query))
6864
except vol.MultipleInvalid as error:
69-
return web.Response(text=error.error_message, status=HTTP_UNPROCESSABLE_ENTITY)
65+
return web.Response(
66+
text=error.error_message, status=HTTPStatus.UNPROCESSABLE_ENTITY
67+
)
7068

7169
attrs = {
7270
ATTR_ALTITUDE: data.get(ATTR_ALTITUDE),
@@ -87,7 +85,7 @@ async def handle_webhook(hass, webhook_id, request):
8785
attrs,
8886
)
8987

90-
return web.Response(text=f"Setting location for {device}", status=HTTP_OK)
88+
return web.Response(text=f"Setting location for {device}")
9189

9290

9391
async def async_setup_entry(hass, entry):

custom_components/moox_track/device_tracker.py

Lines changed: 34 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,12 @@
66
from stringcase import camelcase
77
import voluptuous as vol
88

9-
from homeassistant.components.device_tracker import PLATFORM_SCHEMA, SOURCE_TYPE_GPS
9+
from homeassistant.components.device_tracker import (
10+
PLATFORM_SCHEMA as PARENT_PLATFORM_SCHEMA,
11+
SOURCE_TYPE_GPS,
12+
)
1013
from homeassistant.components.device_tracker.config_entry import TrackerEntity
14+
from homeassistant.config_entries import ConfigEntry
1115
from homeassistant.const import (
1216
CONF_EVENT,
1317
CONF_HOST,
@@ -70,7 +74,27 @@
7074
DEFAULT_SCAN_INTERVAL = timedelta(seconds=30)
7175
SCAN_INTERVAL = DEFAULT_SCAN_INTERVAL
7276

73-
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
77+
EVENTS = [
78+
EVENT_DEVICE_MOVING,
79+
EVENT_COMMAND_RESULT,
80+
EVENT_DEVICE_FUEL_DROP,
81+
EVENT_GEOFENCE_ENTER,
82+
EVENT_DEVICE_OFFLINE,
83+
EVENT_DRIVER_CHANGED,
84+
EVENT_GEOFENCE_EXIT,
85+
EVENT_DEVICE_OVERSPEED,
86+
EVENT_DEVICE_ONLINE,
87+
EVENT_DEVICE_STOPPED,
88+
EVENT_MAINTENANCE,
89+
EVENT_ALARM,
90+
EVENT_TEXT_MESSAGE,
91+
EVENT_DEVICE_UNKNOWN,
92+
EVENT_IGNITION_OFF,
93+
EVENT_IGNITION_ON,
94+
EVENT_ALL_EVENTS,
95+
]
96+
97+
PLATFORM_SCHEMA = PARENT_PLATFORM_SCHEMA.extend(
7498
{
7599
vol.Required(CONF_PASSWORD): cv.string,
76100
vol.Required(CONF_USERNAME): cv.string,
@@ -87,33 +111,15 @@
87111
),
88112
vol.Optional(CONF_EVENT, default=[]): vol.All(
89113
cv.ensure_list,
90-
[
91-
vol.Any(
92-
EVENT_DEVICE_MOVING,
93-
EVENT_COMMAND_RESULT,
94-
EVENT_DEVICE_FUEL_DROP,
95-
EVENT_GEOFENCE_ENTER,
96-
EVENT_DEVICE_OFFLINE,
97-
EVENT_DRIVER_CHANGED,
98-
EVENT_GEOFENCE_EXIT,
99-
EVENT_DEVICE_OVERSPEED,
100-
EVENT_DEVICE_ONLINE,
101-
EVENT_DEVICE_STOPPED,
102-
EVENT_MAINTENANCE,
103-
EVENT_ALARM,
104-
EVENT_TEXT_MESSAGE,
105-
EVENT_DEVICE_UNKNOWN,
106-
EVENT_IGNITION_OFF,
107-
EVENT_IGNITION_ON,
108-
EVENT_ALL_EVENTS,
109-
)
110-
],
114+
[vol.In(EVENTS)],
111115
),
112116
}
113117
)
114118

115119

116-
async def async_setup_entry(hass: HomeAssistant, entry, async_add_entities):
120+
async def async_setup_entry(
121+
hass: HomeAssistant, entry: ConfigEntry, async_add_entities
122+
):
117123
"""Configure a dispatcher connection based on a config entry."""
118124

119125
@callback
@@ -197,6 +203,8 @@ def __init__(
197203
):
198204
"""Initialize."""
199205

206+
if EVENT_ALL_EVENTS in event_types:
207+
event_types = EVENTS
200208
self._event_types = {camelcase(evt): evt for evt in event_types}
201209
self._custom_attributes = custom_attributes
202210
self._scan_interval = scan_interval
@@ -318,7 +326,7 @@ async def import_events(self):
318326
"device_moox_track_id": event["deviceId"],
319327
"device_name": device_name,
320328
"type": event["type"],
321-
"serverTime": event["serverTime"],
329+
"serverTime": event.get("eventTime") or event.get("serverTime"),
322330
"attributes": event["attributes"],
323331
},
324332
)
@@ -394,8 +402,7 @@ async def async_added_to_hass(self):
394402
if self._latitude is not None or self._longitude is not None:
395403
return
396404

397-
state = await self.async_get_last_state()
398-
if state is None:
405+
if (state := await self.async_get_last_state()) is None:
399406
self._latitude = None
400407
self._longitude = None
401408
self._accuracy = None

0 commit comments

Comments
 (0)