OpenALPR Webhook Processor for IP Cameras

unless you are using the "business" plan, the watchman agent can't talk to anything besides the openalpr cloud server.
So sounds like this will work with openalpr commerical plan and not the watch man plans ?
 
at you mean, the watchman has
Sorry about the confusion I meant the $5 a camera plan which is the watchman Home I believe.

1609629857030.png

I am running the local web-server in the agent setting.. If that is what you mean..
1609629936594.png
 
So you are paying for the Watchman but running the local agent, right?

For my trial, I'm running their agent in a Docker container. But then I have to port forward to that container from my firewall.
 
  • Like
Reactions: tech101
So you are paying for the Watchman but running the local agent, right?

For my trial, I'm running their agent in a Docker container. But then I have to port forward to that container from my firewall.

I think I am getting there.. I have already done port forwarding to port 5000 .. Now To my bi machine .. Do I need to do anything in configuration in terms of in the app ? or anything..

Also to answer your question - I have the home plan.. then I use the local web server enabled in openalpr agent setting ..

1609630971152.png
 
So when night time came so did the errors. OpenALPR is still reading plates fine. Its logging them and sending the webhooks to your container. But its missing the make/model/color stuff since its dark and can only get plates. Would that be causing the below issues?:

Code:
{"log":"[23:43:25 INF] Now listening on: http://[::]:80\n","stream":"stdout","time":"2021-01-02T23:43:25.612914065Z"}
{"log":"[23:43:25 INF] Application started. Press Ctrl+C to shut down.\n","stream":"stdout","time":"2021-01-02T23:43:25.613539569Z"}
{"log":"[23:43:25 INF] Hosting environment: Production\n","stream":"stdout","time":"2021-01-02T23:43:25.613628527Z"}
{"log":"[23:43:25 INF] Content root path: /app\n","stream":"stdout","time":"2021-01-02T23:43:25.613727693Z"}
{"log":"[23:44:23 INF] Request starting HTTP/1.1 POST ip:3859/webhook application/json 11012\n","stream":"stdout","time":"
2021-01-02T23:44:23.789579626Z"}
{"log":"[23:44:23 WRN] Failed to determine the https port for redirect.\n","stream":"stdout","time":"2021-01-02T23:44:23.80139187Z"}
{"log":"[23:44:23 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor)'\n","stream
":"stdout","time":"2021-01-02T23:44:23.878059839Z"}
{"log":"[23:44:23 INF] Route matched with {action = \"Post\", controller = \"WebhookProcessor\"}. Executing controller action with signature Void
Post(OpenAlprWebhookProcessor.WebhookProcessor.OpenAlprWebhook) on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor (OpenAl
prWebhookProcessor).\n","stream":"stdout","time":"2021-01-02T23:44:23.998129811Z"}
{"log":"[23:44:24 INF] request received from: ::ffff:52.201.255.102\n","stream":"stdout","time":"2021-01-02T23:44:24.224241977Z"}
{"log":"[23:44:24 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor) in 230.2277ms\n
","stream":"stdout","time":"2021-01-02T23:44:24.239714705Z"}
{"log":"[23:44:24 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor)'\n","stream"
:"stdout","time":"2021-01-02T23:44:24.242277518Z"}
{"log":"[23:44:24 ERR] HTTP POST /webhook responded 500 in 442.5458 ms\n","stream":"stdout","time":"2021-01-02T23:44:24.285555757Z"}
{"log":"System.NullReferenceException: Object reference not set to an instance of an object.\n","stream":"stdout","time":"2021-01-02T23:44:24.285
623767Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.Handle(OpenAlprWebhook webhook) in /src/OpenAlprWebhookProcessor/WebhookPr
ocessor/WebhookHandler.cs:line 21\n","stream":"stdout","time":"2021-01-02T23:44:24.285634209Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post(OpenAlprWebhook webhookEvent) in /src/OpenAlprWebhookProcessor/Webh
ookProcessor/WebhookProcessor.cs:line 26\n","stream":"stdout","time":"2021-01-02T23:44:24.285641837Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutor.\u003c\u003ec__DisplayClass33_0.\u003cWrapVoidMethod\u003eb__0(Object target, Ob
ject[] parameters)\n","stream":"stdout","time":"2021-01-02T23:44:24.285649179Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)\n","stream":"stdout","time":"2021-01
-02T23:44:24.285659321Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.VoidResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n","stream":"stdout","time":"2021-01-02T23:44:24.285666542Z"}                     
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()\n","stream":"stdout","time":"2021-01-02T23:44:24.285674554Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.285682522Z"}                                                           
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()\n","stream":"stdout","time":"2021-01-02T23:44:24.285690083Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-02T23:44:24.285696975Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n","stream":"stdout","time":"2021-01-02T23:44:24.285703166Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.285712108Z"}                                                           
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeInnerFilterAsync\u003eg__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.285719515Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeFilterPipelineAsync\u003eg__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.285727031Z"}   
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeAsync\u003eg__Logged|17_1(ResourceInvoker invoker)\n","stream":"stdout","time":"2021-01-02T23:44:24.285736454Z"}
{"log":"   at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003cInvoke\u003eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n","stream":"stdout","time":"2021-01-02T23:44:24.285744902Z"}                                                                     
{"log":"   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n","stream":"stdout","time":"2021-01-02T23:44:24.285751976Z"}
{"log":"   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-02T23:44:24.285758846Z"}
{"log":"[23:44:24 ERR] Connection id \"0HM5FF1AMO6TV\", Request id \"0HM5FF1AMO6TV:00000001\": An unhandled exception was thrown by the application.\n","stream":"stdout","time":"2021-01-02T23:44:24.307905573Z"}
{"log":"System.NullReferenceException: Obj{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.Handle(OpenAlprWebhook webhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 21\n","stream":"stdout","time":"2021-01-02T23:44:24.308018342Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post(OpenAlprWebhook webhookEvent) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookProcessor.cs:line 26\n","stream":"stdout","time":"2021-01-02T23:44:24.308028268Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutor.\u003c\u003ec__DisplayClass33_0.\u003cWrapVoidMethod\u003eb__0(Object target, Object[] parameters)\n","stream":"stdout","time":"2021-01-02T23:44:24.308036Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)\n","stream":"stdout","time":"2021-01-02T23:44:24.308044331Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.VoidResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n","stream":"stdout","time":"2021-01-02T23:44:24.308052837Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()\n","stream":"stdout","time":"2021-01-02T23:44:24.308060803Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.308068956Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()\n","stream":"stdout","time":"2021-01-02T23:44:24.308078548Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-02T23:44:24.308087142Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n","stream":"stdout","time":"2021-01-02T23:44:24.308096004Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.30810452Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeInnerFilterAsync\u003eg__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.308114334Z"}
ect reference not set to an instance of an object.\n","stream":"stdout","time":"2021-01-02T23:44:24.307969307Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeFilterPipelineAsync\u003eg__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-02T23:44:24.308125217Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeAsync\u003eg__Logged|17_1(ResourceInvoker invoker)\n","stream":"stdout","time":"2021-01-02T23:44:24.308135114Z"}
{"log":"   at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003cInvoke\u003eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n","stream":"stdout","time":"2021-01-02T23:44:24.308145961Z"}
{"log":"   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n","stream":"stdout","time":"2021-01-02T23:44:24.308155547Z"}
{"log":"   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-02T23:44:24.308163754Z"}
{"log":"   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)\n","stream":"stdout","time":"2021-01-02T23:44:24.308171207Z"}
{"log":"[23:44:24 INF] Request finished in 527.9073ms 500 \n","stream":"stdout","time":"2021-01-02T23:44:24.308309551Z"}

Also my script that flips the camera to night time fired at the exact time a car passed and a webhook fired. The webhook put the overlay on but my camera didn't flip to night time since I guess they ran at the exact same time. I may have to force my night time flip script to run more than once to make sure it gets fliped to night time settings.
 
Last edited:
I think I am getting there.. I have already done port forwarding to port 5000 .. Now To my bi machine .. Do I need to do anything in configuration in terms of in the app ? or anything..

Also to answer your question - I have the home plan.. then I use the local web server enabled in openalpr agent setting ..

View attachment 78705
His container is defaulting to port 3859. So I just forwarded that port to my machine that is running his Docker container. So anything that send to [yourpublicIPaddress]:3839 will get forwarded to the private IP address of the machine that is running his service.

So however you get to your BI service using your external address, its the same external address but with port of 3839.
 
Yep looks like it can't handle missing car information. my local openalpr web server always returns car information, i'm guessing the cloud version doesn't if the confidence is too low.
 
Anyway just to put a conditional statement in for when it isn't there to just assign it "N/A"??

I'm surprised you can pull car model at night. My images are pitch black except for the plates.LPR Cam 2021-01-02 05.44.20.436 PM.jpg
 
Yep looks like it can't handle missing car information. my local openalpr web server always returns car information, i'm guessing the cloud version doesn't if the confidence is too low.

Does that mean you don't have a subscription and don't get the dashboard?
 
I'm getting the Dashboard on the Watchman Commercial trial. It is just missing the color/make stuff since its too dark for my camera to ID that stuff. It only has plates now that it is dark.
 
i just sign up for a trial again and again, i run the local watchman agent and the local openalpr web server that it reports to.

pr is building to fix the missing vehicle information issue

at night my agent thinks everything is a honda accord lol
 
  • Like
  • Haha
Reactions: tech101 and biggen
I've not messed with running the web server locally. For $5 a month I may just stay on that plan.

The pinnacle would be to use webhooks to throw all of this stuff into a locally running database that has a simple web front end that that is similar to their dashboard. Then not only do you get overlays, then you get a database that has retention that is as long as you want. Of course, I guess that is what running the local openalpr server already gives you.
 
ya, $100/month for two cameras to run a local web server is not aimed at homeowners. latest build should be deployed right now, start/stop docker and it should pull latest and work with missing vehicles.
 
Still getting nastyness. I actually removed the image and container and downloaded fresh:

Code:
{"log":"[00:26:53 INF] Now listening on: http://[::]:80\n","stream":"stdout","time":"2021-01-03T00:26:53.822126391Z"}
{"log":"[00:26:53 INF] Application started. Press Ctrl+C to shut down.\n","stream":"stdout","time":"2021-01-03T00:26:53.822815088Z"}
{"log":"[00:26:53 INF] Hosting environment: Production\n","stream":"stdout","time":"2021-01-03T00:26:53.822994005Z"}
{"log":"[00:26:53 INF] Content root path: /app\n","stream":"stdout","time":"2021-01-03T00:26:53.823087139Z"}
{"log":"[00:29:09 INF] Request starting HTTP/1.1 POST http://ip:3859/webhook application/json 11184\n","stream":"stdout","time":"
2021-01-03T00:29:09.189410391Z"}
{"log":"[00:29:09 WRN] Failed to determine the https port for redirect.\n","stream":"stdout","time":"2021-01-03T00:29:09.200536193Z"}
{"log":"[00:29:09 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor)'\n","stream
":"stdout","time":"2021-01-03T00:29:09.270093486Z"}
{"log":"[00:29:09 INF] Route matched with {action = \"Post\", controller = \"WebhookProcessor\"}. Executing controller action with signature Void
Post(OpenAlprWebhookProcessor.WebhookProcessor.OpenAlprWebhook) on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor (OpenAl
prWebhookProcessor).\n","stream":"stdout","time":"2021-01-03T00:29:09.396969505Z"}
{"log":"[00:29:09 INF] request received from: ::ffff:54.165.211.244\n","stream":"stdout","time":"2021-01-03T00:29:09.669380994Z"}
{"log":"[00:29:09 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor) in 277.4056ms\n
","stream":"stdout","time":"2021-01-03T00:29:09.695225972Z"}
{"log":"[00:29:09 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post (OpenAlprWebhookProcessor)'\n","stream"
:"stdout","time":"2021-01-03T00:29:09.699457562Z"}
{"log":"[00:29:09 ERR] HTTP POST /webhook responded 500 in 500.8965 ms\n","stream":"stdout","time":"2021-01-03T00:29:09.755400202Z"}
{"log":"System.NullReferenceException: Object reference not set to an instance of an object.\n","stream":"stdout","time":"2021-01-03T00:29:09.755
481166Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.Handle(OpenAlprWebhook webhook) in /src/OpenAlprWebhookProcessor/WebhookPr
ocessor/WebhookHandler.cs:line 30\n","stream":"stdout","time":"2021-01-03T00:29:09.755495862Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookProcessor.Post(OpenAlprWebhook webhookEvent) in /src/OpenAlprWebhookProcessor/Webh
ookProcessor/WebhookProcessor.cs:line 26\n","stream":"stdout","time":"2021-01-03T00:29:09.755508575Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutor.\u003c\u003ec__DisplayClass33_0.\u003cWrapVoidMethod\u003eb__0(Object target, Ob
ject[] parameters)\n","stream":"stdout","time":"2021-01-03T00:29:09.755517375Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)\n","stream":"stdout","time":"2021-01
-03T00:29:09{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()\n","stream":"stdout","time":"2021-01-03T00:29:09.755548812Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-03T00:29:09.755557223Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()\n","stream":"stdout","time":"2021-01-03T00:29:09.755569038Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-03T00:29:09.755577255Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n","stream":"stdout","time":"2021-01-03T00:29:09.755585576Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-03T00:29:09.755622461Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeInnerFilterAsync\u003eg__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-03T00:29:09.755633612Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeFilterPipelineAsync\u003eg__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-03T00:29:09.755641713Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeAsync\u003eg__Logged|17_1(ResourceInvoker invoker)\n","stream":"stdout","time":"2021-01-03T00:29:09.755654079Z"}
{"log":"   at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003cInvoke\u003eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n","stream":"stdout","time":"2021-01-03T00:29:09.755661731Z"}
{"log":"   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n","stream":"stdout","time":"2021-01-03T00:29:09.755670535Z"}
{"log":"   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-03T00:29:09.755677784Z"}
{"log":"[00:29:09 ERR] Connection id \"0HM5FFQB0NF9U\", Request id \"0HM5FFQB0NF9U:00000001\": An unhandled exception was thrown by the application.\n","stream":"stdout","time":"2021-01-03T00:29:09.769016847Z"}
{"log":"System.NullReferenceException: Object reference not set to an instance of an object.\n","stream":"stdout","time":"2021-01-03T00:29:09.769067033Z"}
.755527344Z"}

Code:
joe@NUCdebian:~/webhook_alpr$ docker images
REPOSITORY                           TAG                 IMAGE ID       CREATED          SIZE
mlapaglia/openalprwebhookprocessor   latest              8f5b6ca3dec8   25 minutes ago   209MB

Code:
joe@NUCdebian:~/webhook_alpr$ docker pull mlapaglia/openalprwebhookprocessor
Using default tag: latest
latest: Pulling from mlapaglia/openalprwebhookprocessor
Digest: sha256:a4733d542686c94a4d4f2b7170973eb296e481f389bcd236b92aec2ffa8e5bdf
Status: Image is up to date for mlapaglia/openalprwebhookprocessor:latest
docker.io/mlapaglia/openalprwebhookprocessor:latest
 
Last edited:
i just sign up for a trial again and again,

Strictly for temporary development purposes of course ;)

I've not messed with running the web server locally. For $5 a month I may just stay on that plan.

As best I can work out, unless you run the Axis Camera Plan, everyone has a local web server that analyses the plates and stores the information. The Openalpr dashboard merely pulls the data off your webserver as required. The differentiation between the plans merely changes how many days of data it will show you on the dashboard and in the usual search function, not how many days of data you actually have.


What gave it away for me was what happened when I ran a report. I got every hit, including images, I had stored on my local server, regardless of whether it happened 5 days or 5 weeks ago. So all of the data is there and stored locally, regardless of which plan you choose.



1609635205709.png
 
  • Like
Reactions: tech101
I can reach it thru localhost:5000 port.. However I cannot go internal ip:5000 ... Anywhere do I need to enable this for openalprwebhook ? I can even do localhost:5000 without an issue.
 
I’m not sure I understand your last post. What exactly is the problem?
 
tly is the problem?
So far I did pull down the Latest windows copy.. Configured the app config with the camera..

Went to CMD and did dotnet ./OpenAlprWebhookProcessor.dll

When I then go to a browser say do I can see this in CMD so I think all good here...

1609637066959.png

Then I did port forwarding.. to port 5000 to my pc internal ip off course..

To test first internally I try to go browser again..

to see if anything show up and nothing happens.. This is How far I have gotten so far.. What Am I missing beyond this point.. ?
 
The first step I’d do is go to the Webhook dashboard on the OpenAlpr website, and perform the web hook test to make sure you are port forwarding correctly. mlapaglia/OpenAlprWebhookProcessor

Make sure you get a 500 error response. You have to do that with the service running of course.
 
  • Like
Reactions: tech101