5.6.8 - January 8, 2023

If you could PM me some of the images you are getting poor results. I am going to work on improving the accuracy. I already have a version 2.0 that is not released yet.

Mike, I figured I'd ask this here instead of in a PM in case others have the same question. Do you know what the implications are if I check the "ALPR for plates" box and also have Plate Recognizer enabled? I didn't dig into the documentation to see if things like the &PLATE macro would default to one or the other, or if there is a new macro for the CPAI plate return? Would the data from both end up in the &MEMO field?
 
Mike, I figured I'd ask this here instead of in a PM in case others have the same question. Do you know what the implications are if I check the "ALPR for plates" box and also have Plate Recognizer enabled? I didn't dig into the documentation to see if things like the &PLATE macro would default to one or the other, or if there is a new macro for the CPAI plate return? Would the data from both end up in the &MEMO field?

You are the tester now LOL. But I don't think you can do both on the same camera - I think it is either or. So you would have to clone a camera to do both.
 
  • Like
Reactions: Alan_F
Mike, I figured I'd ask this here instead of in a PM in case others have the same question. Do you know what the implications are if I check the "ALPR for plates" box and also have Plate Recognizer enabled? I didn't dig into the documentation to see if things like the &PLATE macro would default to one or the other, or if there is a new macro for the CPAI plate return? Would the data from both end up in the &MEMO field?
I just tried both CP.AI and Plate Recognizer and only CP.AI worked. BI did not send any photos to Plate Recognizer
 
Well, we have a winner for which one is better, and a big thank you for pointing me towards this easier method.

I had noticed that there were some clips in the clip list where there was a tag displayed, but the tag was not in the Exif information of the image file. I emailed Blue Iris support about this a few days ago, but they've probably been busy on the CPAI integration and haven't gotten back to me.

However while testing using MQTT to simplify the node-red flow, I saw a file come through where the Exif information was missing, but all the information was in the MQTT message. So it appears that by using MQTT I avoid whatever issue was causing me to sometimes not be able to get the tag.

So using this Blue Iris alert: { "plate":"&PLATE", "AlertImgPath":"&ALERT_PATH", "Alert_AI":"&MEMO", "Date":"%Y-%m-%d %H:%M:%S","Camera":"&CAM" }

Which produces this: { "plate":"FH6131", "AlertImgPath":"Left_LPR.20230124_205010.0.3-1.jpg", "Alert_AI":"NightPlate:89%", "Date":"2023-01-24 20:50:10","Camera":"Left_LPR" }

And a much simpler Node-Red flow:
The flow is now:
Code:
                                                              -> SQLstring-format node to set up the query -> MySQL node to insert into database
MQTT In which feeds two paths ->
                                                              -> function node to set source folder based on camera name -> copy file node to copy the file

[{"id":"4e4757364b6290fb","type":"group","z":"9796107b389bdb9e","style":{"stroke":"#999999","stroke-opacity":"1","fill":"none","fill-opacity":"1","label":true,"label-position":"nw","color":"#a4a4a4"},"nodes":["c76f238773caf170","87d44d61fefcfd9a","902c1a6918c0db03","5a78a14f6887f171","1ca1a7c8197a712f","4b7b582067b02d1b","2edbc803fde92f3e"],"x":194,"y":1379,"w":572,"h":242},{"id":"c76f238773caf170","type":"mqtt in","z":"9796107b389bdb9e","g":"4e4757364b6290fb","name":"","topic":"BlueIris/LPRdata","qos":"2","datatype":"auto-detect","broker":"a44c57ac297015e5","nl":false,"rap":true,"rh":0,"inputs":0,"x":300,"y":1480,"wires":[["87d44d61fefcfd9a","902c1a6918c0db03","9e119b47c49a583b"]]},{"id":"87d44d61fefcfd9a","type":"debug","z":"9796107b389bdb9e","g":"4e4757364b6290fb","name":"debug 53","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":320,"y":1540,"wires":[]},{"id":"902c1a6918c0db03","type":"sqlstring-format","z":"9796107b389bdb9e","g":"4e4757364b6290fb","name":"","query":"REPLACE INTO lpr_images (tag,file,image_description,filedatetime,camera) VALUES \n(?,?,?,?,?) ","vars":"payload.plate,payload.AlertImgPath,payload.Alert_AI,payload.Date,payload.Camera","outField":"topic","x":490,"y":1460,"wires":[["5a78a14f6887f171"]]},{"id":"5a78a14f6887f171","type":"mysql","z":"9796107b389bdb9e","g":"4e4757364b6290fb","mydb":"17c59737.09ace9","name":"LPR","x":630,"y":1460,"wires":[["1ca1a7c8197a712f"]]},{"id":"1ca1a7c8197a712f","type":"debug","z":"9796107b389bdb9e","g":"4e4757364b6290fb","name":"debug 54","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":640,"y":1420,"wires":[]},{"id":"4b7b582067b02d1b","type":"debug","z":"9796107b389bdb9e","g":"4e4757364b6290fb","name":"debug 55","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":660,"y":1580,"wires":[]},{"id":"2edbc803fde92f3e","type":"comment","z":"9796107b389bdb9e","g":"4e4757364b6290fb","name":"BlueIris/LPRdata to database","info":"","x":340,"y":1420,"wires":[]},{"id":"a44c57ac297015e5","type":"mqtt-broker","name":"Pi MQTT","broker":"192.168.0.12","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"5","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"17c59737.09ace9","type":"MySQLdatabase","name":"","host":"192.168.0.12","port":"3306","db":"LPR","tz":"America/New_York","charset":"UTF8"}]

I also was able to remove the triggers from the database, since I can generate the date/time in the MQTT message instead of trying to parse it out of the file name. While I was at it, I added a column for the camera name to the database.

Sorry to dig up this old post but I actually think there is a good case for the other method of passing the image via the alert. In my case I have built out my dashboard on a web server, completely decoupled from Blue Iris and CPAI, so my dashboard doesn't have any access to the folder with the alert. I guess different ways work for different scenarios, but I wouldn't say there is a "winner" as such.
 
Sorry to dig up this old post but I actually think there is a good case for the other method of passing the image via the alert. In my case I have built out my dashboard on a web server, completely decoupled from Blue Iris and CPAI, so my dashboard doesn't have any access to the folder with the alert. I guess different ways work for different scenarios, but I wouldn't say there is a "winner" as such.

I meant that using MQTT to get the tag was a win over trying to extract the tag from the alert image. My old method also relied on being able to read the file locally, but it was pulling the tag out of the jpeg EXIF data.

Do you want to share your Node Red flow and the structure of your MQTT alert in this thread? Node Red Dashboard for Blue Iris ALPR

It's likely others may set things up the same way you did, and having both methods documented there would let people see both options and use whichever works best for them.
 
I meant that using MQTT to get the tag was a win over trying to extract the tag from the alert image. My old method also relied on being able to read the file locally, but it was pulling the tag out of the jpeg EXIF data.

Do you want to share your Node Red flow and the structure of your MQTT alert in this thread? Node Red Dashboard for Blue Iris ALPR

It's likely others may set things up the same way you did, and having both methods documented there would let people see both options and use whichever works best for them.

Ah, that makes sense. I don't have a node-red flow as I am pushing to a PHP API rather than using node-red.