CZI_presence_detector/README.md

61 lines
No EOL
2 KiB
Markdown

# 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
```systemd
[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
```systemd
[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
```