Beispiel #1
0
    def run(self):
        while not self.stop_event.is_set():
            try:
                event_type, camera, event_data = self.event_queue.get(
                    timeout=10)
            except queue.Empty:
                if not self.stop_event.is_set():
                    self.refresh_cache()
                continue

            logger.debug(
                f"Event received: {event_type} {camera} {event_data['id']}")
            self.refresh_cache()

            if event_type == "start":
                self.events_in_process[event_data["id"]] = event_data

            if event_type == "end":
                clips_config = self.config.cameras[camera].clips

                clip_created = False
                if self.should_create_clip(camera, event_data):
                    if clips_config.enabled and (clips_config.objects is None
                                                 or event_data["label"]
                                                 in clips_config.objects):
                        clip_created = self.create_clip(
                            camera,
                            event_data,
                            clips_config.pre_capture,
                            clips_config.post_capture,
                        )

                if clip_created or event_data["has_snapshot"]:
                    Event.create(
                        id=event_data["id"],
                        label=event_data["label"],
                        camera=camera,
                        start_time=event_data["start_time"],
                        end_time=event_data["end_time"],
                        top_score=event_data["top_score"],
                        false_positive=event_data["false_positive"],
                        zones=list(event_data["entered_zones"]),
                        thumbnail=event_data["thumbnail"],
                        has_clip=clip_created,
                        has_snapshot=event_data["has_snapshot"],
                    )
                del self.events_in_process[event_data["id"]]
                self.event_processed_queue.put((event_data["id"], camera))

        logger.info(f"Exiting event processor...")
Beispiel #2
0
    def run(self):
        while True:
            if self.stop_event.is_set():
                logger.info(f"Exiting event processor...")
                break

            try:
                event_type, camera, event_data = self.event_queue.get(
                    timeout=10)
            except queue.Empty:
                if not self.stop_event.is_set():
                    self.refresh_cache()
                continue

            logger.debug(
                f"Event received: {event_type} {camera} {event_data['id']}")
            self.refresh_cache()

            if event_type == 'start':
                self.events_in_process[event_data['id']] = event_data

            if event_type == 'end':
                clips_config = self.config.cameras[camera].clips

                if not event_data['false_positive']:
                    clip_created = False
                    if clips_config.enabled and (clips_config.objects is None
                                                 or event_data['label']
                                                 in clips_config.objects):
                        clip_created = self.create_clip(
                            camera, event_data, clips_config.pre_capture,
                            clips_config.post_capture)

                    Event.create(
                        id=event_data['id'],
                        label=event_data['label'],
                        camera=camera,
                        start_time=event_data['start_time'],
                        end_time=event_data['end_time'],
                        top_score=event_data['top_score'],
                        false_positive=event_data['false_positive'],
                        zones=list(event_data['entered_zones']),
                        thumbnail=event_data['thumbnail'],
                        has_clip=clip_created,
                        has_snapshot=event_data['has_snapshot'],
                    )
                del self.events_in_process[event_data['id']]
                self.event_processed_queue.put((event_data['id'], camera))
Beispiel #3
0
    def run(self):
        while not self.stop_event.is_set():
            try:
                event_type, camera, event_data = self.event_queue.get(
                    timeout=10)
            except queue.Empty:
                continue

            logger.debug(
                f"Event received: {event_type} {camera} {event_data['id']}")

            if event_type == "start":
                self.events_in_process[event_data["id"]] = event_data

            if event_type == "end":
                event_config: EventsConfig = self.config.cameras[
                    camera].record.events

                if event_data["has_clip"] or event_data["has_snapshot"]:
                    Event.create(
                        id=event_data["id"],
                        label=event_data["label"],
                        camera=camera,
                        start_time=event_data["start_time"] -
                        event_config.pre_capture,
                        end_time=event_data["end_time"] +
                        event_config.post_capture,
                        top_score=event_data["top_score"],
                        false_positive=event_data["false_positive"],
                        zones=list(event_data["entered_zones"]),
                        thumbnail=event_data["thumbnail"],
                        region=event_data["region"],
                        box=event_data["box"],
                        area=event_data["area"],
                        has_clip=event_data["has_clip"],
                        has_snapshot=event_data["has_snapshot"],
                    )

                del self.events_in_process[event_data["id"]]
                self.event_processed_queue.put((event_data["id"], camera))

        logger.info(f"Exiting event processor...")