pslockout/doorcontrol/README.md

86 lines
1.8 KiB
Markdown
Raw Normal View History

# Protospace lockout card updater
Runs on the door controller and updates the auth server with member cards.
## Setup
### Cloning
Clone to user `pi`'s home directory. If you'd like to place it elsewhere, adjust the supervisor config below.
```
$ cd
$ git clone https://gogs.tannercollin.com/tanner/pslockout
```
### Python
```
$ sudo apt install python3 python3-pip python3-virtualenv # for Debian
$ cd ~pi/pslockout/doorcontrol
$ virtualenv -p python3 env
$ . env/bin/activate
(env) $ pip install -r requirements.txt
(env) $ deactivate
```
### Supervisor
Supervisor is used to keep the script always running.
```
$ sudo apt install supervisor
```
Create a file named /etc/supervisor/conf.d/pushcards.conf and add:
```
[program:pushcards]
user=pi
directory=/home/pi/pslockout/doorcontrol
command=/bin/bash -c 'source env/bin/activate && python pushcards.py'
autostart=true
autorestart=true
stderr_logfile=/var/log/pushcards.log
stderr_logfile_maxbytes=1MB
stdout_logfile=/var/log/pushcards.log
stdout_logfile_maxbytes=1MB
```
### settings.json
Copy the example and insert a lockout admin's auth token:
```
$ cd ~pi/pslockout/doorcontrol
$ cp settings.json.example settings.json
$ vim settings.json
```
You can find your auth token by requesting it with `curl`:
```
$ curl -d username=tanner.collin -d password=supersecret http://tools-auth.protospace.ca/login/
{
"token": "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"
}
```
### Launch
Reload supervisor to start pushcards:
```
$ sudo supervisorctl reread
$ sudo supervisorctl update
```
## Theory of Operation
Every ten seconds the script checks to see if the card database has changed.
If it was modified, it reads the card numbers into a Python object.
It then sends the object (modified or not) to the auth server which updates the cards for any users found in the system.