Full ALPR Database System for Blue Iris!

I still have this agent branch that I have kept separate. I think adding proper semantic search with vectors of each altert image would be huge, but we need a model to do that, and depending on large paid models seems kind of conterintuitive to the whole goal of having self hosted surveilance.

The start I had for semantic search requires passing nearly every detection every time. This is obviously super inefficient. I've been keeping a close eye on Unifi's products and see a need for additional classification within detections, even if delayed after the fact.

OCR accuracy of the ALPR is honestly a separate issue and is improving hugely. What would really be a game-changer is a self-hosted image/video classification that could run in the background and add metadata to all traffic in order to support later research like Flock does.

It's a tough thing to build around because it requires users to have some more powerful localized models or to use public LLMs, but we keep getting better and better open-source models.

I'd really like to see this become a self-sufficient system, and have all functionality for traffic and faces, but the accuracy of the CV is currently a material obstacle. This app isn't meant to step in for any of that, but having more comprehensive data would enable a lot more functionality.

Currently, beyond the pretty simple CRUD functionality, I'm not sure I can really crank up the value much more than what is provided by blue iris and CPAI. I'd like to see more, and I have my own agenda for alert integrations, but I think a lot of this comes back to more trustworthy CV (to use a very academic term) - and getting more from the AI that we can then use for management and research purposes.
 
Last edited:
I'd really like to see this become a self-sufficient system, and have all functionality for traffic and faces, but the accuracy of the CV is currently a material obstacle. This app isn't meant to step in for any of that, but having more comprehensive data would enable a lot more functionality.
CV = Computer Vision?
Currently, beyond the pretty simple CRUD functionality, I'm not sure I can really crank up the value much more than what is provided by blue iris and CPAI.
CRUD = Create, Read, Update, Delete - the basic operations in a persistent database.

Is that correct?
 
  • Like
Reactions: algertc
I think Mike's new ALPR module is a big step forward, and vehicle description and speed is on the list of features to be implemented. Do you need to make some adjustments to the db schema to accommodate for the pending features?

Have you considered exposing the CRUD functionality so that something like NodeRed can interface with it? This might enable some customization that some people want that might not be worthy of adding yet, and giving the users a path to try different things.
 
I think Mike's new ALPR module is a big step forward, and vehicle description and speed is on the list of features to be implemented. Do you need to make some adjustments to the db schema to accommodate for the pending features?

To add speed, yes. Very minor though. Just adding a column.

Have you considered exposing the CRUD functionality so that something like NodeRed can interface with it? This might enable some customization that some people want that might not be worthy of adding yet, and giving the users a path to try different things.

The app is made with Nextjs "server actions", which are sort of like a remote procedure call. Basically a way to directly call functions on the backend from the frontend without having REST endpoints for everything. I can still create api handlers that can be exposed though. What did you have in mind? I could definitely do some basic informational ones like getting info by plate number or anything like that.

If you're trying to make programmatic updates to things, I think it would honestly be easier and more robust to just write to the database directly from NodeRed instead of passing through the ALPR database.
 
To add speed, yes. Very minor though. Just adding a column.



The app is made with Nextjs "server actions", which are sort of like a remote procedure call. Basically a way to directly call functions on the backend from the frontend without having REST endpoints for everything. I can still create api handlers that can be exposed though. What did you have in mind? I could definitely do some basic informational ones like getting info by plate number or anything like that.

If you're trying to make programmatic updates to things, I think it would honestly be easier and more robust to just write to the database directly from NodeRed instead of passing through the ALPR database.

I was thinking that there might be a number of features that might be suitable to implement in NodeRed, and this might allow users to experiment with approaches and share the ones that have worked for their needs, and maybe allow others to copy and use. This would allow you to focus on adding mainline features rather than boutique features that are only interesting to a few.

I feel totally uncomfortable making changes to the DB directly, I rather make an api call that I know is handled properly. Since no one else responded to this suggestion, maybe I'm alone on this one :)
 
I was thinking that there might be a number of features that might be suitable to implement in NodeRed, and this might allow users to experiment with approaches and share the ones that have worked for their needs, and maybe allow others to copy and use. This would allow you to focus on adding mainline features rather than boutique features that are only interesting to a few.

I feel totally uncomfortable making changes to the DB directly, I rather make an api call that I know is handled properly. Since no one else responded to this suggestion, maybe I'm alone on this one :)

