Full ALPR Database System for Blue Iris!

What happens if you try the correct button in the viewer when you click on the image? It seems to work for me but I’ll have a look later.

Yes it checks periodically and then if there are at least 500 plates with the necessary annotation data, it will build and send a training set. I’ll post a pic of what it looks like.

That's where I made the correction. The correction was completed, but the flag remained unlit. Even when I returned to the list, the flag was still unlit. Refreshing the list view didn't change it either.
 
  • Like
Reactions: PeteJ and algertc
What happens if you try the correct button in the viewer when you click on the image? It seems to work for me but I’ll have a look later.

Yes it checks periodically and then if there are at least 500 plates with the necessary annotation data, it will build and send a training set. I’ll post a pic of what it looks like.

I'm also not seeing the flag being flipped, I just did a docker pull, made a few changes, and no change after about 30 mins.
 
  • Like
Reactions: algertc
So I did a docker-compose down. I pulled the latest and I saw the .0.18 error warning discussed.

I changed my alert to....

{ "ai_dump",&JSON, "Image":"&ALERT_JPEG", "camera":"&CAM", "timestamp":"&ALERT_TIME" }

I pointed to my Blue Iris instance.... I hit the test button and I see Web server error 500 in Blue Iris...
 
So I did a docker-compose down. I pulled the latest and I saw the .0.18 error warning discussed.

I changed my alert to....

{ "ai_dump",&JSON, "Image":"&ALERT_JPEG", "camera":"&CAM", "timestamp":"&ALERT_TIME" }

I pointed to my Blue Iris instance.... I hit the test button and I see Web server error 500 in Blue Iris...

You need ":" between "ai_dump" and &JSON , like this "ai_dump":&JSON
 
  • Like
Reactions: algertc
Just tried and my correct validate/confirm functionality works exactly as it should. Idk why it isn't for you guys. I'm gonna tweak one other thing before releasing it, so maybe it will work when I build it again. That's super odd though... Rly not sure how it's behaving differently for you.
 
Still am having issues....

I tried &JSON and I get error 500..

"&JSON" gives me error 400....

{"ai_dump":&JSON, "Image":"&ALERT_JPEG", "camera":"&CAM", "timestamp":"&ALERT_TIME" }

I see the old plates.. Do I need to to get a new SQL file?

Screenshot 2025-03-18 at 2.33.02 PM.png

Screenshot 2025-03-18 at 2.33.08 PM.png

