WS40 – Live Weather
WS40 – Live Weather
Description
WS40 – Live Weather connects your personal weather station to WordPress. It reads the realtime.txt file produced by your weather software, archives the readings in your WordPress database, and displays them anywhere on your site through shortcodes. No coding required.
Supported sources
The format is auto-detected, with no manual configuration:
- Meteobridge and Meteobridge PRO (standard realtime.txt and the Master key/value template)
- Cumulus MX and Cumulus v1 (with automatic unit conversion)
Davis, Ecowitt, Fine Offset, LaCrosse, Ambient Weather and other hardware work through Meteobridge as a gateway.
Features
- Live dashboard — a clean two-column admin overview with a live data snapshot and system status
- Table View
[ws40_tableview]— responsive weather table with 1–3 column layouts, group separators and icon packs - Weather widget
[ws40lw_widget]— your station’s values as a list, tiles or a one-line strip; also as a block and a classic widget - Local webcam
[ws40_webcam]— a gallery folder or a single fixed image, with auto-refresh - History — log with date filters, pagination and manual cleanup
- Column mapping — verify the source reading and run a realtime test
- Diagnostics — system status, cron health and database check
- WS40 Network — optional: show your station on the public WS40 Network map (off until you join from the Dashboard)
- Built-in step-by-step guide
- Available in 7 languages: English, Italian, French, Spanish, German, Portuguese (BR) and Dutch
Trademarks
Meteobridge, Cumulus, Davis, Ecowitt, Fine Offset, LaCrosse and Ambient Weather are trademarks of their respective owners. WordPress is a registered trademark of the WordPress Foundation. This plugin is not affiliated with, endorsed by or sponsored by any of these companies.
External Services
WS40 reads weather data from the realtime.txt source you configure (your own weather station or server), using the URL or local file you provide.
WS40 Network (optional, off by default)
The plugin can show your station on the WS40 Network, a public map of weather stations at https://www.weatherstation40.live/network/ run by the author of this plugin. Nothing is sent until you join from WS40 Dashboard WS40 Network and tick the consent box; you can leave at any time with “Leave the network”, which deletes your station from the map.
- What is sent when you join: the address of your website, a temporary random code (the WS40 Network reads it back from your site at /wp-json/ws40lw/v1/network/verify to check that you control the site) and the plugin name.
- What is sent afterwards, at most every 5 minutes after each reading saved in the history: station name and town as you typed them, position rounded to about 1 km (the exact position is never stored), time zone, website address, plugin version, data source, and the current temperature (with today’s minimum and maximum), humidity, pressure, wind speed, direction and gust, rain today and particulate matter when available. Requests are signed with a key given by the WS40 Network.
- Where: https://www.weatherstation40.live/wp-json/ws40net/v1/ (register, push, delete).
- No data about your website visitors are sent. New stations appear on the map after approval by the WS40 Network admin.
- Terms of service: https://www.weatherstation40.live/terms-of-service/ · Privacy policy: https://www.weatherstation40.live/privacy-policy/
Privacy
WS40 does not collect, store or transmit any personal data about your website visitors. It reads weather data from your configured source and stores it in your local WordPress database. Only if you join the optional WS40 Network are the current readings of your station, its name, town and rounded position sent to weatherstation40.live (see External Services). For privacy questions: info@weatherstation40.live
Installation
- Upload the
ws40-live-weatherfolder to/wp-content/plugins/, or install it from Plugins Add New. - Activate the plugin from Plugins Installed Plugins.
- Go to WS40 Dashboard and add your station.
- Enter the URL of your realtime.txt file (for example
https://example.com/meteo/realtime.txt). - Open WS40 Settings and run the Realtime Test to confirm the source is read correctly.
- Paste
[ws40_tableview]into any page, post or widget.
Faq
WS40 reads realtime.txt files; it does not connect directly to station consoles. Meteobridge, Meteobridge PRO, Cumulus MX and Cumulus v1 are supported with automatic format detection. Davis, Ecowitt, LaCrosse, Ambient Weather and similar hardware work through Meteobridge as a gateway.
Yes. The file must be inside wp-content/uploads/. Arbitrary filesystem paths are not allowed; an http(s) URL is the recommended option.
Yes. For reliable logging on shared hosting, an external trigger (such as your hosting scheduler) is recommended over WP-Cron.
English, Italian, French, Spanish, German, Portuguese (BR) and Dutch — 7 languages, all fully translated.
The free version is complete and fully functional on its own. A separate premium version with additional features is available at weatherstation40.live.
Reviews
Perfect
By Gloria Liuni (glorialchemica) on July 1, 2026
Exactly the plugin I needed.
Easy to configure, and the Instructions section helped me set it up in no time.
I'm very satisfied.
Changelog
1.3.0 – 2026-10-21
- New: weather widget with the station’s raw values in three layouts: a list, tiles with a large temperature, or a one-line strip for a header, a footer or a post. It follows the theme’s colours and fonts and uses the station’s units (metric or imperial, m/s when set).
- New: it is available as a block (“WS40 Weather widget”), as a classic widget (Appearance Widgets) and as the shortcode
[ws40lw_widget], with optionallayout="list|tiles|strip"andfields="temp,hum,wind,...". - New: WS40 Templates has a Widget tab: layout with live previews, the values to show (temperature, feels like, dew point, humidity, pressure, wind with direction, gust, rain today, rain rate, UV index, solar radiation), station name and time of the last reading. Values the station does not send are left out.
- No new external requests: the widget is built on the page with the data already saved on your site.
- 26 new strings translated in all 7 languages.
1.2.2 – 2026-10-21
- Instructions: the Meteobridge realtime.txt section now says clearly that column 10 must be the sea-level pressure ([thb0seapress-act.1]), not the station pressure ([thb0press-act]). The station pressure is about 12 hPa lower for every 100 m of altitude and was shown as sea-level pressure. Columns 34 and 36 (max and min today) use [thb0seapress-dmax.1] and [thb0seapress-dmin.1].
- 2 new strings translated in all 7 languages.
1.2.1 – 2026-10-20
- New: the Table View hero now shows the current conditions: an icon, a short label and a light background tint. They come from your station’s own data: light rain, rain, heavy rain, snow, thunderstorm, fog and strong wind. With a solar radiation sensor the sky is also estimated (clear, partly cloudy, mostly cloudy, overcast) and marked as an estimate. Without one, the plain sun or moon stays. The icons follow the chosen icon set.
- New: optional “Sky estimate” setting in the Table View: the station position, used only on your site to compare the solar sensor with the clear-sky value. If empty, the WS40 Network position is used when set.
- New: per-station wind unit in the station card: follow the measurement system (km/h or mph) or metres per second (m/s). It applies to wind speed and gusts in the Table View, the Dashboard and History.
- Fixed (imperial units): 7-day, previous month, previous year and total rain were shown in millimetres labelled “in” in the Table View and in History; the 3-hour temperature trend in the Dashboard was converted with the +32 offset; the apparent temperature fallback was not converted.
- Imperial units: wind run and lightning distance are now shown in miles; pressure shows 2 decimals in inHg and rain 2 decimals in inches.
- 19 new strings translated in all 7 languages.
1.2.0 – 2026-10-19
- New: WS40 Network — show your station on the public WS40 Network map at weatherstation40.live/network. A new “WS40 Network” card in the Dashboard: station name, town and position (rounded to about 1 km), a consent box, then “Join the network”. New stations appear on the map after approval; the card shows the state (waiting for approval, on the map, not sent with the reason) and has “Leave the network”. Off by default: nothing is sent until you join. See External Services.
1.1.2 – 2026-09-17
- Dashboard: the station card action buttons now anchor to the bottom, so the card fills its column cleanly next to the live snapshot.
1.1.1 – 2026-09-15
- Table View settings page updated to match the card layout: corrected the features list (card layout, border styles, columns) and the columns help text.
- Templates menu now opens the Table View settings directly (removed the intermediate Template Manager page).
- Internal cleanup: removed dead code left over from the card-layout migration (legacy table styling, unused style presets and column-split logic).
- Added Dutch (nl_NL) translation — the plugin now ships 7 languages.
- Dashboard header shows the available-language flags instead of the description text.
- Fixed: Dutch (nl_NL) site language now correctly loads the Dutch translation.
- Dashboard: single consolidated station card; removed the redundant station header row.
- Dashboard: two-row symmetric layout — station card and live snapshot side by side (equal height), full data table and system status below.
1.1.0 – 2026-09-14
- Table View redesigned as a responsive card layout: a hero with the current temperature and feels-like, plus grouped panels. All existing Table View settings (columns, width, border, colors, typography, icons, striped rows, hover) drive the card layout.
- New raw fields: average temperature, average humidity and average wind. “Feels like” uses the station’s raw value when available, otherwise a computed value.
- Cloud base and wind run are now computed automatically when the weather station does not send them.
- Local webcam: the gallery folder and single-image path can be located anywhere on the site, not only under wp-content/uploads.
- Timezone now follows the WordPress site setting; the per-station timezone control has been removed.
- The “Complete station weather data” diagnostic now lists the full set of fields consistently with the Meteobridge master template.
- Updated the bundled Meteobridge master template to v4.3.
- New plugin logo.
1.0.5
- Single-station: removed the internal stations table, all station management (add/list/select/toggle/delete), the active-station selection, and every external station_id input (REST/query/POST parameters, hidden form fields and admin selectors). The plugin now operates on one station whose settings live in a single option; a one-time migration drops the legacy table and preserves any existing configuration.
- External logging endpoint: the database upgrader now runs only after the request token is validated, so unauthenticated requests can no longer trigger schema-check work.
- Admin output escaping: every admin renderer now escapes at output through wp_kses with an explicit allowlist; removed all EscapeOutput suppressions across the admin pages.
1.0.4
- Removed residual non-file engine handling and the activation reset, so the build no longer ships disabled code paths.
- Hardened admin output escaping (wp_kses) in card and webcam renderers.
- Removed a redundant non-distributable file from the package.
1.0.3
- Table View now resolves the active station automatically and shows a clear notice when no data is available yet.
- Local webcam supports either a gallery folder or a single fixed image file, with a built-in source test.
- Added an offline threshold setting: the Table View shows an OFFLINE badge when the latest reading is older than the configured time.
- Hardened local file reading, plus i18n and compatibility fixes.
1.0.0
- First public release.