If this is useful to u I can do it. I honestly bet I can just ask cursor to wrap a list of existing functions with API handlers and get it to write detailed documentation for them too.

If u can tell me which operations you want, I think that could be done in like 15 minutes.

I’ll make sure they have very strict validation to prevent any mishaps.
 
If this is useful to u I can do it. I honestly bet I can just ask cursor to wrap a list of existing functions with API handlers and get it to write detailed documentation for them too.

If u can tell me which operations you want, I think that could be done in like 15 minutes.

I’ll make sure they have very strict validation to prevent any mishaps.

Cool, let me think about this a bit :)
 
  • Like
Reactions: algertc
So I just did a docker pull of the database. I think I was running 0.17 before. I logged in an say the database had the last car that went up the street.

I just waited a bit, and now I don't get any updates. My blue Is showing web server 500 errors now. I looked and it doesn't look like anything changed on that end? Should I get a new API key?
 
I think it is just my DB. Not my setup.

app-1 | POST /api/plate-reads


app-1 | Received plate read data: {


app-1 | ai_dump: [ { api: 'alpr', found: [Object] } ],


app-1 | Image: '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'... 435124 more characters,


app-1 | camera: 'LPR',


app-1 | ALERT_PATH: 'LPR.20251118_124022.1500.3-3.jpg',


app-1 | ALERT_CLIP: '@177685348062986',


app-1 | timestamp: '2025-11-18T17:40:22.525Z'


app-1 | }


app-1 | GET /live_feed


app-1 | Middleware checking path: /live_feed, Session ID from cookie: ff3b2b1471082f0d4e7fafce292289f1938c89ae27838d29771a36c09b79a78d


app-1 | POST /api/verify-session


app-1 | GET /api/check-update


app-1 | Fetching latest plate reads


app-1 | Fetching tags


app-1 | POST /api/plate-reads


