Skip to content
A 3-component fog based, intrusion detection system with basic threat detection mechanisms. Using a Raspberry Pi Zero, a beefy RPi 3, and NodeMCU modules
Python C++ Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Intrusion Detector

CC Project


edge device

captures and transfers camera feed to the server for further processing

AI powered analyzer

analyzes and classifies the camera feed from the edge camera device

pubsub broker

facilitates pub sub communication in the system

intrusion response

iot module subscribing to alerts from the AI powered analyzer. responsible for responding to detected threats.


different parts are designed to work and communicate separately, this is not the most efficient way of building this system but it would allow total separation of task plus would let us use different languages and technologies and mix and match easily.


use config.ini files in to setup the communication (in edge/communication/) and the server app (in server/)



we use pipenv for managing python environments. Use pipenv to handle, install and run the python parts of the framework

whereever you see a Pipfile you'll need to run pipenv install to install the dependencies. Then use pipenv run python PYTHONFILEHERE to execute a python script

pubsub broker

run the following command to start a "mosquitto" broker in docker. docker run -d --name mqtt-broker -p 1883:1883 -p 9001:9001 eclipse-mosquitto don't forget to open ports 1883 and 9001 to the publishers and subscribers


  • implement and test different components separately
  • scheduled image capturing
  • integration tests
  • Ansible support
  • performance and timing analysis (cloud vs fog setup)
    • unify configuration of different settings (pubsub sever settings, detector server etc): env variables
    • implement end to end time measurement
  • better ML powered threat detection: Google's quickdraw doodle classifier?
  • use a logger instead of print statements
You can’t perform that action at this time.