Publish to weather networks
Send your station's readings to Weather Underground, WOW, CWOP, Windy, AWEKAS and more, plus MQTT and InfluxDB for your own systems.
Your station's data doesn't have to live on your site alone. Pro Weather can upload your readings to the big weather networks (the same networks long-time station owners feed from weewx or Meteobridge) and to your own systems over MQTT or InfluxDB. Configure it once and uploads ride every data refresh, about every 5 minutes, using the same observation your site shows.
Publishing is part of the Pro plan (and your free trial).
Set it up
- Open your site in the dashboard and go to the Publishing tab.
- Expand the service you want and enter its credentials (each service explains exactly what it needs and where to find it).
- Choose Connect. The first upload goes out on the next refresh, and the card shows a status badge from then on.
Every service is independent: one failing never blocks the others, and you can pause any of them with the Upload on every refresh toggle. Credentials are encrypted at rest and only ever used server-side.
Supported weather networks
| Network | What you enter | Where to get it |
|---|---|---|
| Weather Underground | Station ID + station key | wunderground.com → My Devices |
| PWSweather | Station ID + API key | pwsweather.com member area |
| Met Office WOW | Site ID + authentication key | Your site page on wow.metoffice.gov.uk (the auth key is the 6-digit PIN you set) |
| WOW-BE (KMI/IRM) | Site ID + authentication key | wow.meteo.be, the Belgian WOW run by the Royal Meteorological Institute |
| AWEKAS | Username + password | Your awekas.at account |
| CWOP / APRS | Station ID (callsign) | Register at wxqa.com. CW/DW/EW IDs need no passcode; ham callsigns enter theirs |
| Windy | Station ID + station password | stations.windy.com; the password is on the station's detail page |
| OpenWeatherMap | Station ID + API key | Register your station via the OWM Stations API; enter the internal ID it returns |
| Weathercloud | Weathercloud ID + key | Device settings on weathercloud.net |
| Windfinder | Sender ID + password | Register your station with Windfinder |
| wetter.com | Station ID + password | Your wetter.com Wetternetzwerk account |
| Windguru | Station UID + upload password | Your station page at stations.windguru.cz. The password is optional; set one to stop anyone else uploading as you |
What each network receives depends on what it accepts: temperature, humidity, dew point, pressure, wind, gusts, rain, solar and UV where supported, and PM2.5/PM10 to Weather Underground if you have an AirLink. Units and formats are converted automatically per service; there is nothing to map by hand.
A note on CWOP and wetter.com
CWOP feeds NOAA's MADIS network, which is used for real forecast verification, a lovely way to make your station count. wetter.com still accepts uploads, but has said its station network is no longer actively maintained, so treat that one as best-effort.
Publish to your own systems
Beyond the networks, two generic outputs cover home automation and self-hosted dashboards:
MQTT
Publishes one JSON document per refresh to <your topic>/loop on any broker
you point it at (mqtt://, mqtts://, ws:// or wss://). Keys follow the
familiar weewx style in your site's unit system (outTemp_C, windSpeed_kph,
barometer_hPa, dayRain_mm and so on), which makes Home Assistant templates
straightforward. Messages are retained by default so new subscribers
immediately see the latest observation; set Retain messages to off to
disable that.
InfluxDB
Writes one line-protocol point per refresh, tagged with your site's
subdomain, with metric fields (temp_c, wind_ms, rain_day_mm, ...).
InfluxDB v2 is the default: enter the server URL, bucket, organization
and an API token. For a classic v1 server, set the version field to 1
and use database/username/password instead. Ideal for Grafana dashboards.
Custom HTTP
For anything we have not built a dedicated uploader for. Two shapes:
- POST (the default) sends the whole observation as JSON to your endpoint, which is what a Home Assistant webhook, a Node-RED flow or your own service wants.
- GET treats the URL as a template. Write
{{tempC}},{{humidity}},{{windKmh}},{{rainDayMm}},{{iso}}and the rest wherever the values belong; unknown placeholders become empty, and every value is URL-encoded.
An optional bearer token is stored encrypted and sent as an Authorization
header.
HTTPS only, and no private addresses
Our server makes this request on your behalf, so the URL is checked the same way an alert webhook is: HTTPS only, and loopback, private (RFC1918) and cloud-metadata addresses are refused. Point it at something reachable from the internet.
Post to social
Bluesky
Posts your conditions to a Bluesky account on a schedule - not on every refresh, which would be 288 posts a day. Enter your handle, an app password (Settings → App Passwords on Bluesky; never your account password) and how often to post, from 1 hour to a week. The default is once a day.
Left empty, the post is a conditions line in your site's own units plus a link
back to your station. Write a template to say it your way, using the same
{{field}} placeholders as Custom HTTP plus {{url}} for your site address.
Status, timing and troubleshooting
- Each configured service shows a badge: OK with the last upload time, Waiting for first upload, Paused, or Failed. Expand the card to see the exact error from the service.
- Uploads go out about every 5 minutes, alongside each data refresh. Two networks publish a slower rate limit than that, so we hold them to every other refresh (about every 10 minutes) rather than earn a rejection: Windy asks for at most one upload per 5 minutes, and Weathercloud one per 10 on free accounts. Every other service gets the full 5-minute cadence.
- If a service rejects your credentials, we pause retries for an hour instead of hammering it; fix the credentials and save the card to retry immediately.
- Saving a card always clears its error state, so a fresh attempt happens on the very next refresh.
One site, one station identity
Uploads always use your site's primary station, the one your public page shows. Each remote service treats your site as a single station, so register one station per network per site.
