Skip to content

Commit bb3004d

Browse files
authored
Merge pull request #3 from robmarkcole/dev
Add events
2 parents 0305ecb + a71e5a1 commit bb3004d

6 files changed

Lines changed: 33 additions & 208 deletions

File tree

custom_components/platerecognizer/image_processing.py

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""Person detection using Sighthound cloud service."""
1+
"""Vehicle detection using Plate Recognizer cloud service."""
22
import logging
33
import requests
44
import voluptuous as vol
@@ -17,12 +17,15 @@
1717

1818
_LOGGER = logging.getLogger(__name__)
1919

20-
PLATE_READER_URL = 'https://api.platerecognizer.com/v1/plate-reader/'
20+
PLATE_READER_URL = "https://api.platerecognizer.com/v1/plate-reader/"
2121

2222
EVENT_VEHICLE_DETECTED = "platerecognizer.vehicle_detected"
2323

2424
ATTR_PLATE = "plate"
2525
ATTR_CONFIDENCE = "confidence"
26+
ATTR_REGION_CODE = "region_code"
27+
ATTR_VEHICLE_TYPE = "vehicle_type"
28+
2629
CONF_API_TOKEN = "api_token"
2730

2831
DATETIME_FORMAT = "%Y-%m-%d_%H-%M-%S"
@@ -51,12 +54,10 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
5154
class PlateRecognizerEntity(ImageProcessingEntity):
5255
"""Create entity."""
5356

54-
def __init__(
55-
self, api_token, camera_entity, name
56-
):
57+
def __init__(self, api_token, camera_entity, name):
5758
"""Init."""
5859
self._headers = {
59-
'Authorization': f'Token {api_token}',
60+
"Authorization": f"Token {api_token}",
6061
}
6162
self._camera = camera_entity
6263
if name:
@@ -65,32 +66,41 @@ def __init__(
6566
camera_name = split_entity_id(camera_entity)[1]
6667
self._name = f"platerecognizer_{camera_name}"
6768
self._state = None
68-
self._plates = []
69+
self._results = {}
70+
self._vehicles = [{}]
6971
self._last_detection = None
7072

7173
def process_image(self, image):
7274
"""Process an image."""
73-
self._plates = []
75+
self._results = {}
76+
self._vehicles = [{}]
7477
try:
75-
response = requests.post(PLATE_READER_URL, files={"upload": image}, headers=self._headers).json()
76-
self._plates = [{'plate': r['plate'], 'score':r['score']} for r in response['results']]
78+
self._results = requests.post(
79+
PLATE_READER_URL, files={"upload": image}, headers=self._headers
80+
).json()["results"]
81+
self._vehicles = [
82+
{
83+
ATTR_PLATE: r["plate"],
84+
ATTR_CONFIDENCE: r["score"],
85+
ATTR_REGION_CODE: r["region"]["code"],
86+
ATTR_VEHICLE_TYPE: r["vehicle"]["type"],
87+
}
88+
for r in self._results
89+
]
7790
except Exception as exc:
7891
_LOGGER.error("platerecognizer error : %s", exc)
7992

80-
self._state = len(self._plates)
93+
self._state = len(self._vehicles)
8194
if self._state > 0:
8295
self._last_detection = dt_util.now().strftime(DATETIME_FORMAT)
96+
for vehicle in self._vehicles:
97+
self.fire_vehicle_detected_event(vehicle)
8398

84-
# def fire_vehicle_detected_event(self, vehicle):
85-
# """Send event."""
86-
# self.hass.bus.fire(
87-
# EVENT_VEHICLE_DETECTED,
88-
# {
89-
# ATTR_ENTITY_ID: self.entity_id,
90-
# ATTR_PLATE: vehicle["licenseplate"],
91-
# ATTR_VEHICLE_TYPE: vehicle["vehicleType"],
92-
# },
93-
# )
99+
def fire_vehicle_detected_event(self, vehicle):
100+
"""Send event."""
101+
vehicle_copy = vehicle.copy()
102+
vehicle_copy.update({ATTR_ENTITY_ID: self.entity_id})
103+
self.hass.bus.fire(EVENT_VEHICLE_DETECTED, vehicle_copy)
94104

95105
@property
96106
def camera_entity(self):
@@ -121,6 +131,6 @@ def unit_of_measurement(self):
121131
def device_state_attributes(self):
122132
"""Return the attributes."""
123133
attr = {}
124-
attr.update({"last_plate": self._last_detection})
125-
attr.update({"plates": self._plates})
134+
attr.update({"last_detection": self._last_detection})
135+
attr.update({"vehicles": self._vehicles})
126136
return attr

dev/api.ipynb

Lines changed: 0 additions & 184 deletions
This file was deleted.

dev/car.jpg

-159 KB
Binary file not shown.

dev/two_cars.jpg

-480 KB
Binary file not shown.

dev/usage.jpg

-80.2 KB
Binary file not shown.

requirements.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)