{"id":313447,"date":"2026-06-28T16:48:26","date_gmt":"2026-06-28T16:48:26","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/weather-station-40-ws40\/"},"modified":"2026-06-28T16:47:36","modified_gmt":"2026-06-28T16:47:36","slug":"ws40-live-weather","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/ws40-live-weather\/","author":18275165,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"7.0","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"WS40 \u2013 Live Weather","header_author":"Pasqualino De Marco","header_description":"Display real-time weather data from your personal station. Supports Meteobridge, Meteobridge PRO and Cumulus via realtime.txt. Compatible with Davis, Ecowitt, LaCrosse and Ambient Weather via Meteobridge. Dashboard, Table View shortcode, local webcam and history.","assets_banners_color":"5c93ab","last_updated":"2026-06-28 16:47:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.weatherstation40.live\/","header_author_uri":"https:\/\/profiles.wordpress.org\/lino80sa\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":67,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"lino80sa","date":"2026-06-28 16:47:36"}},"upgrade_notice":{"1.0.3":"<p>Recommended update with Table View, local webcam and reliability improvements.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3589409,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3589409,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3589409,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3589409,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3589073,"resolution":"1","location":"assets","locale":"","width":2786,"height":1920},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3589409,"resolution":"2","location":"assets","locale":"","width":2786,"height":1920},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3589073,"resolution":"3","location":"assets","locale":"","width":2562,"height":1920},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3589073,"resolution":"4","location":"assets","locale":"","width":2786,"height":1920},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3589073,"resolution":"5","location":"assets","locale":"","width":2786,"height":1920},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3589073,"resolution":"6","location":"assets","locale":"","width":2562,"height":1920},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3589073,"resolution":"7","location":"assets","locale":"","width":2786,"height":1920},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3589073,"resolution":"8","location":"assets","locale":"","width":2786,"height":1920}},"screenshots":{"1":"Dashboard \u2014 current conditions for your station","2":"Table View <code>[ws40_tableview]<\/code> \u2014 responsive weather table with icon packs","3":"Local webcam management","4":"Settings \u2014 column mapping and diagnostics with realtime test","5":"History \u2014 log rows with date filters and pagination"}},"plugin_section":[],"plugin_tags":[3518,7877,4899,269299,6404],"plugin_category":[59],"plugin_contributors":[269300],"plugin_business_model":[],"class_list":["post-313447","plugin","type-plugin","status-publish","hentry","plugin_tags-realtime","plugin_tags-temperature","plugin_tags-weather","plugin_tags-weather-station","plugin_tags-webcam","plugin_category-utilities-and-tools","plugin_contributors-lino80sa","plugin_committers-lino80sa"],"banners":{"banner":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/banner-772x250.png?rev=3589409","banner_2x":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/banner-1544x500.png?rev=3589409","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/icon-128x128.png?rev=3589409","icon_2x":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/icon-256x256.png?rev=3589409","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-1.png?rev=3589073","caption":"Dashboard \u2014 current conditions for your station"},{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-2.png?rev=3589409","caption":"Table View <code>[ws40_tableview]<\/code> \u2014 responsive weather table with icon packs"},{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-3.png?rev=3589073","caption":"Local webcam management"},{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-4.png?rev=3589073","caption":"Settings \u2014 column mapping and diagnostics with realtime test"},{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-5.png?rev=3589073","caption":"History \u2014 log rows with date filters and pagination"},{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-6.png?rev=3589073","caption":""},{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-7.png?rev=3589073","caption":""},{"src":"https:\/\/ps.w.org\/ws40-live-weather\/assets\/screenshot-8.png?rev=3589073","caption":""}],"raw_content":"<!--section=description-->\n<p>WS40 \u2013 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.<\/p>\n\n<h4>Supported sources<\/h4>\n\n<p>The format is auto-detected, with no manual configuration:<\/p>\n\n<ul>\n<li>Meteobridge and Meteobridge PRO (standard realtime.txt and the Master key\/value template)<\/li>\n<li>Cumulus MX and Cumulus v1 (with automatic unit conversion)<\/li>\n<\/ul>\n\n<p>Davis, Ecowitt, Fine Offset, LaCrosse, Ambient Weather and other hardware work through Meteobridge as a gateway.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Live dashboard \u2014 current values for your station in the admin<\/li>\n<li>Table View <code>[ws40_tableview]<\/code> \u2014 responsive weather table with 1\u20133 column layouts, group separators and icon packs<\/li>\n<li>Local webcam <code>[ws40_webcam]<\/code> \u2014 a gallery folder or a single fixed image, with auto-refresh<\/li>\n<li>History \u2014 log with date filters, pagination and manual cleanup<\/li>\n<li>Column mapping \u2014 verify the source reading and run a realtime test<\/li>\n<li>Diagnostics \u2014 system status, cron health and database check<\/li>\n<li>Built-in step-by-step guide<\/li>\n<li>Available in English, Italian, French, Spanish, German and Portuguese (BR)<\/li>\n<\/ul>\n\n<h4>Trademarks<\/h4>\n\n<p>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.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>WS40 reads weather data only from the realtime.txt source you configure (your own weather station or server), using the URL or local file you provide. It does not connect to any other external service and does not send any data to third parties.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>WS40 does not collect, store or transmit any personal data about your website visitors. It only reads weather data from your configured source and stores it in your local WordPress database. For privacy questions: info@weatherstation40.live<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ws40-live-weather<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from Plugins \u2192 Add New.<\/li>\n<li>Activate the plugin from Plugins \u2192 Installed Plugins.<\/li>\n<li>Go to WS40 \u2192 Dashboard and add your station.<\/li>\n<li>Enter the URL of your realtime.txt file (for example <code>https:\/\/example.com\/meteo\/realtime.txt<\/code>).<\/li>\n<li>Open WS40 \u2192 Settings and run the Realtime Test to confirm the source is read correctly.<\/li>\n<li>Paste <code>[ws40_tableview]<\/code> into any page, post or widget.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20weather%20stations%20are%20supported%3F\"><h3>Which weather stations are supported?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20i%20use%20a%20local%20file%20instead%20of%20a%20url%3F\"><h3>Can I use a local file instead of a URL?<\/h3><\/dt>\n<dd><p>Yes. The file must be inside <code>wp-content\/uploads\/<\/code>. Arbitrary filesystem paths are not allowed; an http(s) URL is the recommended option.<\/p><\/dd>\n<dt id=\"does%20it%20work%20on%20shared%20hosting%3F\"><h3>Does it work on shared hosting?<\/h3><\/dt>\n<dd><p>Yes. For reliable logging on shared hosting, an external trigger (such as your hosting scheduler) is recommended over WP-Cron.<\/p><\/dd>\n<dt id=\"which%20languages%20are%20included%3F\"><h3>Which languages are included?<\/h3><\/dt>\n<dd><p>English, Italian, French, Spanish, German and Portuguese (BR), all fully translated.<\/p><\/dd>\n<dt id=\"is%20there%20a%20premium%20version%3F\"><h3>Is there a premium version?<\/h3><\/dt>\n<dd><p>The free version is complete and fully functional on its own. A separate premium version with additional features is available at <a href=\"https:\/\/www.weatherstation40.live\/\">weatherstation40.live<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Removed residual non-file engine handling and the activation reset, so the build no longer ships disabled code paths.<\/li>\n<li>Hardened admin output escaping (wp_kses) in card and webcam renderers.<\/li>\n<li>Removed a redundant non-distributable file from the package.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Table View now resolves the active station automatically and shows a clear notice when no data is available yet.<\/li>\n<li>Local webcam supports either a gallery folder or a single fixed image file, with a built-in source test.<\/li>\n<li>Added an offline threshold setting: the Table View shows an OFFLINE badge when the latest reading is older than the configured time.<\/li>\n<li>Hardened local file reading, plus i18n and compatibility fixes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First public release.<\/li>\n<\/ul>","raw_excerpt":"Show real-time data from your personal weather station on WordPress: a Table View shortcode, a local webcam, history logging and diagnostics.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/313447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=313447"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lino80sa"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=313447"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=313447"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=313447"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=313447"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=313447"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=313447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}