Everything this site measures is open. Download the raw records below in JSON or CSV, then read exactly how the whole thing is built — the sensors in the garden, the code that moves the data, and how you could put your own version on your own patch.
Each feed below is pulled live from the same files the site itself reads. JSON is the raw record exactly as stored; CSV is flattened for spreadsheets. Nothing is paywalled and nothing is tracked — it's the valley's data.
Every feed follows the same shape: a sensor captures something, a small computer makes sense of it, a message bus carries it, and a static file lands where the website can read it. No cloud database, no server farm — just a couple of Raspberry Pis and a Home Assistant box doing steady work.
A few principles hold it together: data is sourced as locally as possible; everything is backed up off-site nightly (databases, scripts and the flows themselves); and a watchdog keeps an eye on the feeds and sends a message if any of them fall quiet.
If you fancy doing this where you live, here's the honest route from nothing to a working bird page. You don't need all of it — the birdsong half stands alone and is the best place to start.
Get a Raspberry Pi (a 4 with 4GB is plenty) and a decent USB microphone, then install BirdNET-Pi. It listens continuously, identifies species from their calls using a neural network, and stores every detection in a small database with a confidence score. This alone is genuinely magical — within a day you'll have a list of what's singing in your garden.
Run Home Assistant (a Pi or a small mini-PC works). Add the Node-RED add-on — this is where the wiring happens. Node-RED is a visual, drag-the-boxes tool; you don't have to be a programmer to get a long way with it.
MQTT is a lightweight message bus — one thing publishes, others subscribe. A Node-RED flow reads the BirdNET database every few minutes and publishes the latest detections to a topic. For a hobby setup the free public broker broker.hivemq.com is fine; for anything you care about, run your own (Mosquitto is the usual choice).
{ "species": "...", "count": 12 }).json file — it's the reliable fallback when a retained message is slow to arriveA single HTML file can do the lot: fetch() the static JSON on load for instant data, then connect to MQTT over websockets for live updates. Host it free on GitHub Pages. No server, no database, no running costs — the page is just a reader of files the Pi produces.
Once the bird half works, the same pattern extends to everything else: an ultrasonic detector for bats, a weather station on the roof, your local river gauge from the Environment Agency's open flood-monitoring API, ADS-B for aircraft overhead. Each is just another sensor → Pi → MQTT → file → page.
The unglamorous part that matters most. Back up the databases and your scripts and flows somewhere off the Pi (a private Git repo works well, scrubbed of any keys). Add a watchdog that checks each feed is still arriving and messages you if one goes silent. A microSD card will fail eventually — plan for the day it does.
For reference, here's what's actually running here. None of it is exotic.
| Part | What it does |
|---|---|
| Raspberry Pi 4 (4GB) | Runs BirdNET-Pi with a USB microphone in the garden |
| Second Pi + ultrasonic mic | Records and classifies bat echolocation calls overnight |
| Rooftop weather station | Temperature, wind, pressure, humidity, rainfall |
| Home Assistant box | Hosts Node-RED, MQTT plumbing and the watchdog |
| EA flood-monitoring API | River Glenderamackin level from a gauge ~500m away |
| ADS-B / FlightRadar24 feed | Aircraft passing overhead, logged and mapped |
| GitHub Pages | Hosts the static site — free, no backend |
Two things are planned for this page but not built yet — flagged honestly rather than promised.
Subscribe to a daily or weekly dump of the valley's data, delivered to your inbox — built on the same system that already sends the weekly nature email.
Stable, documented endpoints you can query directly — so you can build your own things on top of Threlkeld's data, not just download snapshots.