You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
2.0 KiB

4 years ago
# Airlock
Door controller for scanning Protospace member cards on the front and back doors.
## Setup
Install dependencies:
```text
$ sudo apt update
1 year ago
$ sudo apt install python3 python3-pip python3-virtualenv supervisor git
4 years ago
```
Clone this repo:
```text
$ git clone https://github.com/Protospace/airlock.git
4 years ago
$ sudo mv airlock/ /opt/
$ cd /opt/airlock
4 years ago
```
1 year ago
### Hardware Access
4 years ago
1 year ago
Ensure Pi user has read permissions to `/dev/ttyACA0` and `/dev/watchdog`.
4 years ago
1 year ago
Configure `/etc/udev/rules.d/local.rules`:
4 years ago
```text
1 year ago
ACTION=="add", KERNEL=="dialout", MODE="0666"
ACTION=="add", KERNEL=="ttyACM0", MODE="0666"
ACTION=="add", KERNEL=="ttyAMA0", MODE="0666"
4 years ago
KERNEL=="watchdog", MODE="0666"
```
1 year ago
Also ensure `/boot/cmdline.txt` doesn't contain `console=serial0,115200`.
Then reboot:
```text
$ sudo reboot
```
4 years ago
### Main Script
Create a venv, activate it, and install:
```text
$ virtualenv -p python3 env
$ source env/bin/activate
(env) $ pip install -r requirements.txt
```
4 years ago
Start an empty card_data.json:
4 years ago
```text
4 years ago
(env) $ echo "{}" > card_data.json
4 years ago
```
Now you can run the script to test:
```text
4 years ago
(env) $ DEBUG=true python main.py
4 years ago
```
1 year ago
Copy and edit the settings file:
```text
(env) $ cp secrets.py.example secrets.py
(env) $ vim secrets.py
```
4 years ago
## 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
4 years ago
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.