# \[ANNOUNCE\] node-red-contrib-plate-recognizer

**URL:** <https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122>\
**Category:** Share Your Nodes\
**Created:** [23 February 2020 09:13 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122 "2020-02-23T09:13:11Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [23 February 2020 09:13 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/1 "2020-02-23T09:13:11Z")

</div>

Hi folks,

Last week there was a request for a new node:

> [@Creating a node for License Plate Recognition](https://discourse.nodered.org/t/creating-a-node-for-license-plate-recognition/21946):
>
> I am using the following service: [http://platerecognizer.com](http://platerecognizer.com) And while I successfully created a flow that will use the curl in the exec node, and then the JSON node to read the plates from the image I am just not satisfied with how it all looks together. And would love to create a node. But from where should I start, the only setting the node should have is an API field and a name field, and the only input should be the image itself, and the output is a simple JSON, and all of the output conte…

Had some chit chat with @lizzardguki behind the scenes meanwhile, and a beta version is now available on Github:

> **[GitHub - bartbutenaers/node-red-contrib-plate-recognizer: A Node-RED node for license plate recognizing via...](https://github.com/bartbutenaers/node-red-contrib-plate-recognizer)**
>
> A Node-RED node for license plate recognizing via platerecognizer.com

You can install it directly from my Github account like this:

```auto
npm install bartbutenaers/node-red-contrib-plate-recognizer

```

It is a bit similar to the [node-red-contrib-openalpr-cloud](https://github.com/bartbutenaers/node-red-contrib-openalpr-cloud) that I developed a couple of years ago. But the openalpr [github](https://github.com/openalpr/openalpr) repository seems to be abandoned for already quite some time.

Some good to knows:

- You can very easily get started: **sign up** at their homepage, and paste your token into my config screen. That is all ...
- This new node uses **deep learning** behind the scenes. That you can 'learn' a piece of software to recognize something, really keeps fascinating me...
- They offer a **free license up to 2500 images per month** , which is quite well for hobbyist IOT users.
- The service can also be **installed locally** (via their SDK) on a number of platforms, like e.g. Raspberry.
- They offer a **Docker container** , so you should be able to run it locally without having installation headache...

I have added a demo on my readme page, which should get you up and running very easily:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/a/0a7adeeb9d3adca111c5e3b682e53fd9754e88ba.jpeg)

As always, all _'constuctive'_ feedback is more than welcome!

Have fun with it!  
Bart

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [23 February 2020 09:14 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/2 "2020-02-23T09:14:27Z")

</div>

There is something I'm not really sure about.  
You can now filter specific regions, by entering an array of region codes:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/0/7/079504ba5e387bf9830bb359120717c9192ae580.png)

But not sure how it works.  
In the [documentation](http://docs.platerecognizer.com/#read-number-plates-from-an-image) I see this:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/f/1/f1a16c53067ef39459cb6a427d62a895df233584.png)

I did a test last night with a german plate ("de"). Then I entered an array for only belgian and french plates (["be", "fr"]), but it still recognized the german plate. Thought it would only report belgian and french plates?

If anybody knows how I should interpret the documentation, would be nice to let me know!

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [23 February 2020 10:42 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/3 "2020-02-23T10:42:38Z")

</div>

BTW beside license plate recognition, they also offer an API to query your statistics. E.g. how many recognitions you still have left this month in your free account, and so on ...

Can imagine that it would be useful to get this information, e.g. to show an alert on your mobile file when you are running out of recognitions.

But should I create a separate node in my repository, or add it to my existing node (e.g. when some topic arrives) ... Any suggestions?

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [23 February 2020 21:05 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/4 "2020-02-23T21:05:09Z")

</div>

> [@BartButenaers](#):
>
> But should I create a separate node in my repository,

@lizzardguki,  
I have added a second node to the repository:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/a/8/a874f1dbbb25d7b86d4b51f7066beae26bf4fe44.png)

Which returns the maximum number of recognitions, and the current number of statistics of the current month:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/e/1e1d944932742dec43acf8db3669c117eba6db95.png)

For me this node is ready for NPM ...

---

<div class="post-metadata">

**Author:** ![lizzardguki](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/lizzardguki/32/103637_2.png) [@lizzardguki](https://discourse.nodered.org/u/lizzardguki)\
**Post date:** [23 February 2020 21:55 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/5 "2020-02-23T21:55:07Z")

</div>

I want to congratulate you on a job well done, and for full usage for the nodes.  
I also want to thank you for helping out on this project, and I am sure that this will be the project I will refer to when I am stuck on a coding.  
And I promise to give to the community my full potential.

Once again thank you for your cooperation and have a nice day...

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [23 February 2020 22:14 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/6 "2020-02-23T22:14:32Z")

</div>

@lizzardguki,  
You are welcome!  
Version **1.0.0** is now available in the palette:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/d/9/d95bd64684904acb98e7b25a46ec32f25f661e48.png)

After 🍾 🍾 🍾 , now back to my original todo list ...

---

<div class="post-metadata">

**Author:** ![Paul-Reed](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/paul-reed/32/66906_2.png) [@Paul-Reed](https://discourse.nodered.org/u/Paul-Reed)\
**Post date:** [23 February 2020 23:23 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/7 "2020-02-23T23:23:37Z")

</div>

> [@BartButenaers](#):
>
> But the openalpr [github](https://github.com/openalpr/openalpr) repository seems to be abandoned for already quite some time

Do you think it would be worthwhile to add a message to the [node-red-contrib-openalpr-cloud](https://github.com/bartbutenaers/node-red-contrib-openalpr-cloud) readme, advising users to install this node instead?  
I haven't as yet tried the new node, but was very impressed how effective [platerecognizer.com](http://platerecognizer.com) was in recognising poor quality images.

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [24 February 2020 06:09 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/8 "2020-02-24T06:09:59Z")

</div>

> [@Paul-Reed](#):
>
> impressed how effective [platerecognizer.com](http://platerecognizer.com) was in recognising poor quality images

Yes I am also impressed about it. And yes I could also add a link to the readme page. This also reminds me that I need to add the keyword "alpr" to my package.json file, to guide users towards my new node. Now off to work...

---

<div class="post-metadata">

**Author:** ![lizzardguki](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/lizzardguki/32/103637_2.png) [@lizzardguki](https://discourse.nodered.org/u/lizzardguki)\
**Post date:** [26 February 2020 00:27 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/9 "2020-02-26T00:27:52Z")

</div>

I added the two remaining functions from the docs page (send timestamp and cameraID), I forked your repository and made changes, also made some changes to the pieces of information, when you are available please check them out, would love to push them also to npm 🤗

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [27 February 2020 21:39 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/10 "2020-02-27T21:39:35Z")

</div>

> [@lizzardguki](#):
>
> I added the two remaining functions from the docs page (send timestamp and cameraID)

Thanks @lizzardguki !

A new version _ **1.0.1** _ is available in the palette, which contains both new fields:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/f/9/f9e64e47eec865cadf760e4bffd7aa81e12a8561.png)

And the 3 _ **example flows** _ (from the readme file) are now available via the Node-RED _import_ menu:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/e/c/ec089db6e325b68bf0041503b1c19ff977131cbc.png)

---

<div class="post-metadata">

**Author:** ![lizzardguki](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/lizzardguki/32/103637_2.png) [@lizzardguki](https://discourse.nodered.org/u/lizzardguki)\
**Post date:** [27 February 2020 21:42 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/11 "2020-02-27T21:42:34Z")

</div>

😍 😍  
Thanks, Bart for your cooperation, I am going to run off starting another project, and will try to not ask for your help a lot 😃

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [27 February 2020 21:43 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/12 "2020-02-27T21:43:39Z")

</div>

> [@lizzardguki](#):
>
> I am going to run off starting another project

Oh no ... 🤣 😂

---

<div class="post-metadata">

**Author:** ![lizzardguki](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/lizzardguki/32/103637_2.png) [@lizzardguki](https://discourse.nodered.org/u/lizzardguki)\
**Post date:** [27 February 2020 21:44 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/13 "2020-02-27T21:44:52Z")

</div>

🤐 🤐 🤣

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [27 February 2020 23:21 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/14 "2020-02-27T23:21:44Z")

</div>

If you want to send timestamp why not just send it all the time and users can always ignore it when they receive it ? (Why add clutter to the UI 😉

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [28 February 2020 11:02 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/15 "2020-02-28T11:02:13Z")

</div>

Yes that is true ... Indeed I '_think_' both fields have no impact on the recognition in the service.  
But now at least the config screen looks a bit impressive 😉

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [28 February 2020 12:50 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/16 "2020-02-28T12:50:00Z")

</div>

If by impressive you mean I now have to scroll the config panel when using a smaller browser window then yes...

---

<div class="post-metadata">

**Author:** ![lizzardguki](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/lizzardguki/32/103637_2.png) [@lizzardguki](https://discourse.nodered.org/u/lizzardguki)\
**Post date:** [29 February 2020 11:05 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/17 "2020-02-29T11:05:56Z")

</div>

Well honestly, that maybe my fault, because I wanted to have all of the parameters like in the [documentation](http://docs.platerecognizer.com/#authentication).

---

<div class="post-metadata">

**Author:** ![Paul-Reed](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/paul-reed/32/66906_2.png) [@Paul-Reed](https://discourse.nodered.org/u/Paul-Reed)\
**Post date:** [29 February 2020 11:34 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/18 "2020-02-29T11:34:35Z")

</div>

> [@lizzardguki](#):
>
> because I wanted to have all of the parameters like in the [documentation](http://docs.platerecognizer.com/#authentication)

I think what Dave was saying was that you could have the timestamp feed without having a selectable option in config.  
It would be there all the time, but if you didn't want to use it, then disregard it.  
Having as a selectable option just adds unnecessary clutter to the node config, and really serves no practical purpose.

But hey, it's yours & Bart's node, so it's your preference that matters.

---

<div class="post-metadata">

**Author:** ![BartButenaers](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bartbutenaers/32/10476_2.png) [@BartButenaers](https://discourse.nodered.org/u/BartButenaers)\
**Post date:** [1 March 2020 08:08 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/19 "2020-03-01T08:08:01Z")

</div>

> [@dceejay](#):
>
> If you want to send timestamp why not just send it all the time and users can always ignore it when they receive it ?

Good point, so @lizzardguki has implemented a PR to solve this. Now we always send the timestamp in **version 1.0.2** :

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/3/3/33438ca735faa8595a2fa1172b1292603af919b4.png)

> [@dceejay](#):
>
> If by impressive you mean I now have to scroll the config panel when using a smaller browser window then yes...

The checkbox removal has not really reduced the size of the config screen very much, so this change hasn't enabled me to buy a smaller smartphone and still fit the config screen on it 😉

This new 1.0.2. version also has _ **improved error handling** _. I had a party last night at home, so lots of cars from my international friends on my driveway. As a result my camera has sent this screenshot image to the plate recognition service:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/a/8/a834c911bd396fa3edd16e5b67b8f21bdc1bb6b6.jpeg)

But that seemed to be a bit too much for the recognition service. It responded with an _ **internal server error** _, which caused our node to crash. Now we handle the unexpected result better:

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/1/5/1517a60044fec733653c3a6977aeb0be960ab6be.png)

---

<div class="post-metadata">

**Author:** ![lizzardguki](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/lizzardguki/32/103637_2.png) [@lizzardguki](https://discourse.nodered.org/u/lizzardguki)\
**Post date:** [8 March 2020 14:18 UTC](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122/20 "2020-03-08T14:18:48Z")

</div>

Do you think we need a small changes to help all the new newbies on node-red.  
My suggestion is for msg.payload to contain only the plate string.  
If there are more plates it should list in msg.payload[0, 1,2 , etc]  
What do you guys think about this?

Not big of a edit , just a small touch up...

[Next page](https://discourse.nodered.org/t/announce-node-red-contrib-plate-recognizer/22122.md?page=2)