app-1 | Received plate read data: {


app-1 | ai_dump: [ { api: 'alpr', found: [Object] } ],


app-1 | Image: '/9j/4AAQSkZJRgABAQEAYABgAAD/4QDeRXhpZgAATU0AKgAAAAgAAwEOAAIAAAAOAAAAMgExAAIAAAAKAAAAQIdpAAQAAAABAAAASgAAAABub3RoaW5nIGZvdW5kAEJsdWUgSXJpcwAAA5ADAAIAAAAUAAAAdJKGAAcAAABMAAAAiJKRAAIAAAAENTI1AAAAAAAyMDI1OjExOjE4IDEyOjQwOjIyADEALgAxADUAMAAwAC4AMQAzADEALQAzAC4ALgAyADcANQAzAC4ANAA5ADUAMgAuADEANwA2ADMANAA4ADcANgAyADIANQAyADUAAAAAAP/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIBDgHgAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AOARilwuPUV6do2kQqsLmIGThsmvMoxmUezgV7X4dTzoY89gK5mB1dlIvkoV6YAryL4pyyXfjOGJEPlm3Cls9cV61gQQnaOlebePZLdksL+RcMzMh9hW8NEaROC0zSpdL1i2dyCsjYHFepWOsx3k/wBmDfOi9K5XSkTU5Igqt5Uf3WIrsbTT4bdw6IA3rWMtyS09mZiOtb9npSQwKHGTisGe7kjZBwAGGT6Cult7nzoVbOeKQHn/AMQtPWG5tbrpEchvavPdL5lwP9XvYKPau4+Mt1JHZaTApIEs5zXHaLGDIqgZwcCt57Io2b1GZLeI/wCrjO5V96w9T1WHTruPzgxYdlFds2nmVIyYzvQcHNef6mR/bszvjy0kxIT/AHayLNnw/GyeK0x/qpQJI8eh61qX+rQDXLtSTy9VvD0ckuoi4VgYrdC0RHp6VzMtx5+pXFyIxtkkLAN25oLL032uG6kljI2yHOcdBW3ZxFWhmJBXPOD0rDhvCTiQgQgfN7Vu6bAZ0cx8qRhfpSMzoIyODnr0rf01CqoT3Ncraq7hUOcocEkV1WmSF0dGOWjxUkm35yKuWYKB1JPSqVhcf2lqDhSRHGfvHo1UNVmO9LNDukfBIHUCugsrGHTdH3Zwx+ZmatEhGZ40x/wimoL/AA+XzXknhIFbgSAZKxkivZPEdsl54T1FC4XdAWDfQZrw/StSECROo5IIIWt/sgdBo+q3Wo3l5qIVkt1UiMHrXDDWtRiu5WWTyzLIXI25rt9HvLew0W7SX5S6MV/KuD1BxGYio+eRcg+lQWbo8Q6lPbOJGVowBuwAK0LH7BFYK8/+rT7zelc5p06kpDJtCSAhgg449a0tDJmi+yMDsY4O9etZyGdZPo9vql01zGxAKqCuM4xV2e7hsZLW2ldV81SAW9qv6HGLfTrgn+JQK5PxXqUtt4k0+GIL8sPJYZrOOoFrX9BW4hjnjdcxnKkc5o065a7gl068l3Ko+TjHarR1+0hnRZjjd0qhLbpJfNcwH5WORVWA4Z7C6j10QSRbDuPJPpXXxxr/AGJNCzqhfHzMcDitm+0ZXjtNQlaNVQN5jHjjtXP6u4vNNjWKNYlMgzjvVBEfa6gbWfdZQqGxxITmpta8RXl3pFjdwMQ6sVuAR1ORj+tUFHlIFA5q5YaYsujmGTcGL53NznFIs3dG1WaR0Ed4rYAJ3DFQa5fX+m62y+ZmOTBUkf171Tt7eG0ty5OJOhWp/EPzeF7G8zxA7K3tmqA27x7e90uBZjh5AecVkxaWlvcPGeiD7o6DPpVuwnivNNi8qZgwGGA7VjC4msdSkV8vGT0NSAui3bJqUrSffhc9f7tbNve2z2t1KqhA/DAHhsGqL2MciSXacLIOQOSKrX8U0WladbCL/j5nILE4IxSA6WKR1tZpCpJQcBTzWXfkziJWbLZ3VZkdU0W9djghgB+BrHF1s1W1hZGZnB3Ee2KkdzppGig0tmQY3ivMCo+06hOTjzJV/nXo2qSqzw2uPldCeD0rlNW0BwPOghY/3gp6n1quhMi/F/yJt39U/wDQq1bPUhLbKrZbjGVFZ3h2CWWwmt7gDDIeD2q7Y2A/sURRvtdzkt+NTYYj2Fncw/6rMbkEPn39Kst4dtLaTzyoBRTgg5qF4xGCbN2eZSAxI4xTLK3ZLiWea5diRjZ2FAD9D1TMzyBWMaNtUMMUX80ttqF55bYWRgTx6CrFhHbzyFUHzZyTmna5avJpkk6D50ISqJMO+1SCK4tjIeSvzNV+1VXkVkYEHn8a5i+0W+1K+tQq7FAII65rodF0u+tiVYKFTgYOaJFEzxvEjyOu1UPP1qxGsWr3lrKUIEIILZ4NWZdLa5s7lppSrvjLD2qjpFu1rZSs0hcKdqsq9vpWYyCaG2vL+9uFmdtkoTai/hzWlaaHbzXCOpeMgZcg/eqXR7WO2sJUtop3WU5LsPStq3Y2+nRFo8MynFAGRrN9Z2m2yhDzLIhD7B0PHWsm+t5rvTo0hj3Bjwc9ea0LDT3kusTdOpI712FpZRLCFRFA7cVYjkD4cWVVVl2hR6VeEUGn24VhkrwOKra14j+yTyJaRecqH7+7Ct9KyoteTUYv3ilCeeOQDRygac97cXTLEJTFH0wgrEvdRitNcfTbaNpDGhZpyeh9K0oclFcfwnPFcn5M0Gs3N7NlmmOSfrVFXN2LVr1rJ380K+4bcL0FadnrYGl313d229YgqhY+pyax5Xi0+0t2IIkaQBeO/cGp55TcaHqbDyxGxj2BO3NAXJrG7stVkXytNaFCfvM+c1JI1jeXy2NoXDg5IPRvb2qpo8sWmaYDjJJ9an0uLfqQvVPDHgVIje0+0K6zqN4r4WIFVU9jiq+rHy9EstOaNpJ9QLSz4qxs329vbk/vL+fzifRV55ritY127udfuLi1lxEjbIgR90Dr+tAjTv8AQo7a2jNudrqn3TVMJb+QtvJlGUbTkd6tXOryX9hAm1S5USPIP4cdhVK2dlCmYZVxkbhQBdsYLGwuzeXZysUbFRn7zdhjvWZDYwsSIonVXO45Pr0q5MTIo7gdKfa3CwxySzsoEZxt7k0AWILCGx+dgRUGsyz3UEcVpIUwctx1qpJe3MszTSOCvZQOBU1teLnc4A+lAFHybqIEo2xx1A5NU57m9zmSRj9FrZMlogMjkqw5D0otDfoj2EiyErl196AM+x1c27I0kbyKzYI6VsC9tLzdGzKjE5Ri2ce1JbaIZhmdFU1UOkra3su+FVXjZItAFORjb3E8CRLEOAZG6NV7TrEbYpLl1l8pt4I/SlubGK3Tz/N81WIUrnpS6jdNbQx4shGrDasgPDY9KBmOYyNRaZsRiRzgOetarSwNpOotD9+NV5/GueXy7nUVmdy7A4Oe3tWlbZPh3VG6bsD9aoSMsWJly2N7H7zDoaqx2CtCwjIXymLHJ+97U22uJ4F3fvNynIwOMUf2h9pTbImGLA714xiqIsiuZNQjugUOEXouK01MU0X74ukjD72ODQsloLX95dMGPGcck0qwvbXiK6uwQFs5zupjRV1ONI9Ht9N7L8zsOvWsh8bwGYKD0zWnHP5jSxsPlkOSe4ouNNYFWRfMiPR/rUyZGTgbgAa6DRNq7oWb+Es3vWTcQrbpuaM4FbnhOweeRJCm4uCmPWkxJHQavNF4f8ACZSAbb/VMAAdkHWuRWOW4HyqceuK6jVrd7/xDGrgNDbRiNB2UU+8SC3tmICjA6ZqCjCgsmW0jUtkqWH51ftdOkm8uEfKinNQ6XNHNucFjhj1HH4Guq05YwgbjJ9aCrGU+juz7CQqjvUN9bwRl1DByxzx2rU1W9jRjFbj5/8Alo4/kKrWPlyQ+a8W9WXavOMVIWMk2sjqDEnyKMZzVAB0upmZeIzjr14rptV8vSvDjz42M74TPc5rE0+2M6FXkVmI3MRmqJIDcBrRboLtPYE8isOa5NxMz4b8RXUXOk/uwyrhgQRzxTDokch3u+31JPStOYDEt4meIcYYdK6AS/ZmtuWl8gHOBgnIFRpbw2dzb7VaUOCTgdMVZt3W9nlxF5YXqM5zRzFGVbwJOS5t9rElmOeKsXCIkXzMOuRVG4ARmcyuMH5UHT8aqxG4MscckfMykqD2qLjuXjfQCUIScDvitKzu7ebzLmc/fb5D7VjSQ5DLkbj2x3qO8VrfybKPLKFBai4XZVE815MZZX3DceGXqO1T3AlM24MuXAwNtTQ2Som5kcf73epllt47bdIhVx0Gc1VwM+6by3aEfMx6EdDV+wQrljkrIfnP07VFpzGV2l8orljjeORV24dLOLfKyqW+4pP3qLk2LckUMYbI+/0rLuZYrSVUPBb07U231FJo2kmkGF7g1XdVvZpJj95+ijoKLBctR3LM37vBPrnk1IyXcrMyFeRjmshX+zTgqdygYB9a6K3aw+xqZrobm7g0WC5kgXdvLhnG49Wz1rbsb0wFXb96B3BwKyrqWyMmIpw3bdV+MWktkZEAOOBHyBmiwXLAkuesSjYx5z2qWaO1dCqTbmK9cdapwebC2DgoTyD6VbNpBZrNPGhEQ4GD0qbBc52KJ0mfIqTymMgNaNw9owaaCTcqnDEriqpmPmZ2fKDjNKwmyUfKqhq1YdsFkJHVTnuBzXPys73RVWOAccVZurqV41VSdgpOIJklw6l2EaEbzu+tVbeZLi7EizYbJUkgnGO1SNcgW+QG37duRVWxtgHCokhOeTjHPekojubbsCiqDnHeptSmSysVRZRJfTqMheNg9xVZp10uAssTveEfu+4H1FV2jZJt0zZd+SWPNVYLmlZxu9oru5ZlORnsarX8Uv3STlxxT7C+V7lrdcFVXd1qL7TNJc/Mx69KQXMy0ga3mLMOCeRXRWltbyJ9pumCIxwifxH6DvVJY1BO4c9aW6lcQo8bKzDOPVaYkxquJhtwRkHGBn8KgEAjbcxAULuNYch8pyN8g/3XIp8ds7D7SkjMskZAEjZIz3p8orl66tXnWR4EzHKyHrglafZWtxaCcMP3PG9R95z2qrCZZJFYs4ZIvLU7v1qK+hmjgjihmcE5LEsSSfU0WKuTGNlmYMp++G4HpVhIlj5WJkT0HNY8V/evMgd+gwOKvpcXh+7cKv1FUL3SS7tllmRVIWQHdtPes+WFopCjdQ2avA3Mm+W4dW2jO5BVMyC5uGYAjd2PWi5Jt6bdSpZ2oDceYSR9KmvJ4Lh5CpKuxyVJzVC3Pl2rFSvDBVBPT1NMZMyu+4/Me9VcdyvPYmR8t0q1a2jo48tykeMs2Ks2DKiPFPtdXbORwRWhHEoi8r5fJU7245/OpuKxmax8/lRHO5BliRxk9qpwOYG98VNgvcMWZnVzzk1Z+zfu87AWwBk1NwsQyTPMgQKCPvFj0AFUCnmbsupcjJUelWfLaJ35zxxiixUOzkqq7FyV/iB96q4WIbaFbd9x3bSDkYq2l0UG1VIUUW0scpbe2MDNSbUOnLMv8eQc+oouKxjPLIZG5HWnwTvGc8GoCVEp571YSMHkU7gacE0l00khB+RNvTtVKWMecDg/KNo+la9ki/Z5MHZkc+9Z1yw8zC8n0oCwzy4m+/2oIA4WqwdmNSJvzQFiCZ8MR6UQSjNLc2r7mfP3uaqxQurZzSA0p2aaH5h8owDTPLWKF3LfdbbjHWmeYxgYHtj+dSJMGUxv93PIpAVp4zDGDkYI4HcVnHk1takuxIY8ZXbk+9ZG3B5JJqhFeTrSREtIIz9w9RT5Qc0Qqd2aZmWxGdpAHWnXEQEKOPTb+VTRcDOKWYr/AGehIPJOM0AY560lOYHNIAc0wDFKBzS4NCg5qgNbTY1eUKwyOtacM0M0TKc5XjO/k1n6YwWeNh1Gf5VXeVopsYC7uflFRcpFqXrRCMkD1NN5dQfWpIUIYHHekI2riykSxTcyhEYNzXOswaR/c5roL+4/0cwrzlc/lWF5KYI8wF84wKVimLGDjKjOBite1lN5amOVcBDgH1rGVdrAnbwc8jNXbebaVCjHPbp+VMdyhqCt5jEA/KcD6VSPCZwRzjkVqam0e4joW5rMnYMBg9BigLjNwPGasxyhY1Xris/+KpwCRgUBc2oryN4gjgcrt49KpXaxNMWVNoxjrVVVmjYO7E9s5yKVpSx6nNRysks79sKHJG0EcDOaWKSNvlbqRVcyOY1AcAd896bE2XzjpWlgNDY2PkwOfTtVV03K3Yg8Gp/O2rx2qqZGduKLAPk+WMJ2xmmW3y3Cj1BFOfjjjgVVl6454Pai4FmQmOTaOfeo3ctIWbHPtTIyXwCeRT5VO4AdB0ouMlUjbVZh89LvKnFPHJzTHcTFOUfMKeEpdpFAE7lmj3KU467qrXE8uyMhsAjH1qxHImdjZAI5BHeo7rDquAAq4yB3pXAo7zSb80NwKrbjuouTYsE8UxR81AzmpFWi4F63svNZGVhu7e1WryDyxEiIDs5bIzj6U3TpY/MCSEFQMqPenapLvJVO/U0MozZvmOaj3cgVM0ZIqJo8c0gFzSgiosGgA0AS96lXrUagnFTKMVIyZgCowOgxVdtyMCM571YUZY4PTv7+lWYo25YcY55FAzJMjDvU0EwIC5571FMuXZiAnPSmRoQN36jpTEXbkJHH8sm1Cc7WOSM1jlGViHJZgSN3qO1aMxzIHLrkMVwRzioJFHmEfyqhEAQ+lXIc7ckc9KZGi84zkDPIqYMoFMCpOPyquV5q5IQWJx1qPYCM4oIKmKVR81WPLHpSrFzwKCSRDwv1qQcgjOAg3LxTY4C3Y1qW+nSSLjDIMc5/izTKM95S+0lgflq9p0qBfLJ5zmm32mNDjYCGA5J71lrKyNnpikVzG3dWUZ5Ryc9fasm4BQDP8Iwa3bOIvEpzklahv9PDK7sjY9jUlXJ/DF2qadG8mA8ZIApl/dPdaiE3ZBNZNpN9lMq8jccgVNDlpPPDkFTu69akGypds4I3tuBwi/hVJuGIqe4UKVXcWYHJJ71Ac1RFxr8qRViBv9FEfeoQpZtoxz61ZtoSZuR8q5/GgLkFpbSPcDjHz7ean1KB4W2MOV61t2EaJCZiuck7cjv61m6tMJWbnJzQFjDYU3FSFWz04pY42c4UZI7VSEMAPelp5VuoBIpvtjrTAjPWinFTmk2mgDtvDFn9v1BCwyq/Ma9p0W1FtGoAxkV5r8ObbzLVZ5E/1mMH1xmvXbaMIgPArk+JiEvphGqR93bFYesaJb6jYFJ0B2tuU46VNeTSXGqIIxlEBFc94/1q40++sYIDhXiJaulbGsR9hEluyqBgD5R+FawYAYHDds15sdWvS4dZSrDpitjQNTubnUFS8lZ0P3iR0rN6A7dDrJi54da1NJufJQJLkA8KasraQyW4xgn3qnfxBbQIpZGB6qcGoEcv8XLeK78N29yDl7WYOMe5xXMaGtuhilYHg5NdJ45DN4MuI3IMzKCAPrXF+G7CafR3lnYjYuVxW7+Es9Ki1Cymby45l346GvLNWAN/qntLiktr6fzdyysoB/hNTy2LzXn2lpCxuR84I7jpU2A3vDUg0jRhc3C9RsX8a5W6VE1GdIx8iniui8SRG38KRxZyQ4Oa5wnfeTH1wf0qRjC5Tmuz8DuJZJUYhgGriLjGcAjNaOgahLpuoLMQTk84NTIk9Dt4pIy4kfed5wfatpZ4NM05pZD83XHqa5ddchkiLquWJ6U+2hvvEd9tA8u1hGXbPL1IHV6Aq3mrvqL4YSQooBH3cGtbxBctFCUjG/zcIB6DvTLSL7NbiNFUYx0HNZekX1xqWrSfaI1AhJAHbrWkSRfGqXZ8IzC3k2FVUMP7wPavF4okjc4TjpivafiBeJBoH2bH7yZhjHYCvKZbNxYSXSDhBk4FbJ6FGlomnwvYXTzb32xHG49K4kRRXenrclMtCxRRnoCa7rw5M01heKx/5YsR+Vcn4TjE1rLA/wDFk4NZjKEsL2jKSMEqCK6jwram5kSXPA6+9ZWqWrSSIOhVdtdb4LsHCFWOAoArOpsB1bosGnLjgOwJrktY0pNV1M3UUq+Ygworqb+IvbmNTnYhJNcXpEsq20E/mfOruHOOuTxUxKOT1O48/VXXP/Hv+7Pse9bunamPJjjTrjJJrmrldupX5IY7rhugqWCbygcA/cwPY+taAewWrwatofk7cgptI981hX+lRwRhV4YH5oSOT6c1k+HtVuLZBIDlR1X1rupYYtT06O7UAtjOR69xUAcgltFE++ZQcEkVZ1W7UaN5tltyhAbI9at6lpwuIo52AWHd94evoabPbi202aIIgLIe1MZz0dyv7uWQ4c9R61sNCLzwfqVsrfvH2ugIz0Of6Vx1q01yASQeeldjpB/fRW5ONwwaoZlaHcJazqrnGRWhr83lW6y7MqD1Fc/ERNf3SOCPKkK/rXSWai5Ro35G3NBBY0ufZpwn6kkDB9zW9f6cL66tnH3oQ2OPWubij8jTmiBJ/eLj866GLVI0mzI2MelQWZOvwfZ9AMYPP2hCfzqHSoJJfErlFyoz/Kup1Cwi1CxYLjLYYE9OKx7SGaxtbi6HyuG2g0hmTL511dG9xlY5CjLntVu1BDStuzEx+UelMit2SxYno7bhVFdZsrG6ENxKVT+IEVSFY6SxjjSVZgmcdqTVJWW5YKKx7bVEvbvzLGUrb7sKMVq6jcxwXKs3JPQikMwTqs4lkVWCqvU4rShngTSkM8m1puW461nXFivnM6fxnJrP1t5Ld7MKhKKrBjnpQBqfZpNPu1urcFojj95/jXV2E8U8ckTyJIsi9BXIW00l3py2zuyc5BB61fsozBCsaXHmNnHXpQImkg0+KdZZrpX2E4SPOa0oNUs1QLHCyisS90ZoL2Ak4EuentV24gS30SSUgb1HynNMCwddsCJV3nzEONmOtWFuT5SyRqm1hxkVzNnHFNCCTk9zip7S4b7ZOoJMSYKmpaGdLpV5cTmQyqiqpwAoxmue1q4ub7VzHAziOLhipwo9Bit2CX7NGxx2zWZo9o12zzzcszFifWlYDV0e3SOJTu4xyTxUusXUlzpVxBZOSi7QxVsZz2rJ8T6odOWGwhRf3q5dwentT/CmbjR5vMbgle/TrTsB51qdzdRalb28XzQQBlwTjk46mn212dMuCoDOsjBmUtkn6VsXFjbTPNKoJJbgMc1UbS1knjmwCY12gVVxHQxzy2uizToSN3zAf0qGwKapbqgyjqMkEVaB3+EJkHEnmLg96s28Q0/T3uFjB428+9AGJ4jSWHTbZYdp3yHJJx0ojn2W0sBX5ZSCc1qWtq1xY2kcgEuCxye1WfsMLfaJZE3+XjAoGc7LZzzMixggQQsG/wBonnNdB4fXMESkc05WWO0vJPVlOP0rR0SKJbvexCogzSAq+J71NItpJQ2JgPJh/HrivP1H'... 435124 more characters,


app-1 | camera: 'LPR',


app-1 | ALERT_PATH: 'LPR.20251118_124022.1500.3-3.jpg',


app-1 | ALERT_CLIP: '@177685348062986',


app-1 | timestamp: '2025-11-18T17:40:22.525Z'


app-1 | }


