{"id":30627,"date":"2022-02-22T13:07:56","date_gmt":"2022-02-22T12:07:56","guid":{"rendered":"https:\/\/swiss-energypark.com\/microgrid\/"},"modified":"2026-03-04T23:58:40","modified_gmt":"2026-03-04T22:58:40","slug":"microgrid","status":"publish","type":"page","link":"https:\/\/swiss-energypark.com\/fr\/microgrid\/","title":{"rendered":"Microgrid"},"content":{"rendered":"<p><div class=\"fusion-bg-parallax\" data-bg-align=\"center top\" data-direction=\"down\" data-mute=\"false\" data-opacity=\"100\" data-velocity=\"-0.3\" data-mobile-enabled=\"false\" data-break_parents=\"0\" data-bg-image=\"https:\/\/swiss-energypark.com\/wp-content\/uploads\/2022\/02\/wind-turbine-energy-generaters-on-wind-farm-mood-swiss-energypark.jpg\" data-bg-repeat=\"false\" data-bg-color=\"#6a8a76\" data-blend-mode=\"multiply\" ><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container fusion-parallax-down nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-background-position:center top;--awb-background-blend-mode:multiply;--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top-medium:100px;--awb-padding-top-small:0px;--awb-min-height:500px;--awb-min-height-small:350px;--awb-background-color:#6a8a76;--awb-background-image:url(&quot;https:\/\/swiss-energypark.com\/wp-content\/uploads\/2022\/02\/wind-turbine-energy-generaters-on-wind-farm-mood-swiss-energypark.jpg&quot;);--awb-background-size:cover;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-end fusion-flex-content-wrap\" style=\"max-width:1296px;margin-left: calc(-8% \/ 2 );margin-right: calc(-8% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-padding-bottom:64px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.68%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:3.68%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.68%;--awb-spacing-left-medium:3.68%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:3.68%;--awb-spacing-left-small:3.68%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-one\" style=\"--awb-text-color:#ffffff;--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h1 class=\"fusion-title-heading title-heading-left\" style=\"margin:0;\">Microgrid<\/h1><\/div><\/div><\/div><\/div><\/div>\n<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:60px;--awb-padding-bottom:30px;--awb-background-color:#eaeaea;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1296px;margin-left: calc(-8% \/ 2 );margin-right: calc(-8% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-animated\" style=\"--awb-padding-bottom:20px;--awb-padding-bottom-medium:40px;--awb-padding-bottom-small:20px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.68%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:3.68%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.68%;--awb-spacing-left-medium:3.68%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:3.68%;--awb-spacing-left-small:3.68%;\" data-animationType=\"fadeInUp\" data-animationDuration=\"0.8\" data-animationOffset=\"bottom-in-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h3 class=\"fusion-title-heading title-heading-left\" style=\"margin:0;\">Comment fonctionne un microgrid<\/h3><\/div><div class=\"fusion-text fusion-text-1 awb-text-cols fusion-text-columns-2\" style=\"--awb-font-size:var(--awb-typography4-font-size);--awb-line-height:var(--awb-typography4-line-height);--awb-letter-spacing:var(--awb-typography4-letter-spacing);--awb-text-transform:var(--awb-typography4-text-transform);--awb-columns:2;--awb-column-spacing:2em;--awb-column-min-width:100px;--awb-text-font-family:var(--awb-typography4-font-family);--awb-text-font-weight:var(--awb-typography4-font-weight);--awb-text-font-style:var(--awb-typography4-font-style);\"><div class=\"flex_column av_two_third flex_column_div first avia-builder-el-1 el_after_av_heading avia-builder-el-last \">\n<section class=\"av_textblock_section \">\n<div class=\"avia_textblock \">\n<p>La production d\u00e9centralis\u00e9e d&rsquo;\u00e9nergie &#8211; principalement par le biais d&rsquo;installations photovolta\u00efques &#8211; permet la mise en place de ce que l&rsquo;on appelle des microgrids. Les microgrids sont des zones de r\u00e9seau ferm\u00e9es qui peuvent \u00eatre exploit\u00e9es de mani\u00e8re isol\u00e9e, mais qui sont la plupart du temps exploit\u00e9es en r\u00e9seau interconnect\u00e9. Au niveau communal, les \u00e9nergies renouvelables, le stockage de l&rsquo;\u00e9nergie et une distribution intelligente peuvent \u00eatre combin\u00e9s localement. Une gestion de la charge appropri\u00e9e permet de coordonner la production et la consommation. Les microgrids deviennent ainsi des \u00e9l\u00e9ments du r\u00e9seau de distribution intelligent, appel\u00e9 smart grid.<\/p>\n<\/div>\n<\/section>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling bordered-column-section\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:120px;--awb-padding-bottom:100px;--awb-padding-bottom-small:40px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1248px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-3 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h3 class=\"fusion-title-heading title-heading-left\" style=\"margin:0;\">Mesures en temps r\u00e9el<\/h3><\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-padding-top:20px;--awb-padding-right:20px;--awb-padding-bottom:20px;--awb-padding-left:20px;--awb-bg-size:cover;--awb-border-color:#00925b;--awb-border-top:1px;--awb-border-right:1px;--awb-border-bottom:1px;--awb-border-left:8px;--awb-border-style:solid;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-margin-bottom-small:20px;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeInUp\" data-animationDuration=\"0.8\" data-animationOffset=\"bottom-in-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-2\" style=\"--awb-content-alignment:center;--awb-text-transform:none;--awb-text-color:#000000;--awb-text-font-family:&quot;Heebo&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>Production totale<\/p>\n<\/div><div class=\"fusion-widget-area awb-widget-area-element fusion-widget-area-1 fusion-content-widget-area\" style=\"--awb-title-color:#000000;--awb-padding:0px 0px 0px 0px;\"><div id=\"custom_html-24\" class=\"widget_text widget widget_custom_html\" style=\"border-style: solid;border-color:transparent;border-width:0px;\"><div class=\"textwidget custom-html-widget\"><style>\r\n    .production-kpi-container {\r\n        width: 100%;\r\n        max-width: 100%;\r\n        text-align: center;\r\n    }\r\n<\/style>\r\n<div class=\"production-kpi-container\">\r\n    <span class=\"production-kpi-value\"><\/span>\r\n<\/div>\r\n<script>\r\n    document.onload = init();\r\n\r\n    function init() {\r\n        let widgetSignals = [{\r\n            alias: 'wind_production',\r\n            signal: 'WI_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'water_production',\r\n            signal: 'HY_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'solar_production',\r\n            signal: 'SL_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }];\r\n        let translatedTexts = [{\r\n            langKey: 'de',\r\n            production: 'Produktion'\r\n        }, {\r\n            langKey: 'fr',\r\n            production: 'Production'\r\n        }, {\r\n            langKey: 'en',\r\n            production: 'Production'\r\n        }];\r\n        let translationIndex = 0;\r\n        let widgetQueryInterval = 60; \/\/seconds (3600 seconds = 1hour);\r\n        setTimeout(() => {\r\n            if (window.location.href.includes('\/fr\/')) {\r\n                translationIndex = 1;\r\n            }\r\n            if (window.location.href.includes('\/en\/')) {\r\n                translationIndex = 2;\r\n            }\r\n            loadWidgetStyles();\r\n            setInterval(() => {\r\n                loadWidgetStyles();\r\n            }, widgetQueryInterval * 1000)\r\n        }, 10);\r\n        window.addEventListener('resize', resize);\r\n\r\n        function resize() {\r\n            document.getElementsByClassName('production-kpi-value')[0].style.fontSize = window.innerWidth < 800 ? (SEPWidgetConfig.productionValueWidget.valueFontSize - 1) + 'rem' : SEPWidgetConfig.productionValueWidget.valueFontSize + 'rem';\r\n        }\r\n        async function loadWidgetStyles() {\r\n            await loadData();\r\n            document.getElementsByClassName('production-kpi-value')[0].style.fontSize = SEPWidgetConfig.productionValueWidget.valueFontSize + 'rem';\r\n            document.getElementsByClassName('production-kpi-value')[0].style.color = SEPWidgetConfig.productionValueWidget.valueColor;\r\n        }\r\n        async function loadData() {\r\n            const data = await getData();\r\n            console.log(data);\r\n            prepareWidgetData(data);\r\n        }\r\n\r\n        function parseHighComma(value) {\r\n            return value.toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \"'\");\r\n        }\r\n\r\n        function prepareWidgetData(rawData) {\r\n            let data = [];\r\n            for (const i of widgetSignals) {\r\n                if (rawData.data[i.alias][0].data.lastValue.length > 0) {\r\n                   const total = rawData.data[i.alias][0].data.lastValue.reduce(\r\n  (acc, d) => acc + d.Value \/ 1000,\r\n  0\r\n);\r\n\t\t\t\t\t\t\t\t\tdata.push(total);\r\n                } else {\r\n                    data.push(0);\r\n                }\r\n            }\r\n            document.getElementsByClassName('production-kpi-value')[0].innerHTML = parseHighComma(Number(data.reduce((a, b) => a + b)).toFixed(0));\r\n        }\r\n        async function getData() {\r\n            let step = 60;\r\n            let queryString = 'query {';\r\n            for (const i of widgetSignals) {\r\n                queryString += `\r\n        ${i.alias}: SIGNALS (where: {code: \"${i.signal}\"}){\r\n          name\r\n          unit\r\n          data {\r\n\t\t\t\t\t\tlastValue {\r\n\t\t\t\t\t\t\tDate\r\n\t\t\t\t\t\t\tValue\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n        }\r\n      `\r\n            };\r\n            queryString += '}'\r\n            const data = JSON.stringify({\r\n                query: queryString\r\n            });\r\n            const response = await fetch(\r\n                SEPWidgetConfig.apiServerURL, {\r\n                    method: 'post',\r\n                    body: data,\r\n                    headers: {\r\n                        'Content-Type': 'application\/json',\r\n                        'Content-Length': data.length\r\n                    },\r\n                }\r\n            );\r\n            return await response.json();\r\n        }\r\n    }\r\n<\/script><\/div><\/div><div class=\"fusion-additional-widget-content\"><\/div><\/div><div class=\"fusion-text fusion-text-3 fusion-text-no-margin\" style=\"--awb-content-alignment:center;--awb-font-size:16px;--awb-text-transform:none;--awb-text-color:#000000;--awb-margin-bottom:0px;--awb-text-font-family:&quot;Heebo&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>kW<\/p>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-padding-top:20px;--awb-padding-right:20px;--awb-padding-bottom:20px;--awb-padding-left:20px;--awb-bg-size:cover;--awb-border-color:#00925b;--awb-border-top:1px;--awb-border-right:1px;--awb-border-bottom:1px;--awb-border-left:8px;--awb-border-style:solid;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-margin-bottom-small:20px;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeInUp\" data-animationDuration=\"0.8\" data-animationOffset=\"bottom-in-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-4\" style=\"--awb-content-alignment:center;--awb-text-transform:none;--awb-text-color:#000000;--awb-text-font-family:&quot;Heebo&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>Consommation totale<\/p>\n<\/div><div class=\"fusion-widget-area awb-widget-area-element fusion-widget-area-2 fusion-content-widget-area\" style=\"--awb-title-color:#000000;--awb-padding:0px 0px 0px 0px;\"><div id=\"custom_html-21\" class=\"widget_text widget widget_custom_html\" style=\"border-style: solid;border-color:transparent;border-width:0px;\"><div class=\"textwidget custom-html-widget\"><style>\r\n    .consumption-kpi-container {\r\n        width: 100%;\r\n        max-width: 100%;\r\n        text-align: center;\r\n    }\r\n<\/style>\r\n<div class=\"consumption-kpi-container\">\r\n    <span class=\"consumption-kpi-value\"><\/span>\r\n<\/div>\r\n<script>\r\n    document.onload = init();\r\n\r\n    function init() {\r\n        let widgetSignals = [{\r\n            alias: 'wind_production',\r\n            signal: 'WI_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'water_production',\r\n            signal: 'HY_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'solar_production',\r\n            signal: 'SL_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'global_production',\r\n            signal: 'GL_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }];\r\n        let translatedTexts = [{\r\n            langKey: 'de',\r\n            consumption: 'Verbrauch'\r\n        }, {\r\n            langKey: 'fr',\r\n            consumption: 'Consommation'\r\n        }, {\r\n            langKey: 'en',\r\n            consumption: 'Consumption'\r\n        }];\r\n        let translationIndex = 0;\r\n        let widgetQueryInterval = 60; \/\/seconds (3600 seconds = 1hour);\r\n        setTimeout(() => {\r\n            if (window.location.href.includes('\/fr\/')) {\r\n                translationIndex = 1;\r\n            }\r\n            if (window.location.href.includes('\/en\/')) {\r\n                translationIndex = 2;\r\n            }\r\n            loadWidgetStyles();\r\n            setInterval(() => {\r\n                loadWidgetStyles();\r\n            }, widgetQueryInterval * 1000)\r\n        }, 10);\r\n        window.addEventListener('resize', resize);\r\n\r\n        function resize() {\r\n            document.getElementsByClassName('consumption-kpi-value')[0].style.fontSize = window.innerWidth < 800 ? (SEPWidgetConfig.consumptionValueWidget.valueFontSize - 1) + 'rem' : SEPWidgetConfig.consumptionValueWidget.valueFontSize + 'rem';\r\n        }\r\n        async function loadWidgetStyles() {\r\n            await loadData();\r\n            document.getElementsByClassName('consumption-kpi-value')[0].style.fontSize = SEPWidgetConfig.consumptionValueWidget.valueFontSize + 'rem';\r\n            document.getElementsByClassName('consumption-kpi-value')[0].style.color = SEPWidgetConfig.consumptionValueWidget.valueColor;\r\n        }\r\n        async function loadData() {\r\n            const data = await getData();\r\n            prepareWidgetData(data);\r\n        }\r\n\r\n        function parseHighComma(value) {\r\n            return value.toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \"'\");\r\n        }\r\n\r\n        function prepareWidgetData(rawData) {\r\n            let data = [];\r\n            for (const i of widgetSignals) {\r\n                if (rawData.data[i.alias][0].data.lastValue.length > 0) {\r\n                    const total = rawData.data[i.alias][0].data.lastValue.reduce(\r\n  (acc, d) => acc + d.Value \/ 1000,\r\n  0\r\n);\r\n\t\t\t\t\t\t\t\t\tdata.push(total);\r\n                } else {\r\n                    data.push(0);\r\n                }\r\n            }\r\n            const totalConsumption = data[0] + data[1] + data[2] - data[3];\r\n            document.getElementsByClassName('consumption-kpi-value')[0].innerHTML = parseHighComma(Number(totalConsumption).toFixed(0));\r\n        }\r\n        async function getData() {\r\n            let step = 60;\r\n            let queryString = 'query {';\r\n            for (const i of widgetSignals) {\r\n                queryString += `\r\n        ${i.alias}: SIGNALS (where: {code: \"${i.signal}\"}){\r\n          name\r\n          unit\r\n          data {\r\n\t\t\t\t\t\tlastValue {\r\n\t\t\t\t\t\t\tDate\r\n\t\t\t\t\t\t\tValue\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n        }\r\n      `\r\n            };\r\n            queryString += '}'\r\n            const data = JSON.stringify({\r\n                query: queryString\r\n            });\r\n            const response = await fetch(\r\n                SEPWidgetConfig.apiServerURL, {\r\n                    method: 'post',\r\n                    body: data,\r\n                    headers: {\r\n                        'Content-Type': 'application\/json',\r\n                        'Content-Length': data.length\r\n                    },\r\n                }\r\n            );\r\n            return await response.json();\r\n        }\r\n    }\r\n<\/script><\/div><\/div><div class=\"fusion-additional-widget-content\"><\/div><\/div><div class=\"fusion-text fusion-text-5 fusion-text-no-margin\" style=\"--awb-content-alignment:center;--awb-font-size:16px;--awb-text-transform:none;--awb-text-color:#000000;--awb-margin-bottom:0px;--awb-text-font-family:&quot;Heebo&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>kW<\/p>\n<\/div><\/div><\/div><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-5 fusion_builder_column_1_3 1_3 fusion-flex-column fusion-animated\" style=\"--awb-padding-top:20px;--awb-padding-right:20px;--awb-padding-bottom:20px;--awb-padding-left:20px;--awb-bg-size:cover;--awb-border-color:#00925b;--awb-border-top:1px;--awb-border-right:1px;--awb-border-bottom:1px;--awb-border-left:8px;--awb-border-style:solid;--awb-width-large:33.333333333333%;--awb-margin-top-large:0px;--awb-spacing-right-large:5.76%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:5.76%;--awb-width-medium:33.333333333333%;--awb-order-medium:0;--awb-spacing-right-medium:5.76%;--awb-spacing-left-medium:5.76%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\" data-animationType=\"fadeInUp\" data-animationDuration=\"0.8\" data-animationOffset=\"bottom-in-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-6\" style=\"--awb-content-alignment:center;--awb-text-transform:none;--awb-text-color:#000000;--awb-text-font-family:&quot;Heebo&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><p>Autoconsommation<\/p>\n<\/div><div class=\"fusion-widget-area awb-widget-area-element fusion-widget-area-3 fusion-content-widget-area\" style=\"--awb-title-color:#000000;--awb-padding:0px 0px 0px 0px;\"><div id=\"custom_html-26\" class=\"widget_text widget widget_custom_html\" style=\"border-style: solid;border-color:transparent;border-width:0px;\"><div class=\"textwidget custom-html-widget\"><style>\r\n    .self-coverage-kpi-container {\r\n        width: 100%;\r\n        max-width: 100%;\r\n        text-align: center;\r\n    }\r\n    \r\n    .tippy-box {\r\n        background-color: white !important;\r\n        box-shadow: 0px 0px 10px #c8cacc;\r\n    }\r\n    \r\n    .tippy-arrow:before {\r\n        border-right-color: white !important;\r\n    }\r\n    \r\n    .tooltip-content {\r\n        text-align: left;\r\n        padding: 10px 20px;\r\n        background-color: white;\r\n        border: none;\r\n    }\r\n<\/style>\r\n<script src=\"https:\/\/unpkg.com\/@popperjs\/core@2\/dist\/umd\/popper.min.js\"><\/script>\r\n<script src=\"https:\/\/unpkg.com\/tippy.js@6\/dist\/tippy-bundle.umd.js\"><\/script>\r\n<div class=\"self-coverage-kpi-container\">\r\n    <span class=\"self-coverage-kpi-value\"><\/span>\r\n<\/div>\r\n<script>\r\n    document.onload = init();\r\n\r\n    function init() {\r\n        let widgetSignals = [{\r\n            alias: 'wind_production',\r\n            signal: 'WI_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'water_production',\r\n            signal: 'HY_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'solar_production',\r\n            signal: 'SL_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }, {\r\n            alias: 'global_production',\r\n            signal: 'GL_ActPower_mag_f',\r\n            aggregationType: 'SUM'\r\n        }];\r\n        let translatedTexts = [{\r\n            langKey: 'de',\r\n            selfCoverage: 'Eigendeckungsgrad',\r\n            import: 'Import',\r\n            export: 'Export'\r\n        }, {\r\n            langKey: 'fr',\r\n            selfCoverage: 'Auto-couverture',\r\n            import: 'Import',\r\n            export: 'Export'\r\n        }, {\r\n            langKey: 'en',\r\n            selfCoverage: 'Self Coverage',\r\n            import: 'Import',\r\n            export: 'Export'\r\n        }];\r\n        let translationIndex = 0;\r\n        let widgetQueryInterval = 60; \/\/seconds (3600 seconds = 1hour);\r\n        setTimeout(() => {\r\n            if (window.location.href.includes('\/fr\/')) {\r\n                translationIndex = 1;\r\n            }\r\n            if (window.location.href.includes('\/en\/')) {\r\n                translationIndex = 2;\r\n            }\r\n            loadWidgetStyles();\r\n            createTooltip();\r\n            setInterval(() => {\r\n                loadWidgetStyles();\r\n            }, widgetQueryInterval * 1000);\r\n        }, 10);\r\n        window.addEventListener('resize', resize);\r\n\r\n        function resize() {\r\n            document.getElementsByClassName('self-coverage-kpi-value')[0].style.fontSize = window.innerWidth < 800 ? (SEPWidgetConfig.selfCoverageValueWidget.valueFontSize - 1) + 'rem' : SEPWidgetConfig.selfCoverageValueWidget.valueFontSize + 'rem';\r\n        }\r\n        async function loadWidgetStyles() {\r\n            await loadData();\r\n            document.getElementsByClassName('self-coverage-kpi-value')[0].style.fontSize = SEPWidgetConfig.selfCoverageValueWidget.valueFontSize + 'rem';\r\n            document.getElementsByClassName('self-coverage-kpi-value')[0].style.color = SEPWidgetConfig.selfCoverageValueWidget.valueColor;\r\n        }\r\n\r\n        function createTooltip() {\r\n            tippy('.self-coverage-kpi-value', {\r\n                theme: 'light-border',\r\n                placement: 'right',\r\n                animation: 'fade',\r\n                arrow: true,\r\n                allowHTML: true,\r\n            });\r\n        }\r\n        async function loadData() {\r\n            const data = await getData();\r\n            prepareWidgetData(data);\r\n        }\r\n\r\n        function parseHighComma(value) {\r\n            return value.toString().replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, \"'\");\r\n        }\r\n\r\n        function prepareWidgetData(rawData) {\r\n            let data = [];\r\n            for (const i of widgetSignals) {\r\n                if (rawData.data[i.alias][0].data.lastValue.length > 0) {\r\n                   const total = rawData.data[i.alias][0].data.lastValue.reduce(\r\n  (acc, d) => acc + d.Value \/ 1000,\r\n  0\r\n);\r\n\t\t\t\t\t\t\t\t\tdata.push(total);\r\n                } else {\r\n                    data.push(0);\r\n                }\r\n            }\r\n            const totalProduction = Number(data[0] + data[1] + data[2]).toFixed(0);\r\n            const totalConsumption = Number(Math.abs(data[0]) + data[1] + data[2] - data[3]).toFixed(0);\r\n            const totalImport = data[3] < 0 ? Math.abs(data[3]) : 0;\r\n            const totalExport = data[3] > 0 ? Math.abs(data[3]) : 0;\r\n            const selfCoveragePercentage = totalConsumption > 0 ? Number(totalProduction * 100 \/ totalConsumption).toFixed(0) : Number(totalConsumption * 100 \/ totalProduction).toFixed(0);\r\n            document.getElementsByClassName('self-coverage-kpi-value')[0].innerHTML = Number(selfCoveragePercentage).toFixed(0);\r\n            const tippyInstance = document.querySelector('.self-coverage-kpi-value');\r\n            tippyInstance._tippy.setContent(`<div class=\"tooltip-content\">\r\n        <span style=\"font-size: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipTitlesFontSize}rem; color: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipTitlesColor}\">${translatedTexts[translationIndex].import}<\/span><br>\r\n        <span style=\"font-size: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipValuesFontSize}rem; color: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipValuesColor}\">${parseHighComma(Number(totalImport).toFixed(0))} kW<\/span><br>\r\n        <span style=\"font-size: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipTitlesFontSize}rem; color: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipTitlesColor}\">${translatedTexts[translationIndex].export}<\/span><br>\r\n        <span style=\"font-size: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipValuesFontSize}rem; color: ${SEPWidgetConfig.selfCoverageValueWidget.tooltipValuesColor}\">${parseHighComma(Number(totalExport).toFixed(0))} kW<\/span>\r\n      <\/div>`);\r\n        }\r\n        async function getData() {\r\n            let step = 60;\r\n            let queryString = 'query {';\r\n            for (const i of widgetSignals) {\r\n                queryString += `\r\n        ${i.alias}: SIGNALS (where: {code: \"${i.signal}\"}){\r\n          name\r\n          unit\r\n          data {\r\n\t\t\t\t\t\tlastValue {\r\n\t\t\t\t\t\t\tDate\r\n\t\t\t\t\t\t\tValue\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n        }\r\n      `\r\n            };\r\n            queryString += '}'\r\n            const data = JSON.stringify({\r\n                query: queryString\r\n            });\r\n            const response = await fetch(\r\n                SEPWidgetConfig.apiServerURL, {\r\n                    method: 'post',\r\n                    body: data,\r\n                    headers: {\r\n                        'Content-Type': 'application\/json',\r\n                        'Content-Length': data.length\r\n                    },\r\n                }\r\n            );\r\n            return await response.json();\r\n        }\r\n    }\r\n<\/script><\/div><\/div><div class=\"fusion-additional-widget-content\"><\/div><\/div><div class=\"fusion-text fusion-text-7 fusion-text-no-margin\" style=\"--awb-content-alignment:center;--awb-font-size:16px;--awb-text-transform:none;--awb-text-color:#000000;--awb-margin-bottom:0px;--awb-text-font-family:&quot;Heebo&quot;;--awb-text-font-style:normal;--awb-text-font-weight:700;\"><p>%<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:1296px;margin-left: calc(-8% \/ 2 );margin-right: calc(-8% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-6 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-padding-top:50px;--awb-padding-top-medium:40px;--awb-padding-top-small:20px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.68%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:3.68%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.68%;--awb-spacing-left-medium:3.68%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:3.68%;--awb-spacing-left-small:3.68%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-4 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h3 class=\"fusion-title-heading title-heading-left\" style=\"margin:0;\">Production par source de courant<\/h3><\/div><div class=\"fusion-title title fusion-title-5 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h3 class=\"fusion-title-heading title-heading-left\" style=\"margin:0;\"><p class=\"p1\"><b>Remarque importante sur l&rsquo;int\u00e9grit\u00e9 des donn\u00e9es<\/b><\/p><\/h3><\/div><div class=\"fusion-text fusion-text-8\"><p class=\"p1\">Dans le cadre de l&rsquo;optimisation et de la centralisation des donn\u00e9es du <span class=\"s1\"><b>Swiss Energypark<\/b><\/span> nous proc\u00e9dons actuellement \u00e0 une consolidation progressive des informations affich\u00e9es. Ce processus peut entra\u00eener temporairement des incoh\u00e9rences ou des \u00e9carts entre les donn\u00e9es publi\u00e9es et la situation r\u00e9elle.<\/p>\n<p class=\"p1\">Nous vous remercions de votre compr\u00e9hension et restons \u00e0 votre disposition pour toute question.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-5 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#eaeaea;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1296px;margin-left: calc(-8% \/ 2 );margin-right: calc(-8% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-7 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-animated\" style=\"--awb-padding-top:96px;--awb-padding-bottom:96px;--awb-padding-top-medium:40px;--awb-padding-top-small:20px;--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:3.68%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:3.68%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:3.68%;--awb-spacing-left-medium:3.68%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:3.68%;--awb-spacing-left-small:3.68%;\" data-animationType=\"fadeInUp\" data-animationDuration=\"0.8\" data-animationOffset=\"bottom-in-view\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-6 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top-small:10px;--awb-margin-right-small:0px;--awb-margin-bottom-small:10px;--awb-margin-left-small:0px;\"><h3 class=\"fusion-title-heading title-heading-left\" style=\"margin:0;\">Microgrid du Swiss Energypark<\/h3><\/div><div class=\"fusion-text fusion-text-9 awb-text-cols fusion-text-columns-2\" style=\"--awb-text-transform:none;--awb-columns:2;--awb-column-spacing:2em;--awb-column-min-width:100px;--awb-text-font-family:&quot;Heebo&quot;;--awb-text-font-style:normal;--awb-text-font-weight:400;\"><div class=\"flex_column av_two_third flex_column_div first avia-builder-el-1 el_after_av_heading avia-builder-el-last \">\n<section class=\"av_textblock_section \">\n<div class=\"avia_textblock \">\n<p>Le principe d&rsquo;un microgrid est test\u00e9 dans le Swiss Energypark. Avec ses installations \u00e9oliennes, hydrauliques et photovolta\u00efques produisant localement, la r\u00e9gion couvre presque enti\u00e8rement sa consommation en moyenne annuelle : 147 GWh de besoins contre 127 GWh de production. La production comprend l&rsquo;\u00e9nergie r\u00e9elle, physiquement produite dans la r\u00e9gion. Celle-ci ne co\u00efncide toutefois pas avec le mix d&rsquo;\u00e9lectricit\u00e9 effectivement fourni aux clients. La diff\u00e9rence est fournie \u00e0 la r\u00e9gion par le r\u00e9seau \u00e9lectrique et les trois sous-stations de Saint-Imier, Le Noirmont et Mont-Soleil. Les sous-stations alimentent la r\u00e9gion en moyenne tension, qui est transform\u00e9e en basse tension par plus de 200 postes de transformation.<\/p>\n<p>Les microgrids pr\u00e9sentent les avantages suivants:<\/p>\n<ul>\n<li>R\u00e9duction des pertes de transmission<\/li>\n<li>Meilleure int\u00e9gration des sources d\u2019\u00e9nergies d\u00e9centralis\u00e9es<\/li>\n<li>Non-d\u00e9veloppement du r\u00e9seau aux niveaux de r\u00e9seaux inf\u00e9rieurs<\/li>\n<\/ul>\n<\/div>\n<\/section>\n<\/div>\n<\/div><\/div><\/div><\/div><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":29987,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"footnotes":""},"class_list":["post-30627","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/pages\/30627","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/comments?post=30627"}],"version-history":[{"count":14,"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/pages\/30627\/revisions"}],"predecessor-version":[{"id":33306,"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/pages\/30627\/revisions\/33306"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/media\/29987"}],"wp:attachment":[{"href":"https:\/\/swiss-energypark.com\/fr\/wp-json\/wp\/v2\/media?parent=30627"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}