Skip to content

cdeck3r/INCAS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Images from Networked Camera System (INCAS)

This project collects and stores images from multiple ONVIF compatible IP cameras. These images serve as input to the Social Reporter - an AI based image selection and composition system for generating social media content about lectures at the HHZ.

The project is under development. See current activities on the its Trello board

Usage

INCAS is completely web-based. Point your browser to the URL of the INCAS server.

Design

The following UML usecase diagram provides an impression on INCAS's main services. The docs directory contains the full documentation.

INCAS usecase diagram

Hardware

INCAS uses

  • multiple IPC-G22 Wifi IP cameras
  • Raspberry Pi Zero W

Initial setup

For the correct Raspi wifi setup, you may want to look at

The last link outline various methods to use the wpa_passphrase utility to generate an encrypted PSK. The dev system contains the wpa_passphrase utility.

Software Setup

On the Raspi, login as regular user (i.e. not root) and run the command below. It will install the software in $HOME/incas on the Raspi:

bash <(curl -s https://raw.githubusercontent.com/cdeck3r/INCAS/main/install/install.sh)

Note: During the initial setup, if no $HOME/incas/config.yml was found, the script generates a random password for the incas user submitted to the IP camera when taking snapshots. You may want to take the generated password from the config.yml and set it as password for the incas user in the hardware setup.

If the config.yml exists, the password remains untouched.

Additionally, one may run install_config.sh separately on the Raspi CLI and provide a password as argument. The script will update the password in the config.yml.

The raspi may report its IP address to an external webserver. This is helpful, if one expects a new IP lease in a DHCP controlled network. The install_callingHome.sh script installs a cronjob which issues an hourly http request. A developer may check the webserver's access log for the IP address.

The target webserver is expected to be defined in /boot/incas.ini. Format is by example:

#
# incas.ini
#
# This is a key/value file containing non-public information. 
# It is separated from the incas installation and directory 
# structure to avoid an unintended repo commit.
#
# Default: /boot/incas.ini
# 

# Raspi discovery tracker
TRACKER_NWEB="<insert URL here>"

Dev system

Setup: Start in project's root dir and create a .env file with the content shown below.

# .env file

# In the container, this is the directory where the code is found
# Example:
APP_ROOT=/INCAS

# the HOST directory containing directories to be mounted into containers
# Example:
VOL_DIR=/home/myusername/INCAS

Create docker image. Please see Dockerfiles/Dockerfile.incas-dev for details.

docker-compose build incas-dev

Spin up the container and get a shell from the container

docker-compose up -d incas-dev
docker exec -it incas-dev /bin/bash

License

Information provided in the LICENSE file.

Releases

No releases published

Packages

No packages published