app-1 | POST /api/plate-reads


app-1 | Received plate read data: {


app-1 | ai_dump: [ { api: 'alpr', found: [Object] } ],


app-1 | Image: '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'... 435124 more characters,


app-1 | camera: 'LPR',


app-1 | ALERT_PATH: 'LPR.20251118_124022.1500.3-3.jpg',


app-1 | ALERT_CLIP: '@177685348062986',


app-1 | timestamp: '2025-11-18T17:40:22.525Z'


app-1 | }
 
I blew EVERYTHING any on the docker side-- I now see the "id" null issue. Going to try the nightly.

The release version is very stable, so I am not sure the nightly is going to fix the DB issue. Did you try running the migration.sql? I think this is needed since you are coming from an old version. The update script has been rewritten and a lot of us have used it with success.
 
The release version is very stable, so I am not sure the nightly is going to fix the DB issue. Did you try running the migration.sql? I think this is needed since you are coming from an old version. The update script has been rewritten and a lot of us have used it with success.
I tried blowing everything away several times. I still get the ID issue. I tried rolling back BI too.

I removed all of the volumes-- did a "git reset --hard" and ran the init script. I tried doing the update... No issues getting the app to run. It just isn't happy with the report it is getting from BI.
I tried running the update script instead... same issue. I tried running it regular- and SUDO.

