Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/colin-nolan/remote-eink
A server that can be used to remotely control a display, such as eink screen
https://github.com/colin-nolan/remote-eink
Last synced: 25 days ago
JSON representation
A server that can be used to remotely control a display, such as eink screen
- Host: GitHub
- URL: https://github.com/colin-nolan/remote-eink
- Owner: colin-nolan
- License: agpl-3.0
- Created: 2020-05-15T21:37:01.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2023-02-16T06:53:15.000Z (over 1 year ago)
- Last Synced: 2023-08-03T19:35:17.849Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 6.76 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
![Tests](https://github.com/colin-nolan/remote-eink/actions/workflows/main.yml/badge.svg)
[![Code Coverage](https://codecov.io/gh/colin-nolan/remote-eink/branch/master/graph/badge.svg)](https://codecov.io/gh/colin-nolan/remote-eink)# Remote eInk
_A server that can be used to remotely control a display, such as eink screen._## OpenAPI
The OpenAPI specification can be viewed here:
[https://colin-nolan.github.io/remote-eink/swagger-ui/](https://colin-nolan.github.io/remote-eink/swagger-ui/)## Troubleshooting
### RPi.GPIO gcc10 issue
A generic error when compiling [RPi.GPIO](https://pypi.org/project/RPi.GPIO/) may be
[caused by a change in gcc10](https://forum.manjaro.org/t/pip-install-rpi-gpio-fail/25788/5):
```
collect2: error: ld returned 1 exit status
error: command '/usr/bin/arm-linux-gnueabihf-gcc' failed with exit code 1
```
It can be avoided by setting `CFLAGS`, e.g.:
```
CFLAGS="-fcommon" poetry install
```## Development
### Implementation
`FlaskApp` app:
- Takes multiple `DisplayController` instances.
- Is associated to `AppData`.
- `AppData` stores the `DisplayController` instances. It provides a `CommunicationPipe` through which write operations
to the data _must_ be made in requests (as requests may be handled by different processes).`Server`:
- Operates a `FlaskApp` app.
- Can be used with `run` (blocking) or `start` (non-blocking).A `DisplayController`:
- Controls the display of an `Image` within a `ImageStore` using a `DisplayDriver`.
- Knows what the `current_image` being displayed is.
- May apply transformations to the image using `ImageTransformerSequence`.
- Has `ListenableDisplayController`, `CyclableDisplayController`, and `SleepyDisplayController`
variants.An `Image`:
- Allows access to data representing an image.
- Is of a particular type (e.g. `png`).An `ImageTransformer`:
- Takes an `Image` and modifies it to produce a variation (e.g. a rotated copy of the image).
- Multiple transformers can be put together using an `ImageTransformerSequence`.
- Applied to all images (e.g. when display is rotated, all images can be rotated).A `DisplayDriver`:
- A driver for a display device.
- Can set an image to be displayed; clear the display; sleep/wake the display.## Legal
[AGPL v3.0](LICENSE). Copyright 2020, 2021, 2022 Colin Nolan.This work is in no way related to the company that I work for.