Lesser fork of retropilot-server https://spacecruft.org/retropilot/retropilot-server/
 
 
 
Go to file
Adam Black 0d49d5ce6c Added tests 2021-05-22 17:33:28 +01:00
certs TODO: initial retropilot-server commit 2021-05-16 04:35:18 +02:00
controllers Added tests 2021-05-22 17:33:28 +01:00
models split api & useradmin into their own routes 2021-05-21 23:17:11 +01:00
routes Added tests 2021-05-22 17:33:28 +01:00
static TODO: initial retropilot-server commit 2021-05-16 04:35:18 +02:00
test Added tests 2021-05-22 17:33:28 +01:00
.gitignore Added tests 2021-05-22 17:33:28 +01:00
LICENSE Initial commit 2021-05-16 04:24:48 +02:00
README.md Update README.md 2021-05-18 05:34:28 +02:00
config.sample.js FIX: config.sample.js database.sqlite 2021-05-18 05:35:22 +02:00
database.empty.sqlite Partial refactoring of v1.3/:dongleId/upload_url/, less code, started putting things into their own models. 2021-05-19 22:55:19 +01:00
package.json Added tests 2021-05-22 17:33:28 +01:00
server.js Added tests 2021-05-22 17:33:28 +01:00
worker.js removed import from worker.js, will switch everything over to import in future commit 2021-05-21 23:21:06 +01:00

README.md

retropilot-server

replacement for comma.ai backend and useradmin dashboard. can be combined with a modified cabana instance.

[Server] Summary

The server consists of 2 node scripts.

server.js is using expressjs and runs the backend (file upload / communication with openpilot) and the useradmin dashboard to manage / view / download drives & logs. worker.js is a background worker that is processing drives (analyzing video files & logs) to prepare drives for playback in cabana and to gather statistics. It automatically terminates itself after 60 minutes to make sure the video/log libraries do not cause memory leaks.

Both scripts can be started with a cronjob each minute, they use locking to make sure they run exclusively.

Attention: Minimum required node version is node 10.

[Server] Installation

npm install
cp config.sample.js config.js
cp database.empty.sqlite database.sqlite
> EDIT config.js

[Server] Running

node -r esm server.js
node -r esm worker.js

[Server] CABANA Support

Currently, cabana support is enabled through a custom cabana fork that is requesting drive information from retropilot-server and uses the demo.js structure from cabana to load a drive. At the moment, this limits some features like sharing (sharing the URL will publicly share a drive) and also limits caching / automatically selecting the correct dbc.

To setup a cusom cabana server, check this repository and set the correct cabana url in config.js: https://github.com/florianbrede-ayet/retropilot-cabana


Preparing OpenPilot Device

Option (a) By modying endpoint URL in OpenPilot

The only replacement required in code is in common/api/__init__.py:

def api_get(endpoint, method='GET', timeout=None, access_token=None, **params):
  backend = "https://api.commadotai.com/" # replace with the RetroPilot server

Option (b) Without code changes (not functional yet)

Re-Registering OpenPilot Device

To re-register a freon previously registered on comma or a different server, you have to remove the old dongleId and reboot:

rm /data/params/d/DongleID
reboot

Current Limitations

Right now, the OpenPilot dashboard does not display any statistics or pairing status. The reason is that at least pre 0.8.3, the offroad.apk with react and comma-api is for some reason either ignoring /etc/hosts changes or not accepting the certificate from Preparing > Option b).

Right now statistics are only available through the RetroPilot Useradmin, the beauty however is that the Pairing-QR-Code is always available so it's easy to unpair and repair the device to a different account on the RetroPilot Server.

Screenshots

image

image

image

image