Had it running fine for months before I moved to 0.19.

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

[ERROR]Error processing request: error: null value in column "id" of relation "plate_reads" violates not-null constraint
 
I tried blowing everything away several times. I still get the ID issue. I tried rolling back BI too.
Had it running fine for months before I moved to 0.19.


Have you tried manually updating the postgres DB via it's console:

SQL:
psql -d postgres -U postgres -f /docker-entrypoint-initdb.d/schema.sql
psql -d postgres -U postgres -f /migrations/migrations.sql

Also check your BI settings found in this post:
 
Have you tried manually updating the postgres DB via it's console:

SQL:
psql -d postgres -U postgres -f /docker-entrypoint-initdb.d/schema.sql
psql -d postgres -U postgres -f /migrations/migrations.sql

Also check your BI settings found in this post:

I know that Blue Iris is detecting plates. I have the same alert posting an MQTT message and I see that in my Homeseer log. I use that information to open my garage door.



root@c18667e19adf:/# psql -d postgres -U postgres -f /docker-entrypoint-initdb.d/schema.sql


psql -d postgres -U postgres -f /migrations/migrations.sql


SET


SET


SET


SET


SET


set_config


------------





(1 row)





SET


SET


SET


SET


CREATE EXTENSION


COMMENT


CREATE EXTENSION


