airlock-dvslc/README.md
2023-03-15 14:00:41 -06:00

100 lines
2.0 KiB
Markdown

# Airlock
Door controller for scanning Protospace member cards on the front and back doors.
## Setup
Install dependencies:
```text
$ sudo apt update
$ sudo apt install python3 python3-pip python3-virtualenv supervisor git
```
Clone this repo:
```text
$ git clone https://github.com/Protospace/airlock.git
$ sudo mv airlock/ /opt/
$ cd /opt/airlock
```
### Hardware Access
Ensure Pi user has read permissions to `/dev/ttyACA0` and `/dev/watchdog`.
Configure `/etc/udev/rules.d/local.rules`:
```text
ACTION=="add", KERNEL=="dialout", MODE="0666"
ACTION=="add", KERNEL=="ttyACM0", MODE="0666"
ACTION=="add", KERNEL=="ttyAMA0", MODE="0666"
KERNEL=="watchdog", MODE="0666"
```
Also ensure `/boot/cmdline.txt` doesn't contain `console=serial0,115200`.
Then reboot:
```text
$ sudo reboot
```
### 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) $ DEBUG=true python main.py
```
Copy and edit the settings file:
```text
(env) $ cp secrets.py.example secrets.py
(env) $ vim secrets.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
stopasgroup=true
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.