Einse57 / device-onvif-camera

Owner: Device WG

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Onvif Camera Device Service

Build Status Code Coverage Go Report Card GitHub Latest Dev Tag) GitHub Latest Stable Tag) GitHub License GitHub go.mod Go version GitHub Pull Requests GitHub Contributors GitHub Committers GitHub Commit Activity

Overview

The Open Network Video Interface Forum (ONVIF) Device Service is a microservice created to address the lack of standardization and automation of camera discovery and onboarding. EdgeX Foundry is a flexible microservice-based architecture created to promote the interoperability of multiple device interface combinations at the edge. In an EdgeX deployment, the ONVIF Device Service controls and communicates with ONVIF-compliant cameras, while EdgeX Foundry presents a standard interface to application developers. With normalized connectivity protocols and a vendor-neutral architecture, EdgeX paired with ONVIF Camera Device Service, simplifies deployment of edge camera devices.

Use the ONVIF Device Service to streamline and scale your edge camera device deployment.

Build with NATS Messaging

Currently, the NATS Messaging capability (NATS MessageBus) is opt-in at build time. This means that the published Docker image and Snaps do not include the NATS messaging capability.

The following make commands will build the local binary or local Docker image with NATS messaging capability included.

make build-nats
make docker-nats

The locally built Docker image can then be used in place of the published Docker image in your compose file. See Compose Builder nat-bus option to generate compose file for NATS and local dev images.

How It Works

The figure below illustrates the software flow through the architecture components.

high-level-arch

Figure 1: Software Flow

  1. EdgeX Device Discovery: Camera device microservices probe network and platform for video devices at a configurable interval. Devices that do not currently exist and that satisfy Provision Watcher filter criteria are added to Core Metadata.
  2. Application Device Discovery: Query Core Metadata for devices and associated configuration.
  3. Application Device Configuration: Set configuration and initiate device actions through a REST API representing the resources of the video device (e.g. stream URI, Pan-Tilt-Zoom position, Firmware Update).
  4. Pipeline Control: The application initiates Video Analytics Pipeline through HTTP Post Request.
  5. Publish Inference Events/Data: Analytics inferences are formatted and passed to the destination message bus specified in the request.
  6. Export Data: Publish prepared (transformed, enriched, filtered, etc.) and groomed (formatted, compressed, encrypted, etc.) data to external systems (be it analytics package, enterprise or on-premises application, cloud systems like Azure IoT, AWS IoT, or Google IoT Core, etc.

Getting Started

Learn how to configure and run the service by following these instructions.

For a full walkthrough of using the default images, use this guide.

For a full walktrhough of building custom images, use this guide.

A brief video demonstration of building and using the device service can be found here.

Learn More

General

Supported ONVIF features
Auto discovery
Control-plane events
Utility Scripts

Custom Features

Custom Metadata
Reboot Needed
Friendly Name and Mac Address

API Support

API Analytic Handling
API Event Handling
API User Handling

Miscellaneous

Postman
User Authentication

Resources

Learn more about EdgeX Core Metadata
Learn more about EdgeX Core Command

References

License

Apache-2.0

About

Owner: Device WG

License:Apache License 2.0


Languages

Language:Go 87.7%Language:Shell 10.5%Language:Makefile 1.1%Language:Dockerfile 0.7%