3/18/2025, 6:12:31 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:13:34 PM [INFO] GET /api/plate-reads
3/18/2025, 6:14:18 PM [INFO] GET /api/verify-key
3/18/2025, 6:15:02 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:02 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:03 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:03 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:04 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:04 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:05 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:05 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:06 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:06 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:08 PM [INFO] GET /
3/18/2025, 6:15:08 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:08 PM [INFO] GET /api/check-update
3/18/2025, 6:15:09 PM [INFO] GET /dashboard
3/18/2025, 6:15:09 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:09 PM [INFO] GET /api/check-update
3/18/2025, 6:15:09 PM [INFO] POST /dashboard
3/18/2025, 6:15:09 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:09 PM [INFO] GET /api/check-update
3/18/2025, 6:15:09 PM [INFO] Fetching dashboard metrics
3/18/2025, 6:15:09 PM [INFO] POST /dashboard
3/18/2025, 6:15:09 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:09 PM [INFO] GET /api/check-update
3/18/2025, 6:15:09 PM [INFO] GET /live_feed?page=1&hourFrom=04&hourTo=04
3/18/2025, 6:15:09 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:09 PM [INFO] GET /api/check-update
3/18/2025, 6:15:10 PM [INFO] GET /live_feed
3/18/2025, 6:15:10 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:10 PM [INFO] GET /api/check-update
3/18/2025, 6:15:10 PM [INFO] Fetching latest plate reads
3/18/2025, 6:15:10 PM [INFO] Fetching tags
3/18/2025, 6:15:10 PM [ERROR] Error fetching plate reads: error: column pr.crop_coordinates does not exist
3/18/2025, 6:15:10 PM [INFO] POST /live_feed
3/18/2025, 6:15:10 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:10 PM [INFO] GET /api/check-update
3/18/2025, 6:15:12 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:12 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:12 PM [INFO] Database connection established
3/18/2025, 6:15:12 PM [INFO] [FileStorage] Successfully saved image
3/18/2025, 6:15:12 PM [ERROR] Error processing request: error: column "confidence" of relation "plate_reads" does not exist
3/18/2025, 6:15:13 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:13 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:13 PM [INFO] Database connection established
3/18/2025, 6:15:13 PM [INFO] [FileStorage] Successfully saved image
3/18/2025, 6:15:13 PM [ERROR] Error processing request: error: column "confidence" of relation "plate_reads" does not exist
3/18/2025, 6:15:14 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:14 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:14 PM [INFO] Database connection established
3/18/2025, 6:15:14 PM [INFO] [FileStorage] Successfully saved image
3/18/2025, 6:15:14 PM [ERROR] Error processing request: error: column "confidence" of relation "plate_reads" does not exist
3/18/2025, 6:15:15 PM [INFO] GET /live_feed
3/18/2025, 6:15:15 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:15 PM [INFO] GET /api/check-update
3/18/2025, 6:15:15 PM [INFO] Fetching latest plate reads
3/18/2025, 6:15:15 PM [INFO] Fetching tags
3/18/2025, 6:15:15 PM [ERROR] Error fetching plate reads: error: column pr.crop_coordinates does not exist
3/18/2025, 6:15:15 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:15 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:15 PM [INFO] Database connection established
3/18/2025, 6:15:15 PM [INFO] [FileStorage] Successfully saved image
3/18/2025, 6:15:15 PM [ERROR] Error processing request: error: column "confidence" of relation "plate_reads" does not exist
3/18/2025, 6:15:16 PM [INFO] POST /api/plate-reads
3/18/2025, 6:15:16 PM [INFO] Received plate read data: [object Object]
3/18/2025, 6:15:16 PM [INFO] Database connection established
3/18/2025, 6:15:16 PM [INFO] [FileStorage] Successfully saved image
3/18/2025, 6:15:16 PM [ERROR] Error processing request: error: column "confidence" of relation "plate_reads" does not exist
3/18/2025, 6:15:19 PM [INFO] GET /logs
3/18/2025, 6:15:19 PM [INFO] POST /api/verify-session
3/18/2025, 6:15:19 PM [INFO] GET /api/check-update
 
PWA/mobile app video guide:

I whipped this up pretty quickly, so it's kind of choppy. You may need to pause the video to read the text if it's too fast.


No sure what did I do differently than first time, but redid this and now it works as an app. Very nice!
However, it looks like bypass authentication via iframe/ Home Assistant doesn't work any more.
 
Just tried and my correct validate/confirm functionality works exactly as it should. Idk why it isn't for you guys. I'm gonna tweak one other thing before releasing it, so maybe it will work when I build it again. That's super odd though... Rly not sure how it's behaving differently for you.

It looks like it does not flip the bit if you have either of these enabled:

Screenshot from 2025-03-18 12-54-16.png


If you do not, then it works as expected.
 
Working great..... I have two Blue Iris instances of my LPR camera. Each with slightly different triggers. On it just a motion-- and another is a zone crossing in order to capture direction. Both are reporting as on occasion one or the other seems to miss..


Screenshot 2025-03-18 at 4.50.13 PM.png
 
  • Like
Reactions: algertc
I feel like I'm missing something simple here. I can get get some good images and they appear to get passed to the endpoint, but no plate number is recognized. Any thoughts?
LPR.20250319_221044736.jpg




