46 lines
1.3 KiB
Markdown
46 lines
1.3 KiB
Markdown
# Frame Processor
|
|
|
|
Self-hosted ASP.NET Core (.NET 10) service that dithers and color-remaps images for
|
|
Spectra 6 e-ink frames, persists the result to disk, and notifies the frame via MQTT.
|
|
|
|
## Documentation
|
|
|
|
- [`SPEC.md`](SPEC.md) — authoritative behavior contract.
|
|
- [`PLAN.md`](PLAN.md) — implementation design and verification checklist.
|
|
- [`CLAUDE.md`](CLAUDE.md) — load-bearing conventions and working notes.
|
|
|
|
## Quick start
|
|
|
|
```sh
|
|
docker compose up --build
|
|
```
|
|
|
|
Brings up `frame-processor` on `:8080` plus a `mosquitto` broker on `:1883`.
|
|
|
|
## Smoke tests
|
|
|
|
```sh
|
|
# Health (also reports MQTT connection state)
|
|
curl http://localhost:8080/health
|
|
|
|
# Upload a file
|
|
curl -H "X-Api-Key: change-me" \
|
|
-F "image=@photo.jpg" \
|
|
http://localhost:8080/api/frames/living-room/image
|
|
|
|
# Upload via URL
|
|
curl -H "X-Api-Key: change-me" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"url":"https://example.com/photo.jpg"}' \
|
|
http://localhost:8080/api/frames/living-room/image-url
|
|
|
|
# Fetch the processed PNG (the frame does this on MQTT signal)
|
|
curl http://localhost:8080/i/aabbccddeeff.png > out.png
|
|
|
|
# Watch MQTT publishes
|
|
mosquitto_sub -t 'frames/#' -v
|
|
```
|
|
|
|
Configure frames in [`frames.json`](frames.json); service settings in
|
|
[`appsettings.json`](appsettings.json) (or via `Mqtt__Host`-style env vars).
|