Putting security camera picture in cloud dashboard

I'm trying to figure out how I can add still images from my security cameras to a dashboard. The part where I'm stuck is how to get it to work in a cloud dashboard. For local I can just do an image tile referencing the correct URL on the NVR. However, for security reasons I don't want to allow inbound Internet access to the NVR. I did some experimenting with the local file manager and that also didn't appear to support remote access. Based on that I'm thinking of periodically uploading the current image to an Azure storage account (have a dev subscription I can use). The GET part I could see how to do in a rule. I didn't see any PUT action I could use for doing an upload. Am I missing something, or is the only way to do it on the hubitat custom code? Creating a full driver/app for a scheduled copy like this would be very heavyweight.

Plan B is I setup a scheduled task on my EdgeRouter since it would be a simple shell script using curl.

Is there another option I'm missing?

I'm not sure whether Hubitat's Remote Admin service provides anything in this space, I don't believe it would, but worth checking. Another option would be a VPN setup to allow you to securely access your network. If you have a spare raspberry pi Wireguard is relatively easy to set and use, but there are other options in that space.

I'm guessing Azure Storage would likely need some form of authentication, or at least I would hope it would. If so, then an app or driver is the more likely option. Someone may have developed something, but I have not seen anything myself.

Personally I think there are broader benefits / uses to setting up the VPN, so would suggest that, otherwise I think your script idea is probably the best alternative I can think of.

1 Like

checkout this app, it's free

@user1040 The issue is that your camera's are local (I would assume 192.168.x.x). Those can not be seen from the cloud/internet as they are NAT'd. Now if your cameras have some kind of direct cloud access via IP that could be done (and your local dashboard would also look to the cloud). Other wise you will only have the displays at home.

Thanks for all the suggestions. I actually have a VPN setup already. The Hubitat and cameras are setup at a vacation cabin in the mountains. I've got a site-to-site VPN setup connecting my home network to the cabin. The challenge I have is that inbound connectivity is unreliable when I'm on backup internet. Primary internet can go down for a month at a time when the local phone company is slow about repairing storm damage. When on backup internet over Starlink I've found inbound connectivity to be very unreliable. That probably is related to obstructions from trees, connection drops, and the carrier grade NAT they use.

I'll go with either a script or driver for automating the image copy. Azure storage supports a mode with having the access token as a query parameter so it's just a simple PUT to the correct URI.

The other potential problems not mentioned is that your image is probably from an HTTP url while your cloud dashboard is an HTTPS url. Almost all browsers doesn't allows HTTP contents on a HTTPS website.

If you make your image available for outside network but are still an HTTP url, you will not be able to see them.

Thanks for the answers. I got this working end-to-end. The driver uploads the pictures periodically to Azure storage, and then I can use a basic image tile to show them. Https isn't an issue since Azure storage supports that for blob access.

If anyone else is interested - hubitat-drivers/NvrPictureUploader.groovy at main ยท marcre/hubitat-drivers (github.com)

1 Like