Settings
Tempest API token
Station ID
Device ID (Tempest sensor)
Station elevation (ft)
Only the barometer uses it: a station reading is
reduced to sea level before it is shown, and doing that with the model's elevation instead
of yours is why the dashboard and the console disagree by a few hundredths.
Another brand of station
Leave as Tempest unless you have one of these. Push
brands need no keys — point the console at the address shown below.
Station brand
Tempest (or none)
Ecowitt — Wittboy, GW1100/2000/3000
Ambient Weather — WS-2902 / WS-2000 / WS-5000
Weather Underground protocol (other clones)
Davis — Vantage Pro2 / Vue via WeatherLink Live
Ambient Weather Network cloud (incl. KestrelMet 6000)
La Crosse Technology (unofficial)
rtl_433 / SDR (AcuRite Iris and friends)
This phone build has no address a console can upload
to — it isn't a server. Two ways round it: pick Ambient Weather Network cloud above
and paste your API keys (works anywhere), or run the desktop build / Docker image on a
machine that stays on, point the console at that, and open its address in this app.
WeatherLink Live address on the LAN
Find it on my network
AWN API key
AWN application key
Ingest key (optional — pins the upload path)
Station reporting
Region preset
US UK
EU CA
AU
Units
Imperial Metric
Wind unit
Follow units above mph km/h m/s knots
Clock
Follow this device 12-hour 24-hour
Obs refresh (seconds)
Wind gust alert threshold (mph )
Nearby sensor radius (mi, 0 = manual only)
Remember this station
Radar site
Nearest to my station
Radar panel on the Desk
Show the radar automatically during warnings
Appearance
Theme
Dark
Light
Auto — light by day
Accent colour
Palette
Default
OLED black
Solarized
High contrast
E-ink (flat, no shadows)
Text size
Small
Normal
Large
Extra large
Density
Normal Compact
Oversized readings
Kiosk
Cycle tabs every (seconds, 0 = off)
Dim the screen overnight
Read severe alerts aloud
Browser notifications (https only)
Eco mode (slower polling, no animation)
Auto — on for slow hardware
Always on
Off
This computer
LAN dashboard port (blank = 8088; restart to apply)
CWOP station ID (blank = don't report)
Sends your readings to the Citizen Weather Observer
Program every ten minutes, where forecast models can use them. Callsigns are public.
Weather Underground station ID
Weather Underground station key
PWSWeather station ID
PWSWeather API key
Re-uploads whatever your station reports here, once a
minute. Consoles hold one upload address, so pointing yours at WeatherDesk takes it off
these networks — this puts it back.
Export settings
Import settings
History CSV
Backup archive
Check for updates
Save
Diagnostics
Close
Reset panel layout
Rearrange panels
Starting points — pick one, then drag
what's left into place and save it under a name.
Save layout
Hidden panels
Closed a panel with its ×? Click it here to put it back.
Panel catalog
Move any Desk panel to another tab. It keeps working
where it lands — the gauges on the Data tab are the same gauges.
Hover a panel for its grip: drag the grip to move it, drag the bottom-right corner to resize,
double-click the grip to restore that panel's size. The × beside the grip hides a panel;
hidden panels come back from the list above. On a phone the grips would sit over the panel
titles, so they wait for Rearrange panels above — move and hide only, since a phone
gives every panel the full width anyway.
Tabs
Forecast Lab
Local Signals
Data
Places
Find
Notifications
Severe weather alerts
Precip start / stop
Lightning nearby
High wind
Snow / ice
Forecast changes
My alert rules
Station health
Test banners
Test push channels
Alert rules
above below
Add
+ AND
Quiet hours
No chime and no push between these times. Severe and
extreme warnings still come through. Leave both blank for off.
Push notifications
ntfy topic (phone push)
ntfy server
Webhook URL
Discord and Telegram webhook URLs are recognised and
formatted for them automatically. Alerts are sent as title, body and category only — never your token.
An ntfy.sh topic is public to anyone who guesses it, so make it long.
Home Assistant
Two halves, either useful on its own: the station is
published to your broker and appears in Home Assistant on its own, and a few Home Assistant
entities can be read back onto the Signals tab.
Publish the station
MQTT broker
The desktop and Docker builds speak plain MQTT
(mqtt:// or mqtts://) and keep publishing with every tab closed,
which is what Home Assistant needs. A ws:// address is published by this page
instead, and only while it is open.
MQTT username
MQTT password
Discovery prefix
Leave this alone unless you changed it in Home
Assistant's own MQTT settings first.
Read entities back
Home Assistant URL
Home Assistant token
Entities to show
List entities
Broker topics to show (one per line: topic | label | unit)
Test both
Help
Set up my station
Pick your brand above under Another brand of station , then set the location
(Places, below). No Tempest and no account of any kind is needed.
Tempest. tempestwx.com → Settings → Data Authorizations → create a personal use
token. The station ID is the number in your tempestwx.com station URL.
Ecowitt (Wittboy, GW1100/1200/2000/3000). WSView Plus → your gateway →
Customized upload. Protocol Ecowitt, server this computer's IP, path
/ingest, port 8088, interval 16 s or slower.
Ambient Weather (WS-2902, WS-4000, WS-2000, WS-5000). Console firmware 4.2.8 or
newer, then the awnet app → Custom server , same address and path.
Weather Underground clones (Vevor, Sainlogic, Fine Offset and friends). Point the
console's WU server at this computer's IP and port and leave the path alone. Two things
catch people out: the console must be allowed plain HTTP , not HTTPS, and it must
accept a port other than 80. Firmware that insists on HTTPS or port 80 needs a router
rule forwarding port 80 to 8088 on this machine.
Davis (Vantage Pro2, Vantage Vue). Needs a WeatherLink Live or Console 6313 on
the network; put its IP in WeatherLink Live address . No cloud, no key.
KestrelMet 6000 , or an Ambient console you would rather leave on Ambient's
servers: both keys from ambientweather.net → My devices → API keys.
La Crosse. Account email and password. Unofficial — it reads the API their app
uses and can stop working without notice.
AcuRite Iris and anything else: an RTL-SDR dongle and
rtl_433 -C si -F json piped to /ingest — see the README.
Whatever the brand, Station reporting above shows what has arrived and when.
What version am I on, and how do I update?
The version is beside
Check for updates
above, which downloads and installs the latest release. Older builds that predate the
updater have to be reinstalled once from
the releases page ; settings
and history survive.
I closed a panel and can't get it back
The Hidden panels list above — click the
panel's name to restore it. Reset panel layout puts everything back at once.
Where do the forecasts come from?
A Tempest station gets WeatherFlow's own forecast.
Everything else gets open-meteo, which is free and worldwide — Brazil, Europe, anywhere.
Watches and warnings come from the NWS and so are US-only.
Can I see this on an iPad, a phone or another computer?
Yes — open the address in this window's title bar
in any browser on the same network. Add /public to the end for a read-only
version with no settings drawer, which is the one to leave on a wall tablet.
Docker / Raspberry Pi
ghcr.io/d4vid87/weatherdesk:latest,
run with --network host and a volume on /data. There is a
compose file in the repo. Headless: no window, same LAN dashboard.
Windows Defender quarantined the installer
A false positive, and a common one for new
unsigned installers. Windows Security → Protection history → the item → Restore, then
Allow on device. Every release also ships a SHA256SUMS.txt you can check the
download against, and each Windows build is reported to Microsoft as a false detection.
Something is wrong — where do I report it?
Token: tempestwx.com → Settings → Data Authorizations → create personal use token.
Station ID is the number in your tempestwx.com station URL; leave Device ID blank and it fills itself in.
On the desktop app with a Tempest hub on the same network, live local readings work with no token at all.