Skip to content

v2.4.0 — Your Own Thermometer

Choose a tag to compare

@zach7036 zach7036 released this 15 Jul 22:55
· 36 commits to main since this release

A new integration for the smart-home crowd, plus Species page polish.

🌡️ Local temperature from your own Home Assistant sensor

From issue #17 (@talkingdragon)

If you run Home Assistant with an outdoor temperature sensor, your station can now use your actual yard's temperature instead of the online weather model. Set three fields in Settings → Location & Weather:

  • Home Assistant URL (e.g. http://homeassistant.local:8123)
  • Access token (create a long-lived token in HA under your profile → Security)
  • Temperature entity (e.g. sensor.backyard_temperature)

The hourly weather sync still fetches conditions, wind, and history from Open-Meteo — but when your sensor is healthy, its reading wins the current hour. The fallback is automatic and stateless: if the sensor is unreachable, unavailable, or its value hasn't changed in over an hour (a frozen or disconnected sensor), that hour simply keeps the online value, with the reason logged. °C/°F/K readings convert automatically, and your display-unit setting keeps working as before.

Station Doctor gains a live "Local temperature sensor" check showing whether the current hour is using your sensor or the online fallback.

Leave the fields blank and nothing changes — the feature is fully dormant until configured. Every code path is tested against a simulated HA server; if you run a real HA install, feedback on #17 is very welcome.

🎨 Species page polish

The filter buttons never actually had styles — "Apply Filters" was a raw browser button, "Reset" floated above its neighbors, and "Export CSV" hid its label on a dark background. All three are now proper themed buttons on one baseline, and the Total Species / Avg. Confidence cards are wider and shorter so the header uses its space.

Updating

cd ~/BirdNET-Pi
git fetch origin
git pull --ff-only origin main
sudo bash scripts/update_birdnet_snippets.sh

Then refresh your browser.

🤖 Generated with Claude Code