From 5f3cd92b7aaeec1f4dc2d43c14ed2352f19ac625 Mon Sep 17 00:00:00 2001 From: Antonio Martinez Date: Mon, 28 Oct 2024 19:28:27 -0700 Subject: [PATCH] docs: loss prevention business logic Signed-off-by: Antonio Martinez --- .../use-cases/loss-prevention/advanced.md | 23 ++++++++++++++++++ .../loss-prevention/images/mqtt-diagram.jpg | Bin 0 -> 32879 bytes 2 files changed, 23 insertions(+) create mode 100644 docs_src/use-cases/loss-prevention/images/mqtt-diagram.jpg diff --git a/docs_src/use-cases/loss-prevention/advanced.md b/docs_src/use-cases/loss-prevention/advanced.md index 393c98d..cbf5b81 100644 --- a/docs_src/use-cases/loss-prevention/advanced.md +++ b/docs_src/use-cases/loss-prevention/advanced.md @@ -41,6 +41,29 @@ To find all supported classes by YOLOv8, you can find them in this file `src/ext CLASS_IDS="0,2" ``` +## MQTT Inference Export and ROI Detection + +This applicaiton enables monitoring object entry and exit within a defined Region of Interest (ROI), allowing real-time event tracking and external message handling. +The `yolov8s_roi.json` pipeline exports the inference data through MQTT using mosquitto broker defined in the `docker-compose.yml` file. + +To change the default MQTT URL, edit the file `src/pipelines/yolov8s_roi.sh` and update the variable `MQTT_HOST="127.0.0.1:1883"`. + +We have developed a business logic application in `src/app/loss_prevention.py` that tracks objects entering and exiting a defined ROI, generating corresponding events. + +To configure the app to connect to external MQTT broker, modify the `src/docker-compose.yml` and change the following env variables: + +| Variable | Default | Description | +|------------|----------------|------------------------------------------| +| `MQTT_URL` | `127.0.0.1` | MQTT Broker URL | +| `MQTT_PORT`| `1883` | MQTT Broker Port | +| `MQTT_TOPIC` | `event/detection` | Topic for publishing inference data | +| `ROI_NAME` | `BASKET` | The name of the ROI used to filter objects | + + +The following diagram illustrates the containers running: + +[![MQTT export](./images/mqtt-diagram.jpg)](./images/mqtt-diagram.jpg) + For enviroments variables, follow the same tutorial as the automated self checkout [HERE](../automated-self-checkout/advanced.md) diff --git a/docs_src/use-cases/loss-prevention/images/mqtt-diagram.jpg b/docs_src/use-cases/loss-prevention/images/mqtt-diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82c82242027981cab295e45fa4b6136cabbfac94 GIT binary patch literal 32879 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 E0P4-^Qvd(} literal 0 HcmV?d00001