91 lines
1.8 KiB
Markdown
91 lines
1.8 KiB
Markdown
# Protoflap
|
|
|
|
Controls the welcome room Vestaboard directly, bypassing their cloud.
|
|
|
|

|
|
|
|
## Theory
|
|
|
|
Polls URL (https://api.my.protospace.ca/stats/) continuously and looks for
|
|
changes to the `vestaboard` key. When updated, it replaces any special
|
|
characters and then displays the message on the sign via serial.
|
|
|
|
If you want to use this, just call `send_sign(text)` in protoflap.py directly.
|
|
|
|
The split flap controller is connected to serial at `/dev/ttyAMA0`, 38400 baud.
|
|
|
|
### See Also
|
|
|
|
@Benno1308's reverse engineering:
|
|
|
|
https://github.com/EngineOwningSoftware/Vestaboard-Reverse-Engineering
|
|
|
|
https://www.reddit.com/r/Vestaboard/comments/tjm93n/local_device_api/
|
|
|
|
## Setup
|
|
|
|
Download the Vestaboard root private key. It should be the same for all
|
|
Vestaboards:
|
|
|
|
```
|
|
$ curl https://files.catbox.moe/kvibj6 > ~/.ssh/vestaboard
|
|
$ chmod 600 ~/.ssh/vestaboard
|
|
```
|
|
|
|
SSH into the Vestaboard using the root key, ie:
|
|
|
|
```
|
|
$ ssh -i ~/.ssh/vestaboard root@10.139.85.133
|
|
```
|
|
|
|
### Script
|
|
|
|
Clone the script:
|
|
|
|
```
|
|
# git clone https://github.com/Protospace/protoflap.git
|
|
```
|
|
|
|
Test it:
|
|
|
|
```
|
|
# cd protoflap/
|
|
# python protoflap.py
|
|
```
|
|
|
|
### Supervisor
|
|
|
|
To run the script automatically, install supervisor:
|
|
|
|
```
|
|
# apt install supervisor
|
|
# touch /etc/supervisor/conf.d/protoflap.conf
|
|
# vim /etc/supervisor/conf.d/protoflap.conf
|
|
```
|
|
|
|
Set config to:
|
|
|
|
```
|
|
[program:protoflap]
|
|
user=root
|
|
directory=/root/protoflap
|
|
command=/usr/bin/python /root/protoflap/protoflap.py
|
|
stopsignal=INT
|
|
stopasgroup=true
|
|
killasgroup=true
|
|
autostart=true
|
|
autorestart=true
|
|
stderr_logfile=/var/log/protoflap.log
|
|
stderr_logfile_maxbytes=10MB
|
|
stdout_logfile=/var/log/protoflap.log
|
|
stdout_logfile_maxbytes=10MB
|
|
```
|
|
|
|
Load changes:
|
|
|
|
```
|
|
# supervisorctl reread; supervisorctl update
|
|
# supervisorctl status
|
|
```
|
|
|