scanner | ||
website | ||
README.md |
CZI presence detector
Tool to detect and publish the presence of defined devices by their WiFi MAC addresses.
How scanning works
Sets the wifi adapter into monitor mode, then listens to surrounding packets listing all detected devices into wifi_map.yaml
.
Then, periodically filters the results by the mac addresses that opted in on the website from identities.json
and sends all matched identities to the website via a signed webhook. This website stores the presence information locally and displays it with website/index.php
with a timestamp of the last update.
What the website is capable of
Shows the last update of the uploader.py
routine. It also allows to add identities by their name and mac and to delete identities by their mac. The mac addresses are hashed server-side and then stored into the world-accessible identities.json
.
Set-up
Dependencies:
- Scanner/Uploader: Python3, trackerjacker (pip3)
- Website: php
Configs to change:
scanner/scanner.sh
:- WiFi adapter name
- Possibly some more system-specific changes
scanner/uploader.py
:- base URL for webhook and identities
- webhook secret
public/update.php
:- webhook secret
Put scanner
onto the scanning device (e.g. Raspberry Pi). Let scanner.sh
and uploader.pu
running in the background, e.g. by the Systemd services below.
Put website
onto a php-capable webserver and point your domain to it.
Systemd services
Service for scanning packets in the background
[Unit]
Description=CZI Presence Detector - Scanner
After=network.target
[Service]
User=root
Group=root
Restart=always
WorkingDirectory=/path/to/scanner
ExecStart=/path/to/scanner.sh
[Install]
WantedBy=multi-user.target
Service for uploading every $n seconds
[Unit]
Description=CZI Presence Detector - Uploader
After=network.target
[Service]
User=pi
Group=pi
Restart=always
WorkingDirectory=/path/to/scanner
ExecStart=/path/to/uploader.py
[Install]
WantedBy=multi-user.target