Add README
This commit is contained in:
		
							
								
								
									
										81
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
# 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.
 | 
			
		||||
		Reference in New Issue
	
	Block a user