The E2E sample implements aspects of smart city sensing, analytics and management features as follows:
- Camera Provisioning: Tag and calibrate cameras for installation locations, calibration parameters and other usage pattern information.
- Camera Discovery: Discover and register IP cameras on specified IP blocks. Registered cameras automatically participate into the analytics activities. See Sensor Simulation and Discovery for additional details.
- Recording: Record and manage segmented camera footage for preview or review (at a later time) purpose.
- Analytics: Perform analytics on the live/recorded camera streams. Latency-sensitive analytics are performed on Edge while others are on cloud.
- Triggers and Alerts: Manage triggers on analytics data. Respond with actions on triggered alerts.
- Smart Upload and Archive: Transcode and upload only critical data to cloud for archival or further offline analysis.
- Stats: Calculate statistics for planning/monitoring purpose on analytical data.
- UI: Present above data to users/administrators/city planners.
The sample showcases the following pipeline operations using the Open Visual Cloud software stacks:
- Edge Low-latency Analytics:
- Smart Upload with Transcoding:
The following diagram illustrates how the sample is constructed: a set of services each retrieves the work order by querying the database and submits the processing results back into the database. See also: Content Search.
Time Zone: Check that the timezone setting of your host machine is correctly configured. Timezone is used during build. If you plan to run the sample on a cluster of machines managed by Docker Swarm or Kubernetes, please make sure to synchronize time among the manager/master node and worker nodes.
Build Tools: Install
m4if they are not available on your system.
- Install docker engine.
- Install docker compose, if you plan to deploy through docker compose. Version 1.20+ is required.
- Setup docker swarm, if you plan to deploy through docker swarm. See Docker Swarm Setup for additional setup details.
- Setup Kubernetes, if you plan to deploy through Kubernetes. See Kubernetes Setup for additional setup details.
- Setup docker proxy as follows if you are behind a firewall:
sudo mkdir -p /etc/systemd/system/docker.service.d printf "[Service]\nEnvironment=\"HTTPS_PROXY=$https_proxy\" \"NO_PROXY=$no_proxy\"\n" | sudo tee /etc/systemd/system/docker.service.d/proxy.conf sudo systemctl daemon-reload sudo systemctl restart docker
mkdir build cd build cmake .. make
See also: Customize Build Process.
Use the following commands to start/stop services via docker-compose:
make start_docker_compose make stop_docker_compose
Use the following commands to start/stop services via docker swarm:
make update make start_docker_swarm make stop_docker_swarm
See also: Docker Swarm Setup.
Use the following commands to start/stop Kubernetes services:
make update make start_kubernetes make stop_kubernetes
See also: Kubernetes Setup.
Launch Sample UI:
Launch your browser and browse to
https://<hostname>. You should see something similar to the following UI:
- For Kubernetes/Docker Swarm,
<hostname>is the hostname of the manager/master node.
- If you see a browser warning of self-signed certificate, please accept it to proceed to the sample UI.