log from the container:
2025-03-19 22:10:48 app-1 | camera: 'LPR',
2025-03-19 22:10:48 app-1 | ALERT_PATH: 'LPR.20250319_221044.0.5-0.jpg',
2025-03-19 22:10:48 app-1 | ALERT_CLIP: '@72111180820782',
2025-03-19 22:10:48 app-1 | timestamp: '2025-03-20T02:10:44.736Z'
2025-03-19 22:10:48 app-1 | }
2025-03-19 22:10:49 app-1 | POST /api/plate-reads
2025-03-19 22:10:49 app-1 | Received plate read data: {
2025-03-19 22:10:49 app-1 | plate_number: '',
2025-03-19 22:10:49 app-1 | Image: '/9j/4AAQSkZJRgABAQEAYABgA

Dashboard completely empty.

Thanks!
 
I feel like I'm missing something simple here. I can get get some good images and they appear to get passed to the endpoint, but no plate number is recognized. Any thoughts?
View attachment 217135



log from the container:
2025-03-19 22:10:48 app-1 | camera: 'LPR',
2025-03-19 22:10:48 app-1 | ALERT_PATH: 'LPR.20250319_221044.0.5-0.jpg',
2025-03-19 22:10:48 app-1 | ALERT_CLIP: '@72111180820782',
2025-03-19 22:10:48 app-1 | timestamp: '2025-03-20T02:10:44.736Z'
2025-03-19 22:10:48 app-1 | }
2025-03-19 22:10:49 app-1 | POST /api/plate-reads
2025-03-19 22:10:49 app-1 | Received plate read data: {
2025-03-19 22:10:49 app-1 | plate_number: '',
2025-03-19 22:10:49 app-1 | Image: '/9j/4AAQSkZJRgABAQEAYABgA

Dashboard completely empty.

Thanks!
Are you seeing the plate detected in BI? The call to the ALPR Database doesn't include a plate, so either it's not being detected by the ALPR module in BI, or you're not sending the correct string in the call from BI. Please confirm that first.
 
Last edited:
Working great..... I have two Blue Iris instances of my LPR camera. Each with slightly different triggers. On it just a motion-- and another is a zone crossing in order to capture direction. Both are reporting as on occasion one or the other seems to miss..

I feel like I'm missing something simple here. I can get get some good images and they appear to get passed to the endpoint, but no plate number is recognized. Any thoughts?
View attachment 217135



log from the container:
2025-03-19 22:10:48 app-1 | camera: 'LPR',
2025-03-19 22:10:48 app-1 | ALERT_PATH: 'LPR.20250319_221044.0.5-0.jpg',
2025-03-19 22:10:48 app-1 | ALERT_CLIP: '@72111180820782',
2025-03-19 22:10:48 app-1 | timestamp: '2025-03-20T02:10:44.736Z'
2025-03-19 22:10:48 app-1 | }
2025-03-19 22:10:49 app-1 | POST /api/plate-reads
2025-03-19 22:10:49 app-1 | Received plate read data: {
2025-03-19 22:10:49 app-1 | plate_number: '',
2025-03-19 22:10:49 app-1 | Image: '/9j/4AAQSkZJRgABAQEAYABgA

Dashboard completely empty.

Thanks!

Is this a fresh install or an update?
 
@PeteJ I think others weighed in on this with BI settings recommendations. It isn't anything to do with the app.


The new live view makes it extremely clear if you are missing any plates that drive by, which is great. I actually had this issue myself and only realized it after having that screen up, so I'm glad this was posted. It got me to change my BI settings for the make/break times. I had the break time set quite high (copied from my other cameras were it made sense), which caused Blue Iris to consolidate multiple vehicles into one alert. I now have it set to 1s make time and 6s break time (sometimes cars pass very slowly while navigating around other vehicles because my street is so narrow). This has worked much better and I am getting nearly every vehicle that passes now.
 
1.8 Released. Correct plate number fixed in the final release.

I also created a full separate site for documentation, which looks way more professional than this actually is, LOL.

There are definitely quite a lot of people using it, which I find so incredibly cool, and the goal of this separate and more thorough documentation was mainly to help new users ( I am going to create new install guide videos for both Windows and Linux soon), but I also did this to be able to put it on my resume and have it look a little bit more legitimate compared to just the GitHub repository, which is comparatively very small in relation to the number of downloads and active users.


I have a TPMS rig fully built out with double SDR (even though I would really like to explore other options, this is good for testing for now, as the output will be the exact same either way). I'm going to see if I can figure out any way to use some AI to identify patterns between the received TPMS data and the ALPR recognitions. It will likely take a little while to get it working accurately, but I am hopeful. I also used a very large box (which I will post later), to allow for space to add anything else in the future (like WIFI or BLE fingerprinting).


TPMS certainly isn't perfect, but the idea of getting PII off cars has been on my mind constantly for the past few weeks. Without a license plate, it really is hard, but TPMS is the next best thing. You can't expect to get it for every vehicle, but it's a whole lot better than nothing and definitely has the capability to incriminate. Hopefully soon we can get some more advanced RF fingerprinting deployed using the passing traffic's cell phones.

Any users that have already updated should:
From the location where your compose file, storage, etc is: docker compose down , docker pull, and docker compose up -d