COMMENT


psql:/docker-entrypoint-initdb.d/schema.sql:58: ERROR: function "update_updated_at_column" already exists with same argument types


ALTER FUNCTION


SET


SET


psql:/docker-entrypoint-initdb.d/schema.sql:77: ERROR: relation "known_plates" already exists


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:93: ERROR: relation "plate_notifications" already exists


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:108: ERROR: relation "plate_notifications_id_seq" already exists


ALTER TABLE


ALTER SEQUENCE


psql:/docker-entrypoint-initdb.d/schema.sql:140: ERROR: relation "plate_reads" already exists


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:155: ERROR: relation "plate_reads_id_seq" already exists


ALTER TABLE


ALTER SEQUENCE


psql:/docker-entrypoint-initdb.d/schema.sql:175: ERROR: relation "plate_tags" already exists


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:190: ERROR: relation "plates" already exists


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:196: ERROR: relation "idx_plates_occurrence_count" already exists


psql:/docker-entrypoint-initdb.d/schema.sql:207: ERROR: relation "tags" already exists


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:216: ERROR: relation "devmgmt" already exists


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:222: ERROR: relation "devmgmt" does not exist


LINE 1: INSERT INTO devmgmt (id, update1)


^


CREATE SEQUENCE


ALTER TABLE


