wintIoTeam / Internet of Thieves

Alarm system for your home


The LoRaHomeSecurity system allows you to monitor your home in simple yet powerful way. When someone activates the motion sensor while your are not home you will be instantly informed on your smartphone. The thief will we scared by the alarm and immediately leave.

Since it's energy autonomous and independent from your home WiFi connection the system can work even more reliably compared to existing solutions. Further, you can attach motion activated beacons on some objects of interest (TV, Safe, etc). When one of this beacons is moved and starts to advertise, the LoRaHomeSecurity will also inform you.

When you come home the system will automagically recognise you by a beacon you wear on your keychain and disables the alarm. When you leave your house LoRaHomeSecurity will enable the alarm.

You can add keychain Beacons placing then near your smartphone. With 2 clicks the ID is added to the system and ready to be used. The same goes for the motion sensible Beacons which trigger the alarm.

Technical Documentation



  • BLE Reader
  • LoRa Radio
  • Presence detector


  • Spring Application (RESTful API)
  • MongoDB

iOS App

  • BLE Configurator
  • Alarm Monitor


alt text

Principle of operation of the Node

The node has 3 tasks: Alarm Hostile BLE * Ping

At the beginning of each cycle the Alarm Task is executed. After that, the conditions are met the Hostile BLE and the Ping tasks are executed.


The system has 3 states: Alarm Disabled Alarm Enables * Alarm Fired

Alarm Task

The Alarm task checks whether an alarm occurred. It checks if the flag “motion_detected” is set to true. This flag is set by an interrupt function triggered by the motion sensor. Before sending an alarm, the system listens for 5s on BLE Advertisement packets. If a friendly beacon is received, the alarm won’t be sent. Hostile BLE Task This task checks if a hostile BLE Tag is around. This task enables the BLE Chips and listens during 5 seconds. This task is executed every 30 seconds. The variable “next_hostile_ble_task” contains the timestamp of the next scheduled execution.

Ping Task

Like the Hostile BLE task, it will be executed on a regular basis. The variable “next_ping_task” stores the timestamp of the next planned execution. The default interval is 60s.


A timer executes the “kick_sys_timer” function every seconds. This function increments the “system_time_seconds” variable


The rgb LED can assume 3 different states: Off: in the case the system is in the “Alarm_Disabled” state Green: when the system is in the state “Alarm_Enables” Red: when the system is in the “Alarm_Fired” state

Team Members:

  • Mathias Gugg
  • Mirco Gysin
  • Benjamin Häring
  • Jonas Schoch

Project homepage » Source code

Last update: 2015-11-06
Maintained by: isperman

Launched at IoT Hackathon « all projects