← EnergyView

EnergyView

Belgische energievergelijker voor elektriciteit en gas, met scenario's voor zonnepanelen, batterij, thuisladen en verwarming. De vergelijkingen draaien op het toestel. De API-worker haalt marktprijzen, tariefpromoties en locatie-/weergegevens op.

Bij Resultaat kies je Je woning vandaag of Met je aankoopplannen. Vandaag is de standaard; aankoopplannen worden beschikbaar zodra je aangeeft wat je overweegt. Investeringen en terugverdientijd staan bij de aankoopplannen.

De app gebruiken

Doorloop Je gegevens → Je contract → Resultaat. Kies elektriciteit, gas of beide. Een jaarafrekening volstaat voor een indicatie. Een Fluvius-bestand met metingen verfijnt de vergelijking. Instellingen staan bij het tandwiel; bronnen en methode in de voettekst. De kaart Je woning blijft bereikbaar, ook vóór een resultaat. Investeringen staan ook direct onder het eerste resultaat. Rapporten maak je bij Resultaat.

Beheer van openbare tarieven staat op index.html?beheer=1, bereikbaar vanuit Instellingen. Dat is een aparte beheerweergave, geen extra toegangsbeveiliging. Imports blijven lokaal en publiceren niets voor andere bezoekers.

Het UX-rapport bevat de nulmeting, controles, alle verplaatste functies en de testopdracht voor vijf gebruikers. npm run ux:audit bereidt de lokale axe-controle voor; die ontwikkelcode wordt niet gepubliceerd.

Installeren en controleren

Gebruik Node.js 22 of nieuwer.

npm ci
npm test
npm run perf:golden
npm run perf:assets

De golden master controleert bedragen tot €0,01 en identieke rangschikkingen en identifiers. De bron staat in src/; dist/ en build-pages/ zijn gegenereerd. worker/ bevat de API-router; tests/ bevat de controles. Gegevens en rekenregels worden niet aangepast door de build.

Wegwijzer voor de broncode

Map of bestandInhoud
src/Interface, berekeningen, workers en meegeleverde tariefgegevens.
src/combined-dispatch.js, src/b5-invoice-planner.jsGezamenlijke energiesturing en B5-planning.
src/report*.js, src/investment-*.jsAdviesrapport en investeringsvergelijking.
worker/Serverrouter voor externe gegevens.
tests/Regressietests en bewaarde financiële referenties.
scripts/Build-, test- en gegevensbeheerscripts.
data-updates/Bronbestanden en controle van tariefupdates.
docs/Handleidingen, audits en historische onderbouwing.
dist/, build-pages/, .perf-results/Lokaal gegenereerde uitvoer; niet nodig in een broncodepakket.

De build maakt README.html uit deze README. Wijzig voor die pagina daarom dit bestand; er is geen aparte HTML-bron nodig.

Testen met een andere datum

Open de app met ?debug=1 en ga naar Instellingen (tandwiel) → Testen met een andere datum. Zonder deze debugparameter staat dit testonderdeel niet in de gewone interface. Een reeds actieve simulatiedatum houdt altijd haar zichtbare waarschuwing en resetknop. Kies bijvoorbeeld 31-10-2026 en klik Gebruik deze datum. De app herlaadt met behoud van je invoer. De gekozen dag geldt voor de vooruitblik en de inschrijvingsperiode van aanbiedingen, ook in de achtergrondanalyses voor gas en stroom. Een zichtbare melding blijft staan tot je Gebruik echte datum kiest. De instelling blijft lokaal bewaard en staat ook in je gegevens-export.

Rekenformules, meettijdstippen en geladen brondata veranderen niet. Dit haalt geen historische tariefkaarten of promoties op. Bronverversing, wachttijden en technische controletijden blijven de echte klok gebruiken. Zonder simulatiedatum blijft de normale datumcontrole gelden; een verouderde curve wordt niet stilzwijgend actueel.

Gasbestanden

Voor elektriciteit blijven kwartiertotalen nodig, ook als een bestand wel een volledig jaar met dagtotalen bevat. De import controleert de opgegeven eindtijden; oude dagimports krijgen een gerichte melding in plaats van een onjuiste piek of een algemene fout over het meetjaar. Gasgegevens en contractkeuzes blijven bewaard.

Fluvius-CSV met uur- of dagtotalen wordt ondersteund, met kWh en optioneel m³. kWh en m³ voor hetzelfde meetinterval worden één keer samengevoegd; m³ wordt niet nog eens bij kWh opgeteld. Een dagbestand blijft een dagbestand: er worden geen uurwaarden verzonnen. Dagtotalen werken voor gascontracten, maandtotalen en daganalyses. Nachtverdeling en warmtepompsimulatie per uur vragen uurtotalen.

