OpenALPR Webhook Processor for IP Cameras

oh maybe there are fields in the webhook that are missing because you're on the homeowner plan..
 
  • Like
Reactions: tech101
I'm actually on their Watchman Commercial Trial. I signed up today when I saw you posted this cool service.

Screenshot from 2021-01-02 15-33-18.png
 
  • Like
Reactions: tech101
can you try start/stopping the docker container? there should be additional logging showing up, maybe you aren't on the latest yet
 
  • Like
Reactions: tech101
I went ahead and deleted all containers and images to start fresh. Then I did a docker pull mlapaglia/openalprwebhookprocessor.

Log:
Code:
{"log":"[21:42:31 INF] Now listening on: http://[::]:80\n","stream":"stdout","time":"2021-01-02T21:42:31.917982698Z"}                          
{"log":"[21:42:31 INF] Application started. Press Ctrl+C to shut down.\n","stream":"stdout","time":"2021-01-02T21:42:31.918835576Z"}          
{"log":"[21:42:31 INF] Hosting environment: Production\n","stream":"stdout","time":"2021-01-02T21:42:31.918989019Z"}                          
{"log":"[21:42:31 INF] Content root path: /app\n","stream":"stdout","time":"2021-01-02T21:42:31.919053445Z"}                                  
{"log":"[21:43:02 INF] Request starting HTTP/1.1 POST http://ip:3859/webhook application/json 27515\n","stream":"stdout","time":"2021-01-02T21:43:02.974748846Z"}
{"log":"[21:43:02 WRN] Failed to determine the https port for redirect.\n","stream":"stdout","time":"2021-01-02T21:43:02.987217476Z"}
{"log":"[21:43:03 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-02T21:43:03.071270282Z"}
{"log":"[21:43:03 INF] Route matched with {action = \"Post\", controller = \"WebhookProcessor\"}. Executing controller action with signature Void Post(OpenAlprWebhookProcessor.WebhookProcessor.OpenAlprWebhook) on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor (OpenAlprWebhookProcessor).\n","stream":"stdout","time":"2021-01-02T21:43:03.206164558Z"}
{"log":"[21:43:03 INF] request received from: ::ffff:52.201.255.102\n","stream":"stdout","time":"2021-01-02T21:43:03.576465874Z"}
{"log":"[21:43:03 INF] adding job for plate: PICB74\n","stream":"stdout","time":"2021-01-02T21:43:03.579331119Z"}
{"log":"[21:43:03 INF] processing job for plate: PICB74\n","stream":"stdout","time":"2021-01-02T21:43:03.579762441Z"}
{"log":"[21:43:03 ERR] Value cannot be null. (Parameter 'source')\n","stream":"stdout","time":"2021-01-02T21:43:03.581058812Z"}
{"log":"[21:43:03 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor) in 375.7604ms\n","stream":"stdout","time":"2021-01-02T21:43:03.605597649Z"}
{"log":"[21:43:03 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-02T21:43:03.609934828Z"}
{"log":"[21:43:03 INF] HTTP POST /webhook responded 200 in 622.8089 ms\n","stream":"stdout","time":"2021-01-02T21:43:03.618444444Z"}
{"log":"[21:43:03 INF] Request finished in 663.7067ms 200 \n","stream":"stdout","time":"2021-01-02T21:43:03.624013241Z"}
 
Bash:
#!/bin/bash

docker run -d \
--name=openalprwebhookprocessor \
--net=bridge \
-v /home/joe/webhook_alpr/app/appsettings.json:/appsettings.json \
-p 3859:80 \
mlapaglia/openalprwebhookprocessor

My appsettings.json full path is indeed /home/joe/webhook_alpr/app/appsettings.json just as its listed in that file.

the docker volume needs to be -v /home/joe/webhook_alpr/app/appsettings.json:/app/appsettings.json \

I've updated the documentation, sorry!
 
