Merge branch 'develop' into 2.0
@@ -4,6 +4,7 @@
|
||||
* [What is Kerberos.io](#what-is-kerberos-io)
|
||||
* [How does it work](#how-does-it-work)
|
||||
* [Features](#features)
|
||||
* [Installation](#installation)
|
||||
|
||||
<a name="why-kerberos-io"></a>
|
||||
## Why Kerberos.io?
|
||||
@@ -15,7 +16,7 @@ Nowadays we have a myriad of **expensive** camera's, recorders and software solu
|
||||
<a name="what-is-kerberos-io"></a>
|
||||
## What's Kerberos.io?
|
||||
|
||||
Kerberos.io is a **low-budget** video surveillance solution, that uses computer vision algorithms to detect changes, and that can trigger other devices. Kerberos.io is open source so everyone can customize the source code to its needs and share it with the community. When deployed on the Raspberry Pi, it has a **green footprint** and it's **easy to install**; you only need to transfer the [**Kerberos.io OS (KIOS)**](installation/KiOS) to your SD card and that's it.
|
||||
Kerberos.io is a **low-budget** video surveillance solution, that uses computer vision algorithms to detect changes, and that can trigger other devices. Kerberos.io is open source so everyone can customize the source code to its needs and share it with the community. When deployed on the Raspberry Pi, it has a **green footprint** and it's **easy to install**; you only need to transfer the [**Kerberos.io OS (KIOS)**](/installation/KiOS) to your SD card and that's it.
|
||||
|
||||
<iframe src="https://player.vimeo.com/video/163975947?autoplay=0&color=943633" style="width:100%; height: 400px;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||
|
||||
@@ -28,9 +29,9 @@ The machinery is responsible for the processing. It's **an image processing fram
|
||||
|
||||
The web is responsible for the visualization. It's a **GUI** which helps the user to find activity at a specific period, configure the machinery, view a live stream, see system information and much more. It's important to note that the machinery can work without the web, however we don't recommend this.
|
||||
|
||||
The cloud is an extra service, which is available by default but is not required. The main goal of this service is **to view your activity from everywhere** in the world. By [**subscribing to a plan**](https://cloud.kerberos.io), you can **sync your events** to the cloud application; you can sync **multiple instances** with only one subscription.
|
||||
The cloud is an extra service, which is available by default but is not required. The main goal of this service is **to view your activity from everywhere** in the world. By [**subscribing to a plan**](https://cloud.kerberos.io), you can **sync your images** to the cloud application; you can sync **multiple instances** with **only one subscription**.
|
||||
|
||||
To have a more detailed explanation go to the [**machinery**](machinery/introduction) and [**web**](web/introduction) pages.
|
||||
To have a more detailed explanation go to the [**machinery**](/machinery/introduction) and [**web**](/web/introduction) pages.
|
||||
|
||||

|
||||
|
||||
@@ -39,7 +40,7 @@ To have a more detailed explanation go to the [**machinery**](machinery/introduc
|
||||
|
||||
Kerberos.io comes with **a bunch of features**, below you can find a short list of the most important ones.
|
||||
|
||||
* Full range camera support (USB-, Raspberry Pi-, and IP-camera (RTSP or MJPEG)).
|
||||
* Full range camera support (USB-, Raspberry Pi v1.3 and v2.1-, and IP-cameras which support a RTSP or MJPEG stream).
|
||||
* Constraints to make detection more intelligent (time interval, regions, etc).
|
||||
* Post-processes which are executed after a valid activity (GPIO pin, webhook, etc).
|
||||
* Live streaming (MJPEG) on the web or with another program like VLC or IP camera viewer.
|
||||
@@ -52,4 +53,15 @@ Kerberos.io comes with **a bunch of features**, below you can find a short list
|
||||
Features **NOT** included:
|
||||
|
||||
* Video recording (only snapshots are taken); third-party solutions are available (IP camera viewer).
|
||||
* Multiple camera support; not supported out-of-the-box, but it's possible with some technical skills.
|
||||
* Multiple camera support; not supported out-of-the-box, but it's possible with some technical skills.
|
||||
|
||||
<a name="installation"></a>
|
||||
## Installation
|
||||
|
||||
Installing <b>Kerberos.io</b> to your IoT device, has never been so easy. By using our <b>cross-platform</b> installer, you can run a <b>fully configured</b> video surveillance system within <b>3 minutes</b>. Indeed, we also think that's awesome!
|
||||
|
||||
[](/installation/KiOS)
|
||||
|
||||
By using the KiOS installer, you'll get <b>an easy to use GUI</b> which allows you to configure and **flash KiOS to your SD card**. Just download the installer, select a version, specify your network configurations, select your SD card and press the flash button; **it can't be easier**.
|
||||
|
||||
If you **don't want to reflash you SD card**, you can run also run Kerberos.io on your [**Raspbian**](installation/Raspbian) installation, or even run it as a [**docker container**](installation/Docker).
|
||||
@@ -6,10 +6,12 @@ Kerberos.io runs on every machine but its main goal is to run on a **Raspberry P
|
||||
|
||||
### Raspberry Pi
|
||||
|
||||
As said, you can run Kerberos.io **on every machine**, however we recommend to run Kerberos.io on a **Raspberry Pi**, as it is a low-budget microcontroller which can you buy in almost every electronic shop. Besides that Kerberos.io comes with a custom OS called **KIOS** (Kerberos.io Operating System), which you can deploy to your Raspberry Pi in just a few minutes. Kerberos.io supports **all Raspberry Pi versions** (1, 2 and 3).
|
||||
As said, you can run Kerberos.io **on every Linux based machine**, however we recommend to run Kerberos.io on a **Raspberry Pi**, as it is a low-budget microcontroller which can you buy in almost every (online) electronic shop. Therefore Kerberos.io comes with a custom ARM OS called [**KIOS**](installation/KiOS) (Kerberos.io Operating System), which you can deploy to your Raspberry Pi in just a few minutes. Kerberos.io supports **all Raspberry Pi versions** (1, 2, 3 and Zero).
|
||||
|
||||

|
||||
|
||||
For the moment of writing (2016), we do **not support other boards**.
|
||||
|
||||
### SD card
|
||||
|
||||
If you want to use your Raspberry Pi, you will need to have a SD card, on which an OS will be installed. Therefore you will need a **2GB or bigger SD card**.
|
||||
@@ -24,7 +26,7 @@ You will need to have a **micro USB 5V** charger, to give the Raspberry Pi some
|
||||
|
||||
### Camera
|
||||
|
||||
Kerberos.io works with the full range of camera's. You can use an **USB-**, **IP-** or the **Raspberry Pi camera**.
|
||||
Kerberos.io works with the full range of camera's. You can use an **USB-**, **IP-** or the **Raspberry Pi camera (v1.3 and v2.1)**.
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Release notes
|
||||
|
||||
* [2.1.0](#2-1-0)
|
||||
* [2.0.0](#2-0-0)
|
||||
* [1.1.0](#1-1-0)
|
||||
* [1.0.3](#1-0-3)
|
||||
@@ -7,6 +8,39 @@
|
||||
* [1.0.1](#1-0-1)
|
||||
* [1.0.0](#1-0-0)
|
||||
|
||||
<a name="2-1-0"></a>
|
||||
## 2.1.0
|
||||
|
||||
#### Web
|
||||
|
||||
* Added PhotoSwipe for image overview (easier to browse through images). [#24](https://github.com/kerberos-io/web/issues/24)
|
||||
* Added reboot and shutdown commands. [#23](https://github.com/kerberos-io/web/issues/23)
|
||||
* Added logging view to system page. [#20](https://github.com/kerberos-io/web/issues/20)
|
||||
* Added labels to check if machinery is running. [#19](https://github.com/kerberos-io/web/issues/19)
|
||||
* Added error handling if web interface isn’t working properly. [#2](https://github.com/kerberos-io/web/issues/2)
|
||||
* Fixed Heatmap.js fail to load by ad-blocker. [#16](https://github.com/kerberos-io/web/issues/16)
|
||||
* Show additional information on the dashboard (streaming is opening or not) there is no data available. [#16](https://github.com/kerberos-io/web/issues/16)
|
||||
* Settings page is now visible on mobile (+ changed icon). [#16](https://github.com/kerberos-io/web/issues/16)
|
||||
* Fixed sorting of news articles. [#16](https://github.com/kerberos-io/web/issues/16)
|
||||
* Removed links to assets in the cloud (.css files). [#16](https://github.com/kerberos-io/web/issues/16)
|
||||
* Design: improved layout of login page, async loading of image view.
|
||||
|
||||
#### Machinery
|
||||
|
||||
* Added configurable streaming port and quality. [#21](https://github.com/kerberos-io/machinery/issues/21)
|
||||
* Added new algorithm: Background subtraction. [#35](https://github.com/kerberos-io/machinery/issues/35)
|
||||
* Added new heuristic: Counter (for object/people counting). [#28](https://github.com/kerberos-io/machinery/issues/28)
|
||||
* Added video capture, which can be used for debugging purposes (replay a video fragment).. [#26](https://github.com/kerberos-io/machinery/issues/26)
|
||||
* It’s now possible to mark the images with a timestamp. [#24](https://github.com/kerberos-io/machinery/issues/24)
|
||||
* Fixed blocking streaming socket. [#22](https://github.com/kerberos-io/machinery/issues/22)
|
||||
|
||||
#### Kios
|
||||
|
||||
* Fix removal images if disk is almost full (wrong path was defined). [#1](https://github.com/kerberos-io/kios/issues/1)
|
||||
* Support for the Raspberry Pi Camera module v2.1. [#3](https://github.com/kerberos-io/kios/issues/3)
|
||||
* Support for the Raspberry Pi Zero; updated kernel to latest Raspbian. [#3](https://github.com/kerberos-io/kios/issues/3)
|
||||
* KiOS GUI installer.
|
||||
|
||||
<a name="2-0-0"></a>
|
||||
## 2.0.0
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#First things first
|
||||
|
||||
The reason why you're on this page is because you want to know how to install Kerberos.io on your Raspberry Pi, local working station, server or whatever machine you prefer. The good news is that we have **different approaches** from basic to advanced; it depends on how you want to install it.
|
||||
The reason why you're on this page is because you want to know how to install Kerberos.io on your Raspberry Pi, local working station, server or whatever Linux machine you prefer. The good news is that we have **different approaches** from basic to advanced; it depends on how you want to install it.
|
||||
|
||||
## Raspberry Pi (ARM)
|
||||
|
||||
When deploying on the Raspberry Pi there are two possible solutions. You can use our custom OS, **KiOS** (Kerberos.io Operating System), which is production-ready or install it on an existing OS, **Raspbian**.
|
||||
When deploying on the Raspberry Pi there are two possible solutions. You can use our custom OS, [**KiOS**](installation/KiOS) (Kerberos.io Operating System), which is production-ready or install it on an existing OS, [**Raspbian**](installation/Raspbian).
|
||||
|
||||
###KiOS
|
||||
|
||||
|
||||
@@ -1,116 +1,204 @@
|
||||
#KiOS
|
||||
|
||||
* [Download the .img](#download)
|
||||
* [Flash the .img to a SD card](#flash)
|
||||
* [Network configuration](#network)
|
||||
* [Easy Installation](#installer)
|
||||
* [Advanced Installation](#advanced)
|
||||
* [Download the .img](#download)
|
||||
* [Flash the .img to a SD card](#flash)
|
||||
* [Network configuration](#network)
|
||||
* [Power on the Raspberry Pi](#poweron)
|
||||
* [Access the Raspberry Pi with SSH](#access)
|
||||
|
||||
## Introduction
|
||||
|
||||
[KiOS](https://github.com/kerberos-io/kios) (Kerberos.io Operating System) is a custom linux OS created for the Raspberry Pi by buildroot, which runs Kerberos.io out-of-the-box. KiOS is **installed like every other OS** for the Raspberry Pi, you need to flash the OS (.img) to a SD card and update your network configration; no manual compilation or horrible configurations. If you want to get Kerberos.io up and running at a short time frame, this is the **most simple** and **basic** installation procedure; it takes about 15-30 min to download, install and configure.
|
||||
[KiOS](https://github.com/kerberos-io/kios) (Kerberos.io Operating System) is our own **custom linux OS**, which runs Kerberos.io out-of-the-box. KiOS is **installed like every other OS** for the Raspberry Pi, you need to flash the OS (.img) to a SD card. If you want to get Kerberos.io up and running at a short time frame, this is the **most simple** and **basic** installation procedure.
|
||||
|
||||
<iframe src="https://player.vimeo.com/video/164054497?autoplay=0&color=943633" style="width:100%; height: 400px;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||
You can install KiOS by using our **own installer**, which gives you a nice GUI that will handle the flashing for you, or you can do the flashing **yourself** by using your terminal or another GUI.
|
||||
|
||||
<a name="download"></a>
|
||||
## 1. Download the .img
|
||||
<button id="installer-btn" class="btn" style="width: 49%; height: 50px; background-color: #943633; font-size: 16px; color: #fff; outline: 0;">Easy installation</button>
|
||||
<button id="advanced-btn" class="btn" style="width: 49%; height: 50px; background-color: #ddd; font-size: 16px; color: #fff; outline: 0;">Advanced installation</button>
|
||||
|
||||
All releases are stored on the KiOS [**Github repository**](https://github.com/kerberos-io/kios), each release contains several images (for every Raspberry Pi version a different image is created). It's important to download the correct image; installing an image for another Raspberry Pi version will not work. After downloading, make sure to unzip the release.
|
||||
<div id="installer">
|
||||
<h2>Easy Installation</h2>
|
||||
|
||||
<p>
|
||||
Installing <b>Kerberos.io</b> to your IoT device, has never been so easy. By using our <b>cross-platform</b> installer, you can run a <b>fully configured</b> video surveillance system within <b>3 minutes</b>. Indeed, we also think that's awesome!
|
||||
</p>
|
||||
|
||||
[](https://github.com/kerberos-io/kios/releases)
|
||||
<img src="/images/kios-install.gif" style="border-radius: 0; margin: 0; width: 100%;"/>
|
||||
|
||||
<a name="flash"></a>
|
||||
## 2. Flash the .img to a SD card
|
||||
<div id="bottom-download" class="btn-group" style="margin: 20px 0; width: 100%">
|
||||
<a class="current-version btn btn-success btn-lg" style="color: #fff; margin-bottom: 5px;font-size: 18px; width: 90%;" data-track-id="jumbotron button" role="button"></a>
|
||||
<button type="button" class="btn btn-success btn-lg dropdown-toggle" style="font-size: 18px; width: 10%;" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="caret"></span>
|
||||
<span class="sr-only">Toggle Dropdown</span>
|
||||
</button>
|
||||
<ul class="dropdown-menu" style="width:100%; margin: 0; padding:0"></ul>
|
||||
</div>
|
||||
|
||||
Ensure that you have inserted the SD card, that you wish to clone, into the SD card reader. If you dont have an internal SD card reader, you will need to plug in an external SD card reader via a USB socket.
|
||||
<p>By using the KiOS installer, you'll get <b>an easy to use GUI</b> which allows you to configure and flash KiOS to your SD card. Just download the installer, select a version, specify your network configurations, select your SD card and press the flash button; it can't be easier.</p>
|
||||
|
||||
<script type="text/javascript">
|
||||
require([_jsBase + 'main.js'], function(common)
|
||||
{
|
||||
require(["jquery", "//kerberos.io/etcher-versions.js", "//kerberos.io/sniffer.min.js"], function($)
|
||||
{
|
||||
$(function()
|
||||
{
|
||||
$("#advanced-btn").click(function(){
|
||||
$("#installer-btn").css({"background-color":"#ddd"});
|
||||
$("#advanced-btn").css({"background-color":"#943633"});
|
||||
$("#installer").hide();
|
||||
$("#advanced").show();
|
||||
})
|
||||
|
||||
### OSX
|
||||
$("#installer-btn").click(function(){
|
||||
$("#installer-btn").css({"background-color":"#943633"});
|
||||
$("#advanced-btn").css({"background-color":"#ddd"});
|
||||
$("#advanced").hide();
|
||||
$("#installer").show();
|
||||
})
|
||||
|
||||
* Download and install [RPi-sd card builder v1.2](https://mega.co.nz/#!PZc2HTTQ!eD9dtFpoKnbZqP1hkvrv43_Pvc9xadMVxRP2K-M8n88).
|
||||
* Run the app.
|
||||
* Select the kios-x-y.img.
|
||||
* Select your SD card.
|
||||
* Insert your password, as the program will need administrator privileges.
|
||||
* The system will start transferring the image to your SD card.
|
||||
* A confirmation is shown that the transferred is completed and SD card unmounted.
|
||||
// Specify current version
|
||||
var platform = window.Sniff.os.name;
|
||||
if(platform === "win")
|
||||
{
|
||||
platform += "64";
|
||||
}
|
||||
else if (platform !== "osx")
|
||||
{
|
||||
platform = "linux64";
|
||||
}
|
||||
|
||||
### Windows
|
||||
var currentVersion = $.grep(versions, function(el){
|
||||
return el.os == platform;
|
||||
});
|
||||
|
||||
* Download and install [Win32DiskImager](http://sourceforge.net/projects/win32diskimager/files/latest/download).
|
||||
* Select the KiOS image and the drive letter of the SD card.
|
||||
if(currentVersion.length > 0)
|
||||
$(".current-version").html(currentVersion[0].long_name);
|
||||
$(".current-version").attr('href', currentVersion[0].href);
|
||||
|
||||
### Linux
|
||||
// Fill dropdowns
|
||||
var dropdown = $(".dropdown-menu");
|
||||
for(var i = 0; i < versions.length; i++)
|
||||
{
|
||||
dropdown.append('<li><a href="' + versions[i].href + '">' + versions[i].name + '</a></li>');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
<div id="advanced" style="display: none;">
|
||||
<h2>Advanced Installation</h2>
|
||||
|
||||
#### Format SD card
|
||||
If you prefer **the hard way**, you can also flash **Kerberos.io** to your SD card manually. So it's not a problem if you don't want to use the KiOS installer. It goes as follows: download the KiOS .img yourself, flash it to your SD card with your terminal and edit some configuration files in the boot directory.<br/><br/>
|
||||
|
||||
Select SD card and delete all partitions with gparted
|
||||
<iframe src="https://player.vimeo.com/video/164054497?autoplay=0&color=943633" style="width:100%; height: 400px;" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||
|
||||
gparted
|
||||
<a name="download"></a>
|
||||
<h2>1. Download the .img</h2>
|
||||
|
||||
To format the SD card, enter the following command:
|
||||
All releases are stored on the KiOS <a href="https://github.com/kerberos-io/kios"><b>Github repository</b></a>, each release contains several images (for every Raspberry Pi version a different image is created). It's important to download the correct image; installing an image for another Raspberry Pi version will not work. After downloading, make sure to unzip the release.
|
||||
|
||||
sudo mkdosfs -F 16 -v /dev/sdb -I
|
||||
<a href="https://github.com/kerberos-io/kios/releases"><img alt="Download KiOS" src="2_kerberos-image.png"/></a>
|
||||
|
||||
#### Transfer image to your SD card
|
||||
<a name="flash"></a>
|
||||
<h2>2. Flash the .img to a SD card</h2>
|
||||
|
||||
In Terminal, enter the following command ensuring that you identify the correct destination disc.
|
||||
Ensure that you have inserted the SD card, that you wish to clone, into the SD card reader. If you dont have an internal SD card reader, you will need to plug in an external SD card reader via a USB socket.
|
||||
|
||||
sudo dd if="kios-x-y.img" of=/dev/sdb bs=2M
|
||||
<h3>OSX</h3>
|
||||
|
||||
<a name="network"></a>
|
||||
## 3. Network configuration
|
||||
<ul>
|
||||
<li>Download and install <a href="https://mega.co.nz/#!PZc2HTTQ!eD9dtFpoKnbZqP1hkvrv43_Pvc9xadMVxRP2K-M8n88">RPi-sd card builder v1.2</a>.</li>
|
||||
<li>Run the app.</li>
|
||||
<li>Select the kios-x-y.img.</li>
|
||||
<li>Select your SD card.</li>
|
||||
<li>Insert your password, as the program will need administrator privileges.</li>
|
||||
<li>The system will start transferring the image to your SD card.</li>
|
||||
<li>A confirmation is shown that the transferred is completed and SD card unmounted.</li>
|
||||
</ul>
|
||||
|
||||
After the image has been transferred, you can plug the SD card in to your Raspberry Pi and everything will work magically. By default the KiOS image will require an ethernet connection and use DHCP to give you a dynamic IP-address. However if you want to have a **static IP-address** or/and use a **wireless connection**, you'll need to do a small configuration. Insert the SD card into your working station and open the SD card, you'll see two files **static_ip.conf** and **wireless.conf**.
|
||||
<h3>Windows</h3>
|
||||
|
||||
### Static IP-address
|
||||
<ul>
|
||||
<li>Download and install <a href="http://sourceforge.net/projects/win32diskimager/files/latest/download">Win32DiskImager</a>.</li>
|
||||
<li>Select the KiOS image and the drive letter of the SD card.</li>
|
||||
</ul>
|
||||
|
||||
Open and edit the file **static_ip.conf**.
|
||||
<h3>Linux</h3>
|
||||
|
||||
#####################################################################
|
||||
# Enter the IP-address you want to have, followed by the subnet mask
|
||||
# e.g. 192.168.0.10/24
|
||||
<h4>Format SD card</h4>
|
||||
|
||||
static_ip=""
|
||||
Select SD card and delete all partitions with gparted
|
||||
|
||||
#####################################################################
|
||||
# Enter the Gateway and DNS, this will be your router in most cases
|
||||
# e.g. 192.168.0.1
|
||||
<pre><code>gparted</code></pre>
|
||||
|
||||
static_gw=""
|
||||
static_dns=""
|
||||
|
||||
### Wireless connection
|
||||
To format the SD card, enter the following command:
|
||||
|
||||
Open and edit the file **wireless.conf**. Fill-in your WIFI credentials: **SSID** the name of your wireles network, and **PSK** the password of your wireless network.
|
||||
<pre><code>sudo mkdosfs -F 16 -v /dev/sdb -I</code></pre>
|
||||
|
||||
update_config=1
|
||||
ctrl_interface=/var/run/wpa_supplicant
|
||||
<h4>Transfer image to your SD card</h4>
|
||||
|
||||
network={
|
||||
scan_ssid=1
|
||||
ssid=""
|
||||
psk=""
|
||||
}
|
||||
In Terminal, enter the following command ensuring that you identify the correct destination disc.
|
||||
|
||||
<pre><code>sudo dd if="kios-x-y.img" of=/dev/sdb bs=2M</code></pre>
|
||||
|
||||
<a name="network"></a>
|
||||
<h2>3. Network configuration</h2>
|
||||
|
||||
After the image has been transferred, you can plug the SD card in to your Raspberry Pi and everything will work magically. By default the KiOS image will require an ethernet connection and use DHCP to give you a dynamic IP-address. However if you want to have a <b>static IP-address</b> or/and use a <b>wireless connection</b>, you'll need to do a small configuration. Insert the SD card into your working station and open the SD card, you'll see two files <b>static_ip.conf</b> and <b>wireless.conf</b>.
|
||||
|
||||
<h3>Static IP-address</h3>
|
||||
|
||||
Open and edit the file <b>static_ip.conf</b>.
|
||||
|
||||
<pre><code>#####################################################################
|
||||
# Enter the IP-address you want to have, followed by the subnet mask
|
||||
# e.g. 192.168.0.10/24
|
||||
|
||||
static_ip=""
|
||||
|
||||
#####################################################################
|
||||
# Enter the Gateway and DNS, this will be your router in most cases
|
||||
# e.g. 192.168.0.1
|
||||
|
||||
static_gw=""
|
||||
static_dns=""</code></pre>
|
||||
|
||||
<h3>Wireless connection</h3>
|
||||
|
||||
Open and edit the file <b>wireless.conf</b>. Fill-in your WIFI credentials: <b>SSID</b> the name of your wireles network, and <b>PSK</b> the password of your wireless network.
|
||||
|
||||
<pre><code>update_config=1
|
||||
ctrl_interface=/var/run/wpa_supplicant
|
||||
|
||||
network={
|
||||
scan_ssid=1
|
||||
ssid=""
|
||||
psk=""
|
||||
}</code></pre>
|
||||
</div>
|
||||
|
||||
<a name="poweron"></a>
|
||||
## 4. Power on the Raspberry Pi
|
||||
<h2>Power on the Raspberry Pi</h2>
|
||||
|
||||
When the installation is completed, you can **plug the SD card** into your Raspberry Pi. From this point KiOS will boot the kernel and re-partition your SD-card; Please note that the first time you boot KiOS it can take about 2 mins before the system is operational. When KiOS is ready you can **open your favorite browser** and type in the IP address of your Raspberry Pi. This will open the Kerberos.io login page, which you can **access** with the username: **root** and password: **root**.
|
||||
When the installation is completed, you can <b>plug the SD card</b> into your Raspberry Pi. From this point KiOS will boot the kernel and re-partition your SD-card; Please note that the first time you boot KiOS it can take about 2 mins before the system is operational. When KiOS is ready you can <b>open your favorite browser</b> and type in the IP address of your Raspberry Pi. This will open the Kerberos.io login page, which you can <b>access</b> with the username: <b>root</b> and password: <b>root</b>.
|
||||
|
||||

|
||||
|
||||
<a name="access"></a>
|
||||
## 5. Access the Raspberry Pi with SSH
|
||||
<h2>Access the Raspberry Pi with SSH</h2>
|
||||
|
||||
To use Kerberos.io you only need access to the webinterface, however you can also **access the system with SSH**.
|
||||
To use Kerberos.io you only need access to the webinterface, however you can also <b>access the system with SSH</b>.
|
||||
|
||||
Cedrics-Mac-mini:build cedricverst$ ssh root@192.168.0.12
|
||||
Welcome to kios-79e30bbb!
|
||||
[root@kios-79e30bbb ~]#
|
||||
<pre><code>Cedrics-Mac-mini:build cedricverst$ ssh root@192.168.0.12
|
||||
Welcome to kios-79e30bbb!
|
||||
[root@kios-79e30bbb ~]# </code></pre>
|
||||
|
||||
Note that by default no root password is set, you can define a password in the **/data/etc/kios.conf** file.
|
||||
Note that by default no root password is set, you can define a password in the <b>/data/etc/kios.conf</b> file.
|
||||
|
||||
[root@kios-79e30bbb ~]# nano /data/etc/kios.conf
|
||||
[root@kios-79e30bbb ~]# reboot
|
||||
|
||||
Add your password, save the file and reboot the system.
|
||||
<pre><code>[root@kios-79e30bbb ~]# nano /data/etc/kios.conf
|
||||
[root@kios-79e30bbb ~]# reboot</code></pre>
|
||||
|
||||
Add your password, save the file and reboot the system.
|
||||
@@ -26,13 +26,13 @@ Update system and install dependency avcodec
|
||||
|
||||
sudo apt-get update && sudo apt-get install libav-tools
|
||||
|
||||
Download the debian file from [the machinery repository](https://github.com/cedricve/version-test/releases/v2.1.0); Please download the correct version for your Raspberry Pi, **replace X by the version**.
|
||||
Download the debian file from [the machinery repository](https://github.com/cedricve/version-test/releases/v%machineryversion%); Please download the correct version for your Raspberry Pi, **replace X by the version**.
|
||||
|
||||
sudo wget https://github.com/kerberos-io/machinery/releases/download/v2.0.0/rpiX-machinery-kerberosio-armhf-2.0.0.deb
|
||||
sudo wget https://github.com/kerberos-io/machinery/releases/download/v%machineryversion%/rpiX-machinery-kerberosio-armhf-%machineryversion%.deb
|
||||
|
||||
Unpackage the file
|
||||
|
||||
sudo dpkg -i rpiX-machinery-kerberosio-armhf-2.0.0.deb
|
||||
sudo dpkg -i rpiX-machinery-kerberosio-armhf-%machineryversion%.deb
|
||||
|
||||
Enable Raspberry Pi camera (if needed)
|
||||
|
||||
@@ -113,7 +113,7 @@ Create a www location.
|
||||
|
||||
Get the source code from Github.
|
||||
|
||||
sudo wget https://github.com/kerberos-io/web/releases/download/v2.0.0/web.tar.gz
|
||||
sudo wget https://github.com/kerberos-io/web/releases/download/v%webversion%/web.tar.gz
|
||||
|
||||
Unpack
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ The machinery is an **image processing framework** which is devided into four st
|
||||
|
||||
The steps belong to a four passway; illustrated on the image below. In each cycle a sequence of images is processed. Each step will process the sequence, and will return some result to the next step. For example: an algorithm will process the images and returns an array to the Expositor, which contains boolean values. The steps are **loosly coupled**, so they have **simple conventions**, just like the example before.
|
||||
|
||||
Thanks to the loosly coupling, each step can be developed indepently. So algorithms, expositors, heuristics and conditions can be switched on the fly. This makes it easier for other developers who want to contribute to kerberos. They can create a new algorithm without knowing how a specific expositor or heuristic works. They just need to be aware of the convention an algorithm should meet.
|
||||
Thanks to the loosly coupling, each step can be developed indepently. So algorithms, expositors, heuristics and conditions can be switched on the fly. This makes it easier for other developers who want to contribute to Kerberos.io. They can create a new algorithm without knowing how a specific expositor or heuristic works. They just need to be aware of the convention an algorithm should meet.
|
||||
|
||||

|
||||
|
||||
@@ -40,7 +40,7 @@ After the algorithm is executed, the expositor will determine, a region, where t
|
||||
<a name="heuristic"></a>
|
||||
### Heuristic
|
||||
|
||||
When the expositor detected a region where activity was detection, a **heuristic** will evaluate, the current and previous detections. The heuristic is basically some kind of memory which makes decision and tells the machinery if the detection was true or false.
|
||||
When the expositor detected a region where activity was detection, a **heuristic** will evaluate, the current and previous detections. The heuristic is basically some kind of memory which makes a decision and tells the machinery if the detection was true or false.
|
||||
|
||||
<a name="io"></a>
|
||||
### IO
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
* [USB camera](#usb-camera)
|
||||
* [IP camera](#ip-camera)
|
||||
* [Raspberry Pi Camera Module](#raspberry-pi-camera-module)
|
||||
* [Raspberry Pi camera](#raspberry-pi-camera)
|
||||
|
||||
The capture device is responsible to take images. The images are used in the four pass way.
|
||||
|
||||
@@ -16,7 +16,7 @@ Kerberos supports a whole range of USB cameras. You will find a complete list [h
|
||||
|
||||
Kerberos can be used with any IP camera, that provides a streaming URL. Make sure that you know the correct URL of your IP camera, you can find [a list here](http://www.ispyconnect.com/sources.aspx). Make sure you have updated the web interface, to make Kerberos aware you will be using an IP camera.
|
||||
|
||||
<a name="raspberry-pi-camera-module"></a>
|
||||
## Raspberry Pi Camera Module
|
||||
<a name="raspberry-pi-camera"></a>
|
||||
## Raspberry Pi camera
|
||||
|
||||
You can use the Raspberry Pi Camera Module with Kerberos, you just need to attach the camera module and you are ready to go. The Raspberry Pi Camera Module is enabled by default in the web interface. Please note that if you didn't installed Kerberos with the image, you will need to enable the camera module yourself.
|
||||
You can use the Raspberry Pi camera (v1.3 and v2.1) with Kerberos.io, you just need to attach the camera and you are ready to go. The Raspberry Pi Camera Module is enabled by default in the web interface. Please note that if you didn't installed Kerberos with the image, you will need to enable the camera module yourself.
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
Kerberos.io supports a whole range of USB-cameras. You will find a complete list [**here**](https://web.archive.org/web/20120815172655/http://opencv.willowgarage.com/wiki/Welcome/OS/). Make sure you have updated the web interface, to make Kerberos.io aware you will be using an USB camera. [**Be careful**](http://raspberrypi.stackexchange.com/questions/340/how-much-power-can-be-provided-through-usb) that you don't attach USB-devices that require more than 100mA.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the USB-camera can be found in the **config/capture.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
@@ -15,6 +11,7 @@ The parameters of the USB-camera can be found in the **config/capture.xml** file
|
||||
<USBCamera>
|
||||
<frameWidth type="number">1280</frameWidth>
|
||||
<frameHeight type="number">720</frameHeight>
|
||||
<deviceNumber type="number">0</deviceNumber>
|
||||
<delay type="number">0</delay>
|
||||
<angle type="number">0</angle>
|
||||
</USBCamera>
|
||||
@@ -25,6 +22,10 @@ The parameters of the USB-camera can be found in the **config/capture.xml** file
|
||||
|
||||
You can set the resolution of the capture device, make sure the resolution you've defined is valid with your camera. Please check the specs of the USB camera you're using.
|
||||
|
||||
### Device number
|
||||
|
||||
If more than one device is connected, you can specify the index of the USB-camera. The index is an integer (1-5).
|
||||
|
||||
### Delay
|
||||
|
||||
You can provide a delay/interval (milliseconds) between two captures.
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
Kerberos.io can be used with any IP-camera, that provides a RTSP (or MJPEG) stream. Make sure that you know the correct URL of your IP camera, you can find [a list here](http://www.ispyconnect.com/sources.aspx). Make sure you have updated the web, to make Kerberos.io aware you will be using an IP-camera.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the IP capture device can be found in the **config/capture.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
You can use the Raspberry Pi Camera Module with Kerberos.io. You just need [**to attach the camera module**](https://www.raspberrypi.org/help/camera-module-setup/) and you're ready to go. The Raspberry Pi Camera Module is enabled by default in the web.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Raspberry Pi Camera Module can be found in the **config/capture.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
It can be helpful to **enable or disable Kerberos.io at specific times**. Therefore the time condition makes it possible to select a time range for each day of the week. When the current time is within the time range, Kerberos.io will be enabled.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Time condition can be found in the **config/condition.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
This condition makes it possible to **disable/enable Kerberos.io**, with a simple true/false parameter. This is helpful when you're expecting a lot of activity, and you don't want Kerberos.io to trigger all those events.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Time condition can be found in the **config/condition.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
@@ -19,8 +15,6 @@ The parameters of the Time condition can be found in the **config/condition.xml*
|
||||
|
||||
</conditions>
|
||||
|
||||
|
||||
|
||||
### Active
|
||||
|
||||
The active field is boolean value (true/false). When the active field is true, Kerberos.io is enabled, if not it's disabled.
|
||||
|
||||
@@ -14,13 +14,9 @@ The main idea of the Colins et al. method, is that it will erase "ghosting". In
|
||||
|
||||
A more detailed explanation can be found [here](http://blog.cedric.ws/opencv-simple-motion-detection).
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Differential image algorithm can be found in the *config/algorithm.xml* file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
The parameters of the Differential images algorithm can be found in the *config/algorithm.xml* file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
<algorithms>
|
||||
|
||||
|
||||
53
72_machinery/81_algorithms/2_background_subtraction.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Background subtraction
|
||||
|
||||
This Background subtraction algorithm is **a more advanced** method in comparison to the **Differential images** method. The key difference is that it uses and calculates a background image. Images taken from the capture device are then subtracted from the background image, resulting in a more robust segmentation of the foreground. As this method is more accurate, it also **consumes a lot more CPU power and memory**; the background model is adapted by every iteration.
|
||||
|
||||
The algorithm is described in [**following paper**](http://personal.ee.surrey.ac.uk/Personal/R.Bowden/publications/avbs01/avbs01.pdf).
|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Background images algorithm can be found in the *config/algorithm.xml* file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
<algorithms>
|
||||
|
||||
<BackgroundSubtraction>
|
||||
<shadows type="text">true</shadows>
|
||||
<history type="number">50</history>
|
||||
<nmixtures type="number">5</nmixtures>
|
||||
<ratio type="number">1</ratio>
|
||||
<erode type="number">5</erode>
|
||||
<dilate type="number">7</dilate>
|
||||
<threshold type="number">20</threshold>
|
||||
</BackgroundSubtraction>
|
||||
|
||||
</algorithms>
|
||||
|
||||
### Shadows
|
||||
|
||||
The shadows parameter is a true or false. By using this parameter you can make the Background subtraction a little bit more intelligent; to **neglect shadows in the foreground model**.
|
||||
|
||||
### History
|
||||
|
||||
This is an integer which tells the system, **the amount of images the system should take into account (history)**, to calculate the background model. The higher the history integer, the more images it will use to calculate the background model. By **increasing the history** you get **a more stable background** model, but a **less flexibl**e. As more images from the past are taken into account, the slower the background model will adapt to a new scenario. E.g. when a car drives into your street, and stands still for 5 minutes.
|
||||
|
||||
Finding the ideal history parameters, depends heavily in the application you want to use it. In practice this **is achieved by trial and error**.
|
||||
|
||||
### NMixtures
|
||||
|
||||
Sets the number of gaussian components in the background model.
|
||||
|
||||
### Ratio
|
||||
|
||||
If a foreground pixel keeps semi-constant value for about backgroundRatio*history frames, it’s considered background and added to the model as a center of a new component.
|
||||
|
||||
### Erode
|
||||
|
||||
Find a more detailed explanation at the [**Differential images section**](algorithms/Differential_images).
|
||||
|
||||
### Dilate
|
||||
|
||||
Dilate is exactly the same as the erode parameter, except that it has the reverse behaviour; instead of removing isolated pixels it will connect them. The dilate function is mainly used in segmentation techniques, to create **a more complete segment**; it fills gaps. The higher the number of the erode parameter, the more aggressive the dilating will be.
|
||||
|
||||
### Threshold
|
||||
|
||||
Find a more detailed explanation at the [**Differential images section**](algorithms/Differential_images).
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
This rectangle is a trivial expositor. A rectangle region can be defined to constrain the locations of pixels of interest; for example if you only want to have detection at your front door. The rectangle repositor will return the bounding rectangle of the pixels of interest.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the rectangle expositor can be found in the **config/expositor.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
|
Before Width: | Height: | Size: 560 KiB After Width: | Height: | Size: 659 KiB |
@@ -2,8 +2,6 @@
|
||||
|
||||
This hull is a more complex expositor than the rectangle. A hull can be selected with the web, you can select one or more coordinates to create a flexible region. The coordinates can be adjusted afterwards and be removed by double clicking on the coordinate. You can expand the hull by removing the start coordinate, which is marked by the white bullet.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
This is a trivial heuristic. The sequence heuristic will store a single integer in memory, that will count the numbers of valid detections. When the heuristic will detect a false detection, it will decrease the count. The sequence heuristic will return true, if a threshold is reached; for example when something was detected three times in a row.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Sequence heuristic can be found in the **config/heuristic.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
|
After Width: | Height: | Size: 416 KiB |
BIN
72_machinery/83_heuristics/2_counter-heuristic-trajectory.png
Normal file
|
After Width: | Height: | Size: 463 KiB |
BIN
72_machinery/83_heuristics/2_counter-heuristic.png
Normal file
|
After Width: | Height: | Size: 510 KiB |
88
72_machinery/83_heuristics/2_counter.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Counter
|
||||
|
||||
**Counting objects/people** forms the basis for a range of high-tech solutions, including retail analytics, queue management, building management and security applications. By using the counter heuristic **you can count incoming and outgoing objects** (e.g. people). By defining two lines, the counter heuristics can count the incoming (green line) and outgoing (red line) objects.
|
||||
|
||||

|
||||
|
||||
The quality of the Counter heuristic depends heavily on the accurancy of the chosen algorithm (Differential, Background subtraction, etc). Therefore **we recommend** to use the **Background Subtraction algorithm** as this is the most accurate one; the algorithm is used for segmentation and it will distinguish background and foreground.
|
||||
|
||||
After the algorithm did its magic, the segmented image is used by the Counter heuristic to calculate some features: the **center of mass** is calculated for each foreground segment, and is stored in memory together with the height and width of the segment. By using the coordinates of the center of mass a trajectory is calculated.
|
||||
|
||||
$$ \texttt{mu} \_{ji}= \sum \_{x,y} \left ( \texttt{array} (x,y) \cdot (x - \bar{x} )^j \cdot (y - \bar{y} )^i \right ) $$
|
||||
|
||||
$$ \bar{x} = \frac{\texttt{m}\_{10}}{\texttt{m}\_{00}} , \; \bar{y} = \frac{\texttt{m}\_{01}}{\texttt{m}\_{00}} $$
|
||||
|
||||

|
||||
|
||||
While the capture device is taking images, the counter heuristic will calculate the features (as mentioned before) for every subsequent frame. When calculated **the heuristic will search for the best match**: the closest, in terms of distance, center of mass is searched from the previous calculation. When the best match is found the center of mass (with its features) is added to the feature list of the best match; or if not found, a new feature list is created.
|
||||
|
||||
|
||||
The idea of the feature list is that it contains the trajectory of an object which is moving from one point to another (a person walking by). A feature list exists for every moving object in the viewport of the camera and each feature list contains the sequence of center of masses (the x- and y-coordinates of the object).
|
||||
|
||||
After the center of masses are calculated, existing feature lists are expanded or new feature lists are created (the start of a new object). By using the feature lists, **the direction of the moving objects** can be calculated, as it contains the initial center of mass and the last found center of mass.
|
||||
|
||||

|
||||
|
||||
As we know the trajectory of an object (and thus its direction), the intersection is calculated with the incoming (green line) and outgoing (red line). If the trajectory intersects both incoming and outgoing lines, the direction of the trajectory is used to determine which line was interesected first (and this is an incoming or outgoing object).
|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Counter heuristic can be found in the **config/heuristic.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
<heuristics>
|
||||
|
||||
<Counter>
|
||||
<appearance type="number">5</appearance>
|
||||
<maxDistance type="number">90</maxDistance>
|
||||
<minArea type="number">1400</minArea>
|
||||
<onlyTrueWhenCounted type="bool">true</onlyTrueWhenCounted>
|
||||
<minimumChanges type="number">20</minimumChanges>
|
||||
<noMotionDelayTime type="number">1000</noMotionDelayTime>
|
||||
<markers type="twolines">100,100|100,200|200,100|200,200</markers>
|
||||
</Counter>
|
||||
|
||||
</heuristics>
|
||||
|
||||
### Appearance
|
||||
|
||||
The appearance parameters works as a time-out value. If a feature lists hasn't been updated for x (appearance) times in a row, it's removed. The idea is that when an object has moved outside the viewport of the camera, it can't be tracked anymore.
|
||||
|
||||
### Max Distance
|
||||
|
||||
While calculating the center of masses, the best match is searched for each one. As the best match is calculated in function of the distance, a maximum distance is used to limit the matching process.
|
||||
|
||||
### Min Area
|
||||
|
||||
The center of mass is calculated for each segment which has an area which is larger than the minimum area.
|
||||
e
|
||||
### Only true when counted
|
||||
|
||||
By default the heuristic will only return true when one or more objects are marked as incoming or outgoing. However by unchecking this option you can make the heuristic return true when something changed (same behaviour as the sequence heuristic). The idea is that one wants to track the incoming and outgoing objects, but also want to have images for every change.
|
||||
|
||||
### Minimum changes
|
||||
|
||||
The heuristic will only procede true if enough changes have been detected.
|
||||
|
||||
### No motion delay time
|
||||
|
||||
When the heuristic is not valid, the heuristic will idle for some time.
|
||||
|
||||
### Markers
|
||||
|
||||
The start- and en-coordinates of both the incoming and outgoing lines (delimited by the pipe symbol).
|
||||
|
||||
## Output
|
||||
|
||||
The whole point of the counter heuristic is counting objects. Therefore when one or more incoming or outgoing objects are detected the results are added to the JSON object which is passed along the four passway. The JSON object can be retrieved by using the [**Webhook IO device**](/machinery/Outputs/webhook).
|
||||
|
||||
[
|
||||
'regionCoordinates' : [618, 317, 703, 493],
|
||||
'numberOfChanges' : 5446,
|
||||
'incoming' : 0,
|
||||
'outgoing' : 1,
|
||||
'timestamp' : '1465894497',
|
||||
'microseconds' : '5-97451',
|
||||
'token' : 695,
|
||||
'pathToImage' : '1465894497_5-97451_frontdoor_618-317-703-493_5446_695.jpg',
|
||||
'instanceName' : 'frontdoor',
|
||||
]
|
||||
BIN
72_machinery/84_Outputs/1_disk-io-timestamp.png
Normal file
|
After Width: | Height: | Size: 291 KiB |
@@ -2,20 +2,18 @@
|
||||
|
||||
An image can be saved to disk.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the Disk output device can be found in the **config/io**.xml file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
<ios>
|
||||
|
||||
<Disk>
|
||||
<Disk>
|
||||
<fileFormat type="text">timestamp_microseconds_instanceName_regionCoordinates_numberOfChanges_token.jpg</fileFormat>
|
||||
<directory type="directory">/etc/opt/kerberosio/capture</directory>
|
||||
</Disk>
|
||||
<directory type="text">/etc/opt/kerberosio/capture/</directory>
|
||||
<markWithTimestamp type="bool">false</markWithTimestamp>
|
||||
<timestampColor type="text">white</timestampColor>
|
||||
</Disk>
|
||||
|
||||
</ios>
|
||||
|
||||
@@ -26,3 +24,13 @@ The format that will be used for the name of the image. One or more variables ca
|
||||
### Directory
|
||||
|
||||
The directory where the image will be saved to. By default images are saved to the **/etc/opt/kerberosio/capture** directory.
|
||||
|
||||
### Mark with timestamp
|
||||
|
||||
When true images are marked with a timestamp.
|
||||
|
||||

|
||||
|
||||
### Timestamp color
|
||||
|
||||
A color can be defined for timestamp: white, black, red, green and blue.
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
The TCP/IP client will send a TCP packet to a server.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the TCP/IP client can be found in the **config/io.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
|
||||
A GPIO pin can be set as output device.
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the GPIO pin can be found in the **config/io.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
|
||||
@@ -3,11 +3,6 @@
|
||||
Detailed information (a JSON object) is send as a POST request to a webhook. The JSON object contains the number of changes, the region, the URL of the image, etc.
|
||||
|
||||
**Make sure that the Webhook comes after the Disk device, otherwise the URL of the image is not included.**
|
||||
|
||||
## Web
|
||||
|
||||

|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters of the webhook can be found in the **config/io.xml** file, but you can also use the web to modify the parameters. Below you see a default configuration file.
|
||||
@@ -22,4 +17,4 @@ The parameters of the webhook can be found in the **config/io.xml** file, but yo
|
||||
|
||||
### Url
|
||||
|
||||
This is the URL, to which Kerberos will send a JSON object (as a POST request).
|
||||
This is the URL, to which Kerberos.io will send a JSON object (as a POST request).
|
||||
@@ -1,13 +1,16 @@
|
||||
# Heuristic
|
||||
|
||||
* [Sequence](#sequence)
|
||||
* [Counter](#counter)
|
||||
|
||||
When the expositor detected one or more regions, a heuristic will evaluate, the current and previous evaluations. This step is less loosly coupled as the connection between algorithms and expositors, because it can require specific parameters from the expositor or algorithm.
|
||||
|
||||
However, the main convention is that an expositor would always modify a JSON object with minimal information; as explained above, one or more regions and the number of pixels of interest. For flexibility, one can choose to add additional parameters or remove (required) parameters. Therefore it is possible that some expositors can't be used with some heuristics; we strongly disrecommend this feature.
|
||||
|
||||
To keep things simple: a heuristic is some kind of memory which makes decision and tells Kerberos if the evaluation was true or false.
|
||||
The heuristic is the last step in the four passway which will decide if the detection is valid or not. It will do this by using information from the previous steps (the expositor and the algorithm); e.g. number of changed pixels.
|
||||
|
||||
<a name="sequence"></a>
|
||||
## Sequence
|
||||
This is a trivial heuristic. The sequence heuristic returns true if the recognition was positive for x times in a row.
|
||||
In most cases motion contains a sequence of events; for example someone who walks by or a car which is parking on the street. The sequence heuristic will measure this by returning true if the recognition was positive for x times in a row. By using this heuristic most of the false-positives (invalid detections) are removed.
|
||||
|
||||
<a name="counter"></a>
|
||||
## Counter
|
||||
Counting objects forms the basis for a range of high-tech solutions, including retail analytics, queue management, building management and security applications. By using this counter heuristic you can count incoming and outgoing objects (e.g. people).
|
||||
|
||||

|
||||
30
72_machinery/92_streaming.md
Normal file
@@ -0,0 +1,30 @@
|
||||
# Streaming
|
||||
|
||||
The machinery has the ability to stream your capture device as a MJPG stream.
|
||||
|
||||
## Parameters
|
||||
|
||||
The parameters for the supported streaming protocols can be found in the *config/stream.xml* file, but you can also use the web to modify the parameters. Below you see a default configuration file; at the moment of writing only a MJPG stream is supported.
|
||||
|
||||
<streams>
|
||||
|
||||
<Mjpg>
|
||||
<enabled type="bool">true</enabled>
|
||||
<streamPort type="number">8889</streamPort>
|
||||
<quality type="number">75</quality>
|
||||
</Mjpg>
|
||||
|
||||
</streams>
|
||||
|
||||
|
||||
### Enabled
|
||||
|
||||
A boolean which turns ON/OFF the stream. This is interesting when working with IP cameras, where you already have an RTSP/MJPG stream from the camera itself.
|
||||
|
||||
### Stream Port
|
||||
|
||||
The port on which the stream is available.
|
||||
|
||||
### Quality
|
||||
|
||||
The quality is a value between [0-100]. The lower the quality, the more the image will be compressed.
|
||||
55
73_addons/4_People_Counting.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# People Counting
|
||||
|
||||
Kerberos.io can be used as a people counter by selecting the [**Counter heuristic**](/machinery/heuristics/counter). The idea is that two lines are drawn: the incoming and the outgoing line. Those two lines are necessary to know if the object is incoming or outgoing.
|
||||
|
||||

|
||||
|
||||
If one ore more objects crossed both lines, the number of the incoming and outgoing objects are written to a JSON object (for more information see the [**Counter heuristic**](/machinery/heuristics/counter)). By using the [**Webhook IO device**](/machinery/Outputs/webhook) it's possible to fetch the JSON object and visualize it in your browser.
|
||||
|
||||

|
||||
|
||||
In this tutorial we'll show you how to configure **Kerberos.io**, so that it can be **used as a People counter**, and build a real-time counter which shows the number of incoming and outgoing objects (see screenshot above).
|
||||
|
||||
## Let's get started
|
||||
|
||||
To get started, make sure you have properly [**installed Kerberos.io**](/installation/KiOS) on your device. After the installation go to the settings page and change the settings to following configuration:
|
||||
|
||||
* Algorithm: Background Subtraction,
|
||||
* Heuristic: Counter and
|
||||
* Io: Disk and Webhook.
|
||||
|
||||
### Specific the incoming and outgoing lines
|
||||
|
||||
When opening the counter heuristic, you'll see two lines (a green and red one) which you can move to the position you prefer. Important to note is that the green line is used for counting incoming objects and the red line for outgoing objects. E.g. if we want to count the people which are entering your home, you should arrange the lines as follows.
|
||||
|
||||

|
||||
|
||||
### Specify the webhook url
|
||||
|
||||
The **Webhook Io device** is used to send the number of incoming and outgoing objects to your own application; therefore we need to specify an endpoint to which the webhook will post the JSON object (e.g. your own API). We will demonstrate how this works with a traditional NodeJS application, which we will create in next paragraph. The application will run on our local machine, and listen on port 25000, therefore we need to change the url of the webhook to:
|
||||
|
||||
http://localhost:250000
|
||||
|
||||
### GUI
|
||||
|
||||
We will create a simple **nodejs** application using **socket.io** which will listen on port 250000 for **POST** events. When the application receives a **POST** event, it will dynamically increase the incoming and/or outgoing counters. To get started we will clone following repository:
|
||||
|
||||
git clone https://github.com/cedricve/kerberosio-people-counter
|
||||
cd kerberosio-people-counter
|
||||
|
||||
After the repository is cloned succesfully we will download the necessary packages using **npm**.
|
||||
|
||||
npm install
|
||||
|
||||
Run the app with following command
|
||||
|
||||
node server.js
|
||||
|
||||
Following output will be generated:
|
||||
|
||||
info - socket.io started
|
||||
Server running on port 25000
|
||||
|
||||
Open your browser and browse to **http://localhost:25000**
|
||||
|
||||

|
||||
BIN
73_addons/4_people_counting.png
Normal file
|
After Width: | Height: | Size: 510 KiB |
BIN
73_addons/4_people_counting_gui.png
Normal file
|
After Width: | Height: | Size: 432 KiB |
BIN
73_addons/4_people_counting_hostname.png
Normal file
|
After Width: | Height: | Size: 319 KiB |
BIN
73_addons/4_people_counting_lines.png
Normal file
|
After Width: | Height: | Size: 554 KiB |