diff --git a/README.md b/README.md new file mode 100644 index 0000000..8a3a954 --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# eink-feed + +A lightweight system for delivering dynamic images to eInk display (like Kindles) over a WebSocket-based protocol. +It enables remote rendering and real-time updates for information displays. + +## eink-feed-server + +``` +eink-feed-server + -h, --help + Display this help and exit. + + --port + Web server port. + + --config + Path to config file. +``` + +### API + +- `GET /api/channel?id=`: + Returns channel configuration. Can be used by a rendering server to get display information about the image channel. +- `POST /api/frame?id=&orientation=<(portrait|landscape)_(left|right)>`: + Accepts a multipart form with a BMP or PNG. +- `/api/ws/display`: + WebSocket endpoint for protobuf communication between a display client and the server. Image data is sent over this socket. + +### Configuration + +```json +{ + "channels": [ + { + "id": 1, + "name": "test-channel", + "display": { + "width": 800, + "height": 600, + "orientation": "landscape_left" + } + } + ], + "clients": [ + { + "name": "test-kindle", + "channel_id": 1 + } + ] +} +``` + +## eink-feed-client + +Currently only runs on a Kindle 4/5 (https://git.dergrimm.net/dergrimm/kindle) + +``` +eink-feed-client + -h, --help + Display this help and exit. + + --host + eink-feed server host (e.g. hostname:port). + + --name + Client name. + + --partial + Enable partial eink framebuffer updates. May not look as sharp but reduces flickering. +``` + +## eink-feed-render-departures + +Render implementation that displays departure information of a public transit stop using an EFA-JSON endpoint. + +``` +eink-feed-render-departures + -h, --help + Display this help and exit. + + --url + URL of eink-feed server. + + --channel + Channel ID. + + --efa + URL of EFA server. + + --stop + Stop ID. + + --tz + Time zone. + + --max + Max number of departures listed. + + --show-operator + Show operator. + + --stopfinder + Search for stops on the EFA server with the given search query. +``` + +
+ +Search for stops: + +`eink-feed-render-departures --efa 'https://example.com' --stopfinder 'Stuttgart' | jq` + +
+ +Render departures for a stop ID: + +`eink-feed-render-departures --url 'http://:' --channel --efa 'https://example.com' --tz 'Europe/Berlin' --show-operator --stop 'de:08111:6115'` + +
+ +![Photo of a Kindle with train departures](assets/departures.jpg) diff --git a/assets/departures.jpg b/assets/departures.jpg new file mode 100644 index 0000000..e6ee01d Binary files /dev/null and b/assets/departures.jpg differ