{"id":2529,"date":"2026-06-12T17:27:20","date_gmt":"2026-06-12T15:27:20","guid":{"rendered":"https:\/\/www.vivereilmontepizzo.it\/?page_id=2529"},"modified":"2026-08-31T10:37:19","modified_gmt":"2026-08-31T08:37:19","slug":"stazione-meteo","status":"publish","type":"page","link":"https:\/\/www.vivereilmontepizzo.it\/en\/stazione-meteo\/","title":{"rendered":"Weather Station"},"content":{"rendered":"<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h2 class=\"wp-block-heading\">Dati Meteo<\/h2>\n\n\n\n<style data-wp-block-html=\"css\">\n\/* --- STILI CSS --- *\/\n.meteo-container {\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Arial, sans-serif;\n    max-width: 800px;\n    margin: 20px auto;\n    color: #333;\n}\n.meteo-card {\n    background: #ffffff;\n    border-radius: 12px;\n    padding: 20px;\n    margin-bottom: 20px;\n    box-shadow: 0 4px 15px rgba(0,0,0,0.06);\n    border: 1px solid #eef2f5;\n}\n.meteo-card h3 {\n    margin: 0 0 15px 0;\n    font-size: 1.1rem;\n    color: #2c3e50;\n    border-bottom: 2px solid #f1f5f9;\n    padding-bottom: 8px;\n}\n\n\/* Stili specifici Card Volabilit\u00e0 *\/\n.fly-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    border-bottom: 2px solid rgba(0,0,0,0.05);\n    padding-bottom: 8px;\n    margin-bottom: 15px;\n}\n.fly-header h3 { border: none; margin: 0; padding: 0; }\n.fly-score { font-size: 1.8rem; font-weight: bold; color: #1e293b; }\n.fly-body { display: flex; align-items: center; gap: 20px; }\n.fly-status-badge {\n    padding: 8px 16px;\n    border-radius: 20px;\n    font-weight: bold;\n    font-size: 0.95rem;\n    letter-spacing: 0.5px;\n    text-transform: uppercase;\n    color: white;\n    text-align: center;\n    min-width: 130px;\n}\n.fly-message { margin: 0; font-size: 1.05rem; color: #334155; font-weight: 500; }\n\n\/* Classi di stato dinamiche per lo sfondo della Volabilit\u00e0 *\/\n.status-green { background: #f0fdf4 !important; border: 1px solid #bbf7d0; }\n.status-green .fly-status-badge { background-color: #22c55e; }\n.status-orange { background: #fff7ed !important; border: 1px solid #fed7aa; }\n.status-orange .fly-status-badge { background-color: #f97316; }\n.status-red { background: #fef2f2 !important; border: 1px solid #fecaca; }\n.status-red .fly-status-badge { background-color: #ef4444; }\n.status-gray { background: #f8fafc !important; border: 1px solid #e2e8f0; }\n.status-gray .fly-status-badge { background-color: #94a3b8; }\n\n\/* Layout Vento *\/\n.wind-main {\n    display: flex;\n    align-items: center;\n    justify-content: space-around;\n    padding: 15px 0;\n    background: #f8fafc;\n    border-radius: 8px;\n    margin-bottom: 15px;\n}\n.wind-arrow-box { text-align: center; display: flex; flex-direction: column; align-items: center; }\n.wind-arrow {\n    font-size: 3.5rem;\n    font-weight: bold;\n    color: #3498db;\n    line-height: 1;\n    transition: transform 0.8s ease-in-out;\n    width: 60px;\n    height: 60px;\n}\n.wind-speeds { display: flex; gap: 30px; }\n.main-speed, .gust-speed { display: flex; flex-direction: column; }\n.wind-speeds .value { font-size: 2rem; color: #1e293b; }\n.wind-speeds .value small { font-size: 1rem; color: #64748b; }\n\n\/* Griglie e Righe *\/\n.meteo-grid-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n.meteo-grid-mini { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }\n.mini-item { background: #f1f5f9; padding: 10px; border-radius: 6px; }\n.full-width { grid-column: span 2; }\n.data-row { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f1f5f9; }\n.data-row.highlight { background: #f1f5f9; font-weight: bold; padding: 10px 5px; border-radius: 4px; border: 1px dashed #cbd5e1; }\n.label { font-size: 0.9rem; color: #64748b; }\n.value strong { color: #0f172a; }\n\n.meteo-alert {\n    background-color: #ef4444; color: white; padding: 15px; border-radius: 8px;\n    font-weight: bold; text-align: center; margin-bottom: 20px; animation: pulse 2s infinite;\n}\n.hidden { display: none !important; }\n.bg-danger { background-color: #fee2e2 !important; border: 1px solid #fca5a5; }\n.text-danger { color: #ef4444 !important; font-weight: bold; }\n.meteo-footer { text-align: center; font-size: 0.85rem; color: #94a3b8; margin-top: 10px; }\n\n@media (max-width: 600px) {\n    .meteo-grid-two-col { grid-template-columns: 1fr; }\n    .wind-main { flex-direction: column; gap: 15px; }\n    .fly-body { flex-direction: column; align-items: flex-start; gap: 10px; }\n}\n@keyframes pulse { 0% { opacity: 1; } 50% { opacity: 0.7; } 100% { opacity: 1; } }\n<\/style>\n\n<script data-wp-block-html=\"js\">\ntakeOffHigh = 1194;\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n    \/\/ CAMBIA QUESTO URL CON IL PERCORSO REALE DEL TUO FILE JSON\n    const JSON_URL = 'https:\/\/www.vivereilmontepizzo.it\/data\/processed_data.json'; \n\n    function updateMeteoDashboard() {\n        fetch(JSON_URL, { cache: \"no-store\" })\n            .then(response => {\n                if (!response.ok) throw new Error('Errore di rete');\n                return response.json();\n            })\n            .then(data => {\n                const alertBanner = document.getElementById('meteo-offline-alert');\n                \n                \/\/ 1. Controllo di sicurezza sulla freschezza del dato (Timeout 12 minuti)\n                const lastUpdateParsed = new Date(data.meta.last_update.replace(\/-\/g, \"\/\"));\n                const now = new Date();\n                const differenceInMinutes = (now - lastUpdateParsed) \/ 1000 \/ 60;\n\n                if (!data.meta.is_online || differenceInMinutes > 12) {\n                    alertBanner.classList.remove('hidden');\n                } else {\n                    alertBanner.classList.add('hidden');\n                }\n\n                \/\/ 2. Aggiornamento dell'Indice di Volabilit\u00e0 Generale\n                const flyCard = document.getElementById('fly-card');\n                const flyScore = document.getElementById('val-fly-score');\n                const flyStatus = document.getElementById('val-fly-status');\n                const flyMsg = document.getElementById('val-fly-msg');\n\n                flyScore.textContent = `${data.flyability.score_percent}%`;\n                flyStatus.textContent = data.flyability.status;\n                flyMsg.textContent = data.flyability.msg;\n\n                \/\/ Resetta le vecchie classi di colore e applica la nuova fornita dal JSON\n                flyCard.className = \"meteo-card fly-card\"; \n                if (data.flyability.status_color === \"green\") flyCard.classList.add('status-green');\n                else if (data.flyability.status_color === \"orange\") flyCard.classList.add('status-orange');\n                else if (data.flyability.status_color === \"red\") flyCard.classList.add('status-red');\n                else flyCard.classList.add('status-gray');\n\n                \/\/ 3. Comparto Vento\n                document.getElementById('val-wind-current').textContent = data.wind.current.speed;\n                document.getElementById('val-wind-burst').textContent = data.wind.max_burst_1h;\n                document.getElementById('val-wind-cardinal').textContent = data.wind.current.direction_cardinal;\n                \n                document.getElementById('val-wind-avg10').textContent = data.wind.avg_10m.speed;\n                document.getElementById('val-wind-dir10').textContent = data.wind.avg_10m.direction_cardinal;\n                document.getElementById('val-wind-avg30').textContent = data.wind.avg_30m.speed;\n                document.getElementById('val-wind-dir30').textContent = data.wind.avg_30m.direction_cardinal;\n                document.getElementById('val-gust-factor').textContent = data.wind.gust_factor;\n\n                \/\/ Rotazione della freccia del vento basata sui gradi cardinali\n\n                \/\/const arrowRotation = data.wind.current.direction_deg;\n                const arrowRotation = (data.wind.current.direction_deg + 180) % 360;\n                document.getElementById('wind-arrow').style.transform = `rotate(${arrowRotation}deg)`;\n\n                \/\/ Colorazione condizionale locale del Gust Factor\n                const gustBox = document.getElementById('gust-box');\n                const gustValueElement = document.getElementById('val-gust-factor');\n                if (data.wind.gust_factor >= 15) { \n                    gustBox.classList.add('bg-danger');\n                    gustValueElement.classList.add('text-danger');\n                } else {\n                    gustBox.classList.remove('bg-danger');\n                    gustValueElement.classList.remove('text-danger');\n                }\n\n                \/\/ 4. Comparto Aria e Termica\n                document.getElementById('val-temp').textContent = data.live.temperature;\n                document.getElementById('val-humidity').textContent = data.live.humidity;\n                document.getElementById('val-dew-point').textContent = data.live.dew_point;\n                document.getElementById('val-cloud-base').textContent = data.live.cloud_base_lcl_meters + takeOffHigh;\n\n                \/\/ 5. Pressione e Pioggia\n                document.getElementById('val-pressure').textContent = data.live.pressure;\n                const trend = data.live.pressure_trend_3h;\n                document.getElementById('val-pressure-trend').textContent = trend > 0 ? `+${trend}` : trend;\n                document.getElementById('val-rain-intensity').textContent = data.rain.intensity;\n                document.getElementById('val-rain-today').textContent = data.rain.today;\n                \n                \/\/ Footer\n                document.getElementById('val-last-update').textContent = data.meta.last_update;\n            })\n            .catch(error => {\n                console.error('Errore nel caricamento dei dati meteo:', error);\n                document.getElementById('meteo-offline-alert').classList.remove('hidden');\n            });\n    }\n\n    \/\/ Carica subito e imposta il loop a 30 secondi\n    updateMeteoDashboard();\n    setInterval(updateMeteoDashboard, 30000); \n});\n<\/script>\n\n<div id=\"meteo-dashboard\" class=\"meteo-container\">\n    \n    <div id=\"meteo-offline-alert\" class=\"meteo-alert hidden\">\n        \u26a0\ufe0f DATI NON AGGIORNATI O STAZIONE OFFLINE &#8211; NON AFFIDABILI PER IL VOLO!\n    <\/div>\n\n    <div id=\"fly-card\" class=\"meteo-card fly-card status-gray\">\n        <div class=\"fly-header\">\n            <h3>\ud83e\ude82 STATO VOLABILIT\u00c0<\/h3>\n            <span id=\"val-fly-score\" class=\"fly-score\">&#8211;%<\/span>\n        <\/div>\n        <div class=\"fly-body\">\n            <div id=\"val-fly-status\" class=\"fly-status-badge\">VERIFICA&#8230;<\/div>\n            <p id=\"val-fly-msg\" class=\"fly-message\">Caricamento delle condizioni dello spot&#8230;<\/p>\n        <\/div>\n    <\/div>\n\n    <div class=\"meteo-card wind-card\">\n        <h3>\ud83d\udca8 CONDIZIONI VENTO<\/h3>\n        <div class=\"wind-main\">\n            <div class=\"wind-arrow-box\">\n                <div id=\"wind-arrow\" class=\"wind-arrow\">\u2191<\/div>\n                <span id=\"val-wind-cardinal\">&#8212;<\/span>\n            <\/div>\n            <div class=\"wind-speeds\">\n                <div class=\"main-speed\">\n                    <span class=\"label\">Istantaneo<\/span>\n                    <span class=\"value\"><strong id=\"val-wind-current\">&#8212;<\/strong> <small>km\/h<\/small><\/span>\n                <\/div>\n                <div id=\"gust-box\" class=\"gust-speed\">\n                    <span class=\"label\">Raffica (1h)<\/span>\n                    <span class=\"value\"><strong id=\"val-wind-burst\">&#8212;<\/strong> <small>km\/h<\/small><\/span>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"meteo-grid-mini\">\n            <div class=\"mini-item\">\n                <span class=\"label\">Media 10 min<\/span>\n                <span class=\"value\"><strong id=\"val-wind-avg10\">&#8212;<\/strong> km\/h (<span id=\"val-wind-dir10\">&#8212;<\/span>)<\/span>\n            <\/div>\n            <div class=\"mini-item\">\n                <span class=\"label\">Media 30 min<\/span>\n                <span class=\"value\"><strong id=\"val-wind-avg30\">&#8212;<\/strong> km\/h (<span id=\"val-wind-dir30\">&#8212;<\/span>)<\/span>\n            <\/div>\n            <div class=\"mini-item full-width\">\n                <span class=\"label\">Gust Factor (Indice Turbolenza)<\/span>\n                <span class=\"value\"><strong id=\"val-gust-factor\">&#8212;<\/strong> km\/h<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"meteo-grid-two-col\">\n        <div class=\"meteo-card\">\n            <h3>\ud83c\udf21\ufe0f AEROLOGIA &amp; TERMICA<\/h3>\n            <div class=\"data-row\">\n                <span class=\"label\">Temperatura<\/span>\n                <span class=\"value\"><strong id=\"val-temp\">&#8212;<\/strong> \u00b0C<\/span>\n            <\/div>\n            <div class=\"data-row\">\n                <span class=\"label\">Umidit\u00e0 Relativa<\/span>\n                <span class=\"value\"><strong id=\"val-humidity\">&#8212;<\/strong> %<\/span>\n            <\/div>\n            <div class=\"data-row highlight\">\n                <span class=\"label\">Base Nubi Stimata (LCL)<\/span>\n                <span class=\"value\"><strong id=\"val-cloud-base\">&#8212;<\/strong> m slm<\/span>\n            <\/div>\n            <div class=\"data-row\">\n                <span class=\"label\">Dew Point<\/span>\n                <span class=\"value\"><strong id=\"val-dew-point\">&#8212;<\/strong> \u00b0C<\/span>\n            <\/div>\n        <\/div>\n\n        <div class=\"meteo-card\">\n            <h3>\ud83d\udcc8 PRESSIONE &amp; PIOGGIA<\/h3>\n            <div class=\"data-row\">\n                <span class=\"label\">Pressione<\/span>\n                <span class=\"value\"><strong id=\"val-pressure\">&#8212;<\/strong> hPa<\/span>\n            <\/div>\n            <div class=\"data-row\">\n                <span class=\"label\">Tendenza (3h)<\/span>\n                <span class=\"value\"><strong id=\"val-pressure-trend\">&#8212;<\/strong> hPa<\/span>\n            <\/div>\n            <div class=\"data-row\">\n                <span class=\"label\">Intensit\u00e0 Pioggia<\/span>\n                <span class=\"value\"><strong id=\"val-rain-intensity\">&#8212;<\/strong> mm\/h<\/span>\n            <\/div>\n            <div class=\"data-row\">\n                <span class=\"label\">Pioggia Oggi<\/span>\n                <span class=\"value\"><strong id=\"val-rain-today\">&#8212;<\/strong> mm<\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"meteo-footer\">\n        Ultimo aggiornamento della stazione: <span id=\"val-last-update\">&#8212;<\/span>\n    <\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<h2 class=\"wp-block-heading\">Webcam<\/h2>\n\n\n\n<figure data-spectra-id=\"spectra-ml6mdwt4-jiuivn\" class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/www.tripwebcam.com\/webcam-live\/montepizzo\/cam.jpg\" alt=\"Cam\" title=\"Weather Station\" \/><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/chat.whatsapp.com\/BXi2E6yXT28EG855E9IupV?mode=gi_c\">For further information, join the WhatsApp group<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Dati Meteo \u26a0\ufe0f DATI NON AGGIORNATI O STAZIONE OFFLINE &#8211; NON AFFIDABILI PER IL VOLO! \ud83e\ude82 STATO VOLABILIT\u00c0 &#8211;% VERIFICA&#8230; Caricamento delle condizioni dello spot&#8230; \ud83d\udca8 CONDIZIONI VENTO \u2191 &#8212; Istantaneo &#8212; km\/h Raffica (1h) &#8212; km\/h Media 10 min &#8212; km\/h (&#8212;) Media 30 min &#8212; km\/h (&#8212;) Gust Factor (Indice Turbolenza) &#8212; km\/h [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2529","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"trp-custom-language-flag":false},"uagb_author_info":{"display_name":"marco","author_link":"https:\/\/www.vivereilmontepizzo.it\/en\/author\/marco\/"},"uagb_comment_info":0,"uagb_excerpt":"Dati Meteo \u26a0\ufe0f DATI NON AGGIORNATI O STAZIONE OFFLINE &#8211; NON AFFIDABILI PER IL VOLO! \ud83e\ude82 STATO VOLABILIT\u00c0 &#8211;% VERIFICA&#8230; Caricamento delle condizioni dello spot&#8230; \ud83d\udca8 CONDIZIONI VENTO \u2191 &#8212; Istantaneo &#8212; km\/h Raffica (1h) &#8212; km\/h Media 10 min &#8212; km\/h (&#8212;) Media 30 min &#8212; km\/h (&#8212;) Gust Factor (Indice Turbolenza) &#8212; km\/h&hellip;","_links":{"self":[{"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/pages\/2529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/comments?post=2529"}],"version-history":[{"count":1,"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/pages\/2529\/revisions"}],"predecessor-version":[{"id":2605,"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/pages\/2529\/revisions\/2605"}],"wp:attachment":[{"href":"https:\/\/www.vivereilmontepizzo.it\/en\/wp-json\/wp\/v2\/media?parent=2529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}