ALTER SEQUENCE


ALTER TABLE


ALTER TABLE


ALTER TABLE


ALTER TABLE


ALTER TABLE


ALTER TABLE


ALTER TABLE


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:314: ERROR: multiple primary keys for table "plates" are not allowed


ALTER TABLE


ALTER TABLE


CREATE INDEX


CREATE INDEX


CREATE INDEX


CREATE INDEX


CREATE INDEX


CREATE INDEX


CREATE INDEX


CREATE INDEX


ALTER TABLE


psql:/docker-entrypoint-initdb.d/schema.sql:440: ERROR: function "update_plate_occurrence_count" already exists with same argument types


ALTER FUNCTION


psql:/docker-entrypoint-initdb.d/schema.sql:444: ERROR: trigger "plate_reads_count_trigger" for relation "plate_reads" already exists


psql: error: /migrations/migrations.sql: No such file or directory
 
It looks like it is working again. I mucked with some permissions and ownership of the folders. I think the init script doesn't do the chmod 755 on the folders that the update script does.

I am not totally sure what I did to fix it- but I am not going to mess with it. I might clone up a container this weekend and see if I can reproduce it and fix it with the chmod changes.
 
  • Like
Reactions: hopalong and PeteJ
@wpiman I will check the permissions. Can you please edit the crazy long post to put the paste in a codeblock?

I still have a bunch of stuff I don't really want to deal with saving and closing on my desktop. I'll update my laptop and send the code over and see if I can submit the TvOS app now.


Edit: RIP, not enough disk space. The wait continues...
 
Last edited:
  • Like
Reactions: hopalong
It looks like it is working again. I mucked with some permissions and ownership of the folders. I think the init script doesn't do the chmod 755 on the folders that the update script does.
I forgot I did something similar as I was having a similar issue with the BI 500 error. I used the unRaid --> New Permissions tool on the appdata folder along with all the other stuff.

Screenshot_20251122_091437_Firefox.png