# License Plate Recognition Camera (LPR) Node

**URL:** https://discourse.nodered.org/t/license-plate-recognition-camera-lpr-node/100743
**Category:** Share Your Nodes
**Tags:** cctv, lpr
**Created:** [10 April 2026 19:43 UTC](https://discourse.nodered.org/t/license-plate-recognition-camera-lpr-node/100743 "2026-04-10T19:43:04Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![cctvcamerapros](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cctvcamerapros/32/106615_2.png) [@cctvcamerapros](https://discourse.nodered.org/u/cctvcamerapros)
#### Post date: [10 April 2026 19:43 UTC](https://discourse.nodered.org/t/license-plate-recognition-camera-lpr-node/100743/1 "2026-04-10T19:43:04Z")

</div>

Hi everyone,

I built a Node-RED node for Viewtron LPR cameras. This is the first Node-RED node that I have published, so if I messed anything up or if the veterans here have any recommendations, please let me know.

And for full disclosure, my name is Mike Haldas. I am the co-founder of CCTV Camera Pros and founder of the Viewtron brand. We are a small US business with 20 years experience. I am our sole software engineer and product designer.

The Viewtron AI Camera node receives license plate reads directly from the camera — plate number, which database group the plate belongs to (for access control), and optionally the cropped license plate snapshot image and a full scene overview snapshot. The camera does all the plate recognition on-device and pushes events over HTTP POST. There is no cloud dependency or no middleware required. The IP camera does the AI inference and talks straight to Node-RED.

Install from palette manager (search `node-red-contrib-viewtron`) or:

```auto
cd ~/.node-red
npm install node-red-contrib-viewtron

```

Here's what it looks like receiving live plate reads in Node-RED:

 ![Viewtron AI Camera node in Node-RED with live LPR events](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/9/6/96970d8e6cb143c06d83f2d92d0267f0a499eed9.jpeg)

**What you get for each plate read:**

- `plate_number` — the plate text
- `plate_group` — which group the plate is in on the camera's database (allow list, block list, or custom group names on the NVR). Empty if the plate isn't in the database.
- Plate crop image + full scene overview (as base64 or Buffer)
- Camera IP, timestamp

The camera has its own on-device plate database. You add plates to groups — allow list, block list, temporary, or on the NVR you can create custom groups like "Residents" or "Delivery". When a plate is read, the camera tells you which group it belongs to. Your flow just acts on it.

Here's a simple dashboard showing the plate images coming through:

 ![LPR dashboard in Node-RED](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/5/155ac6f107d05b2ba1258a408c1a925af0c82480.jpeg)

**Works with both Viewtron IP cameras (direct) and IP cameras connected to Viewtron NVRs (forwarded).** The NVR also sends vehicle attributes — brand, color, type, model. Version detection is automatic.

**Applications it can be used for:**

- Gate access — different groups get different treatment (residents open gate, delivery opens service entrance, unknown triggers alert)
- Loading dock — log which trucks show up and when
- Parking — track entry/exit by plate
- Car Wash Automation

The node also has outputs for person detection, vehicle detection, face recognition, and people / vehicle counting. Those are built in and parse correctly, however testing and documentation is not 100% done. LPR is done and working now.

**Links:**

- [Full setup docs](https://videos.cctvcamerapros.com/developer/docs/integrations/node-red/)
- [Compatible LPR cameras](https://www.cctvcamerapros.com/License-Plate-Recognition-Systems-s/1518.htm)

Happy to answer any questions. If anyone else is working with security camera events or license plate reader cameras in Node-RED, I'd be curious to learn about what you're building.

Thank you!

---

<div class="post-metadata">

### Author: ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)
#### Post date: [10 April 2026 19:47 UTC](https://discourse.nodered.org/t/license-plate-recognition-camera-lpr-node/100743/2 "2026-04-10T19:47:55Z")

</div>

Welcome to the forums @cctvcamerapros  
And thank you for contributing to the project.

I moved your post to **Share Your Nodes** : to ensure proper reach.

---

<div class="post-metadata">

### Author: ![cctvcamerapros](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cctvcamerapros/32/106615_2.png) [@cctvcamerapros](https://discourse.nodered.org/u/cctvcamerapros)
#### Post date: [10 April 2026 19:49 UTC](https://discourse.nodered.org/t/license-plate-recognition-camera-lpr-node/100743/3 "2026-04-10T19:49:06Z")

</div>

Thank you sir! Thats where I meant to post it.

---

<div class="post-metadata">

### Author: ![marcus-j-davies](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/marcus-j-davies/32/103435_2.png) [@marcus-j-davies](https://discourse.nodered.org/u/marcus-j-davies)
#### Post date: [10 April 2026 20:22 UTC](https://discourse.nodered.org/t/license-plate-recognition-camera-lpr-node/100743/4 "2026-04-10T20:22:21Z")

</div>

> [@cctvcamerapros](#):
>
> if I messed anything up or if the veterans here have any recommendations, please let me know.

Not so much messed up, but something to be aware of...

Having had a quick peak:  
This Node acts as the HTTP server socket.

Which is fine, but the moment a user wants multiple instances of this Node, each instance needs to have a unique port, or they will be limited to running one instance (or have to configure different cameras to point to different Nodes)

What will be a "better" approach IMO

- Use a Config Node to run the HTTP server
- And have the user deploy "listeners"

meaning many instance of the node can be used - all sharing the same port  
And with this approach - give the user the ability to configure each "listener" in certain ways.

- some type of filtered events that each deployed node want to act on (pass a message though)
- Have them output only certain cameras
- etc

Just my 2c 😃

---

<div class="post-metadata">

### Author: ![cctvcamerapros](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/cctvcamerapros/32/106615_2.png) [@cctvcamerapros](https://discourse.nodered.org/u/cctvcamerapros)
#### Post date: [10 April 2026 20:43 UTC](https://discourse.nodered.org/t/license-plate-recognition-camera-lpr-node/100743/5 "2026-04-10T20:43:48Z")

</div>

This is a great idea! I am going to work on that approach for the next version. Thank you for taking a look!
