[FEAT] frame: birdnet.local default, with image-url and bird-weather flavors

This commit is contained in:
Twarner491
2026-06-21 18:39:55 -07:00
parent 10548dbca7
commit 77dda2bc94
5 changed files with 236 additions and 110 deletions
+37 -40
View File
@@ -1,55 +1,52 @@
# AvianVisitors e-ink frame. Copy to config.toml and edit.
# AvianVisitors e-ink frame. install.sh writes this for you; edit to taste.
# config.toml is gitignored. Nothing here is secret unless your whole site is
# behind basic-auth (see the bottom).
# behind basic-auth (see the bottom). This file is the full reference.
# The collage to mirror. The Pi reads the recent API here to decide when a
# refresh is worth it, so point it at the public site (a Pi Zero W cannot reach
# a LAN BirdNET-Pi by default anyway).
base_url = "https://bird.onethreenine.net"
# base_url = "http://birdnet.local" # same-LAN BirdNET-Pi instead
# --- Where the collage comes from -------------------------------------------
# Default: mirror the BirdNET-Pi on your network. This Pi screenshots it.
base_url = "http://birdnet.local"
shoot = true
hours = 24 # window shown on the frame
# Where the screenshot comes from. birdpic (a Pi Zero W) has no browser, so it
# fetches a ready-made PNG: the aggregator Worker renders the collage via
# Cloudflare Browser Rendering at /frame.png, gated by its FRAME_KEY secret.
# Put that key after k=.
shoot = false
image_url = "https://bird.onethreenine.net/frame.png?k=YOUR_FRAME_KEY"
# On a capable host (Pi 4/5, laptop) shoot inline instead of fetching:
# shoot = true
# Or fetch a ready-made PNG instead of rendering here (lighter, but needs
# something that serves a frame image, e.g. a public Cloudflare Worker):
# shoot = false
# image_url = "https://bird.onethreenine.net/frame.png?k=YOUR_FRAME_KEY"
# Or read a PNG a sibling process drops next to us:
# image = "~/.birdframe/frame.png"
# Panel.
rotate = 90 # 90 or 270 if the frame hangs the other way up
saturation = 0.6 # Inky colour saturation, 0 to 1
mat = 0.0 # extra shrink of the content inside the A5 opening (0 = none)
# panel = "el133uf1" # force the 13.3" driver if auto-detect ever fails
hours = 24 # window shown on the frame
# Refresh cadence. The panel refreshes only when the species set or a count
# bracket changes, plus a daily heal. Quiet hours are off so nocturnal
# detections still show; set quiet_start/quiet_end to a window to mute overnight.
quiet_start = 0 # 0/0 = always refresh on change; e.g. 22 and 6 mutes 22:00-06:00
quiet_end = 0
heal_hours = 24 # force a refresh at least this often
# Paths.
state = "~/.birdframe/state.json"
cache = "~/.birdframe"
timeout = 45
# Titles and look. Used only when shooting inline (shoot = true). With the
# Worker endpoint these are baked in, so leave them out.
# shoot_title = "onethreenine birds"
# shoot_subtitle = "heard today"
# --- Titles and look (used when this Pi renders, i.e. shoot = true) ----------
shoot_title = "Avian Visitors"
shoot_subtitle = "Heard Today"
# shoot_headline_px = 42
# shoot_eyebrow_px = 18
# shoot_lowercase = false
# shoot_mat = 0.04
# shoot_small_floor = 0.04
# shoot_count_exp = 0.65 # tile size vs call count; higher = the loudest birds dominate more
# Only if your WHOLE site is behind basic-auth. The AvianVisitors default
# leaves the collage and detection API public, so usually leave these out.
# --- Panel ------------------------------------------------------------------
rotate = 90 # 90 or 270 if the frame hangs the other way up
saturation = 0.6 # Inky colour saturation, 0 to 1
mat = 0.0 # extra shrink of the content inside the A5 opening (0 = none)
# panel = "el133uf1" # force the 13.3" driver if auto-detect ever fails
# --- Refresh cadence --------------------------------------------------------
# The panel refreshes only when the species set or a count bracket changes,
# plus a daily heal. Quiet hours are off so nocturnal detections still show;
# set quiet_start/quiet_end to a window to mute overnight.
quiet_start = 0 # 0/0 = always refresh on change; e.g. 22 and 6 mutes 22:00-06:00
quiet_end = 0
heal_hours = 24 # force a refresh at least this often
# --- Paths ------------------------------------------------------------------
state = "~/.birdframe/state.json"
cache = "~/.birdframe"
timeout = 45
# --- Only if your WHOLE site is behind basic-auth ---------------------------
# The AvianVisitors default leaves the collage and detection API public, so
# usually leave these out.
# basic_user = "monalisa"
# basic_pass = "..."