Success! Of course!! Thank you for catching that.
LPR Cam 2021-01-02 04.08.48.250 PM.jpg

Now the only problem really that sending the image round trip like this is it takes a bit more time. The car has moved out of the scene by the time its added, but at least it works!

I could overlay this onto my Overview cam instead of this one (or in addition). At least the overview cam may still have the car in the frame before it moves out.
 
  • Love
Reactions: tech101
I believe this is because the watchman is grouping the plate from each capture together. once the license plate is no longer visible then it is sent to the web server.
 
  • Like
Reactions: biggen
Nice biggen, Are you running this on the HFW5231E-Z12E ? I have not yet figured this out how to make it work.. Hopefully if you are on the same model its easy to get this setup now that you have done this..

Thank you mlapaglia for this wonderful addition for the cams. This is absolutely nice !!
 
Nice biggen, Are you running this on the HFW5231E-Z12E ? I have not yet figured this out how to make it work.. Hopefully if you are on the same model its easy to get this setup now that you have done this..

Thank you mlapaglia for this wonderful addition for the cams. This is absolutely nice !!

you can download the regular windows version from the releases page if you don't want to use docker from the github releases page
 
  • Love
Reactions: tech101
This is silly fun. Having this pop now automatically and its recorded!! Man this is awesome @mlapaglia!! Wonderful work!

Nice biggen, Are you running this on the HFW5231E-Z12E ? I have not yet figured this out how to make it work.. Hopefully if you are on the same model its easy to get this setup now that you have done this..

I'm actually using the 5442-Z4E. I'm thinking of selling and going with the older Z12 you mentioned. I'd like a tighter zoom to be honest and I'm maxed out with the Z4E. I'd not go the Docker route. Use the Windows version he posted.
 
  • Love
Reactions: tech101
I think you may have a typo in the readme. This is what is listed:

Code:
docker run -d \
--name=openalprwebhookprocessor \
--net=bridge \
-v /app/appsettings.json:/app/appsettings.json\
-p 3859:80 \
mlapaglia/openalprwebhookprocessor

But I think you need a space on the line -v /app/appsettings.json:/app/appsettings.json\ between the last .json and the backslash \. So like this: -v /app/appsettings.json:/app/appsettings.json \

That line was what gave me the problems. I was also missing the second /app/ directory which I see you have. Glad I was able to test this for you. Very cool.
 
  • Like
Reactions: tech101
Success! Of course!! Thank you for catching that.

Now the only problem really that sending the image round trip like this is it takes a bit more time. The car has moved out of the scene by the time its added, but at least it works!

I could overlay this onto my Overview cam instead of this one (or in addition). At least the overview cam may still have the car in the frame before it moves out.
Or possibly you can have it say .. Last car passed .. Unless you really want the car to be in the same frame..
 
Nice, is the windows version like exe I run ? Or how do I go about either one ?

open up a command prompt, change to that directory, then dotnet ./OpenAlprWebhookProcessor.dll

I'm trying to figure out how to generate a .exe instead of a .dll
 
  • Love
Reactions: tech101
This is AWESOME!!!!!!!!!!!!!!!!!!


oh maybe there are fields in the webhook that are missing because you're on the homeowner plan..

All the data is there in the homeowner plan

If you go to 127.0.0.1:8355 and click meta you can see it.


How do you check what is going out in the webhook? Wireshark?
 
  • Like
Reactions: tech101
This is AWESOME!!!!!!!!!!!!!!!!!!




All the data is there in the homeowner plan

If you go to 127.0.0.1:8355 and click meta you can see it.

you don't get year/make/model with the homeowner one
1609628631432.png

do note, if you are using the "trial", you are getting every single feature enabled.
 
Now that we know the data is there and is just hidden do we still need to do port forwarding.. or anything or can we actually some how make it work.. Without port forwarding .. with the watchman plan ?
 
unless you are using the "business" plan, the watchman agent can't talk to anything besides the openalpr cloud server.
 
  • Like
Reactions: tech101