82 lines
1.7 KiB
Markdown
82 lines
1.7 KiB
Markdown
|
# Airlock
|
||
|
|
||
|
Door controller for scanning Protospace member cards on the front and back doors.
|
||
|
|
||
|
## Setup
|
||
|
|
||
|
Ensure Pi user has read permissions to /dev/ttyACM0.
|
||
|
|
||
|
Install dependencies:
|
||
|
|
||
|
```text
|
||
|
$ sudo apt update
|
||
|
$ sudo apt install python3 python3-pip python-virtualenv python3-virtualenv
|
||
|
```
|
||
|
|
||
|
Clone this repo:
|
||
|
|
||
|
```text
|
||
|
$ git clone https://github.com/Protospace/airlock.git
|
||
|
$ cd airlock
|
||
|
```
|
||
|
|
||
|
### Watchdog
|
||
|
|
||
|
For the watchdog to work, we need write access to `/dev/watchdog/`.
|
||
|
|
||
|
Configure `/etc/udev/rules.d/60-watchdog.rules`:
|
||
|
|
||
|
```text
|
||
|
KERNEL=="watchdog", MODE="0666"
|
||
|
```
|
||
|
|
||
|
### Main Script
|
||
|
|
||
|
Create a venv, activate it, and install:
|
||
|
|
||
|
```text
|
||
|
$ virtualenv -p python3 env
|
||
|
$ source env/bin/activate
|
||
|
(env) $ pip install -r requirements.txt
|
||
|
```
|
||
|
|
||
|
Start an empty card-data.json:
|
||
|
|
||
|
```text
|
||
|
(env) $ echo "{}" > card-data.json
|
||
|
```
|
||
|
|
||
|
Now you can run the script to test:
|
||
|
|
||
|
```text
|
||
|
(env) $ python main.py
|
||
|
```
|
||
|
|
||
|
## Process management
|
||
|
|
||
|
The script is kept alive with [supervisor](https://pypi.org/project/supervisor/).
|
||
|
|
||
|
Configure `/etc/supervisor/conf.d/airlock.conf`:
|
||
|
|
||
|
```text
|
||
|
[program:airlock]
|
||
|
user=pi
|
||
|
directory=/opt/airlock
|
||
|
command=/opt/airlock/env/bin/python -u main.py
|
||
|
stopsignal=INT
|
||
|
autostart=true
|
||
|
autorestart=true
|
||
|
stderr_logfile=/var/log/airlock.log
|
||
|
stderr_logfile_maxbytes=10MB
|
||
|
stdout_logfile=/var/log/airlock.log
|
||
|
stdout_logfile_maxbytes=10MB
|
||
|
```
|
||
|
|
||
|
Script logs to /var/log/airlock.log. Remove `-u` from the above command when you're done testing.
|
||
|
|
||
|
## License
|
||
|
|
||
|
This program is free and open-source software licensed under the MIT License. Please see the `LICENSE` file for details.
|
||
|
|
||
|
That means you have the right to study, change, and distribute the software and source code to anyone and for any purpose. You deserve these rights.
|