Initial commit — Oak Ridge Makers Group Tronbyt app

This commit is contained in:
2026-09-06 22:11:34 -04:00
commit 2baef5d287
513 changed files with 1280 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
.starcache/
*.gif
*.webp
+24
View File
@@ -0,0 +1,24 @@
All craft-rotation media is from Pexels (Pexels License — free for any use,
no attribution required). Listed here for provenance/traceability anyway:
- 3D printing — "3D Printer" (video 24816306)
https://www.pexels.com/video/3d-printer-24816306/
- Woodworking — "Wood Working Work Craft" (video 7493222)
https://www.pexels.com/video/wood-working-work-craft-7493222/
- Sewing — "Close-up Video of a Sewing Machine" (video 5758580)
https://www.pexels.com/video/close-up-video-of-a-sewing-machine-5758580/
- Electronics/soldering — "A Close-up Shot of a Person Soldering" (video 5736195)
https://www.pexels.com/video/a-close-up-shot-of-a-person-soldering-5736195/
- Homelab/servers — "Hacker Entering Codes into the Computer" (video 6963744)
https://www.pexels.com/video/hacker-entering-codes-into-the-computer-6963744/
- LoRa radio — "DIY LoRa and Temperature Sensor on Breadboard" (photo 32894980)
https://www.pexels.com/photo/diy-lora-and-temperature-sensor-on-breadboard-32894980/
- Laser engraving — "High Precision Laser Engraving Process in Action" (video 34240702)
https://www.pexels.com/video/high-precision-laser-engraving-process-in-action-34240702/
- Battle Bots — the org's own combat-robot project video, CAD-reveal +
build footage, used in full (owned by the org, not a stock asset).
An earlier draft used 3 icons from game-icons.net (CC BY 3.0, Delapouite/Lorc/
Caro Asercion) before switching to video for all six original slots; no
longer bundled.
+73
View File
@@ -0,0 +1,73 @@
# Oak Ridge Makers Group — Tronbyt app
Loops (~17-18s per run, depending on the slot): zoom into the org logo →
crossfade into the org name → QR code to https://ormakers.org/ → one
rotating craft slot, each with a text label at the top. Eight slots cycle
across runs via a cache counter: 3D Printing, Woodworking, Fiber Craft,
Electronics, Homelab, Laser Engraving, LoRa Radio (60 frames/~6.0s each — a
real optical zoom for LoRa, direct variable-size crops from the source
photo, not a digital Scale transform — smoothly pushing in and back out to
a wide resting view), and Battle Bots (76 frames/~7.6s, the org's own
combat-robot CAD-reveal + build footage, the full ~9.5s source clip, not a
Pexels stock asset). All craft-slot media is cropped and downscaled to
64x32 — see `CREDITS.md` for sources. Woodworking uses a slightly wider
(zoomed-out) crop than the others to show more of the table saw surface.
**Device payload limit:** the Tidbyt/Tronbyt firmware rejects any single
rendered frame whose Content-Length exceeds ~460,000 bytes and shows a
built-in "oversize" fallback graphic instead (confirmed from
`tronbyt/firmware-esp32`'s `main/remote.c` and `Kconfig.projbuild`,
`HTTP_BUFFER_SIZE_MAX` default 460000). A first draft of the LoRa scene used
a *continuous* live `animation.Transformation` zoom (100 distinct
interpolated frames of a busy full-color photo) that rendered to ~504KB and
tripped this — switched it to the same discrete pre-rendered frame technique
as the other five slots. Current per-scene sizes (measured via
`pixlet render --format webp` on each slot in isolation, all at 60 frames):
~191-228KB for the five video slots, ~313KB for LoRa (real photo detail
compresses worse than video) — all under the 460KB limit, but LoRa has the
least headroom (~147KB vs. ~230-270KB for the others). If future edits push
any slot close to it again, isolate-render and check `stat -c%s` on the
output before assuming it's fine.
## Dev/test
```
pixlet render ormakers.star -o preview.gif
pixlet serve ormakers.star # live reload while tuning
```
Note: `pixlet render`'s cache resets every invocation, so it always shows the
first craft slot (3D Printing). To preview a different slot, temporarily
swap the `_next_craft_scene()` call in `main()` for e.g.
`_video_scene(HOMELAB_ASSETS, "Homelab")` directly.
## Rebuilding assets
- `scripts/crop_logo.py` — crops/pads the org logo into `images/logo.png`.
- `scripts/fetch_icons.sh` — downloads the (now-unused) game-icons.net craft
icons; kept for reference only.
- The `*_clip/` folders under `images/` are frame sequences extracted from
source video with `ffmpeg` (crop to the desired region, `fps=8`, scale to
64x32, contrast/saturation boost) or, for `lora_clip`, generated with
Pillow directly from the full-resolution source photo — each frame crops a
different-sized box (interpolated wide→tight→wide, ease-in-out) out of the
original image and resizes that crop to 64x32, giving a real optical zoom
rather than digitally scaling a single fixed crop (which either does
nothing past 1.0x scale on a fixed-size widget, or pads with black
instead of revealing more of the photo). No script currently automates
this — see CREDITS.md for sources and chat history for the exact crop
windows/timestamps used per clip.
- `images/fade_clip/` is generated by blending the resting-state logo frame
into the name-text frame with Pillow (`Image.blend`), not from video.
## Deploy
On the Tronbyt server, go to the device's **Add App** page → **Upload app**,
and upload a zip of this directory's contents (`ormakers.star` + `images/`,
zipped at the root, no extra parent folder). It appears under **Custom
Apps** — add it to the device's schedule from there. Fully private to your
own server; nothing is published anywhere public.
## Credits
See `CREDITS.md` for the source of every craft-slot video/photo.
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Some files were not shown because too many files have changed in this diff Show More