Dagtotalen volgen hun gasdag (bijvoorbeeld 06.00–06.00) en worden per begindatum in een maand gegroepeerd. De volledigheid gebruikt opeenvolgende lokale gasdagen, ook bij zomer-/wintertijd. Een Fluvius-eindlabel van 07.00/05.00 op zo'n overgang wordt geaccepteerd als het exact overeenkomt met 24 verstreken uren; het bronlabel blijft bewaard als sourceEnd. De dekking volgt de volgende gasdaggrens (23/25 uur), zonder het gemeten dagvolume te veranderen. De weervergelijking met de kalenderdag is daardoor een benadering. Ontbrekende dagen blijven ontbreken. Gemengde uur- en dagbestanden worden geweigerd.

Cloudflare Pages

node scripts/build-pages.mjs

Publiceer de complete inhoud van build-pages/, inclusief _worker.js, _routes.json en _headers. Voor een Git-koppeling: bouwcommando hierboven, outputmap build-pages. De /api/*-routes gebruiken Pages Functions. Controleer na publicatie /api/health.

Cloudflare Worker

node scripts/build-worker.mjs

Het zelfstandige Worker-entrypoint is dist/server/index.js. Gebruik je eigen Cloudflare-configuratie; zie wrangler.example.jsonc. Dit bestand is bouwuitvoer en hoort niet in een broncodepakket.

Home Assistant

node scripts/build-ha.mjs

Kopieer de statische inhoud van dist/ naar /config/www/energyview/. server/ en .openai/ zijn alleen voor de Worker en hoeven niet mee. Open /local/energyview/index.html of voeg /local/energyview/ha-card.js als JavaScript-module toe aan je dashboardresources.

type: custom:energyview-card
url: /local/energyview/index.html
height: 1000

De lokale kaart heeft voor externe gegevens een bestaande API-worker nodig. De volledige maandhistorie staat in aparte history/-bestanden; kopieer die map ook mee. Verbruiksbestanden laad je via de app in. Lokale instellingen blijven gebonden aan de browser en het domein; maak vóór een verhuizing een export.

Ontwikkelen en meten

node scripts/build-worker.mjs
npm run dev -- --port 5173
npm run perf

npm run perf omvat Node- en browsermetingen. De browsermeting vereist Chromium; een ontbrekende browser geldt niet als een geslaagde meting. Zie performanceonderzoek voor methode en beperkingen.

De eerdere uitgebreide handleiding en wijzigingshistorie staan in docs/history.

Audit en beveiligingsopties

De auditrapporten beschrijven controles en beperkingen; zie ook laadsnelheid, rekensnelheid, beveiliging en de nog niet toegepaste privacy-/bronvoorstellen.

Voor een standalone site kun je vóór bouwen ENERGYVIEW_FRAME_ANCESTORS=self instellen. Voor een elders gehoste HA-kaart voeg je de exacte HA-origin toe, bijvoorbeeld self https://ha.example:8123. Zonder deze optie blijven bestaande cross-origin HA-kaarten inbedbaar. Werk bij een update zowel de app als ha-card.js bij.

Openbare data onderhouden

npm run data:refresh controleert de officiële VNR- en Fluvius-bestanden en schrijft alleen voorstellen naar data-updates/. De dagelijkse GitHub Action opent bij wijzigingen een review-PR; ze publiceert niets. Heffingen blijven handmatig te controleren. Zie bronnen, beperkingen en beheerchecklist. De coulance voor een oude prijscurve is nog niet goedgekeurd of ingevoerd.

Het meetrapport voor exacte zoekruimte en geheugengebruik bevat vijf-runmetingen en de grenzen van de aangetoonde winst. Herhalen: node scripts/perf/repeated.mjs .perf-results/my-run 5.

Rapporten en kwaliteitscontrole

Maak mijn energierapport en Offerteblad voor installateurs bouwen lokaal print-HTML; kies in het afdrukvenster Opslaan als PDF. Gas heeft een eigen rapportknop. Bedragen komen uit dezelfde resultaatobjecten als op het scherm. Er zijn geen externe rapportdiensten of runtime-PDF-afhankelijkheden.

npm run lint
npm run typecheck
npm run format:check
npm run ux:browser

Voor de laatste opdracht: npx playwright install chromium en eerst npm run build:worker. De browserworkflow in CI bewaart screenshots, axe- en PDF-resultaten. Een ontbrekende browser geeft exitcode 2, geen verzonnen score. Zie productstatus en grenzen, instellingen: oud → nieuw, bronnen en open beleidskeuzes, beheerproces en de begrippenlijst. Historische dagrapporten staan in docs/history.