Versie 0.3 — concept, commentaar welkom

Open Meterkastpaspoort

Een open specificatie voor de toestand van de meterkast, vastgelegd in een QR-code die bij de kast blijft.

Status: concept (v0.3) Datum: september 2026 Initiatief & auteur: Martin Schut, BlauweVisie B.V. (YourWkb.nl) Licentie: CC BY 4.0

1. Waarom een meterkastpaspoort

De meterkast is het hart van de woning geworden: zonnepanelen, laadpaal, warmtepomp en thuisbatterij komen er allemaal samen. Tegelijk neemt het aantal meterkast-incidenten toe en pleiten deskundigen voor een "APK van de meterkast". Het probleem van elke keuring is echter dat het rapport in een la verdwijnt — terwijl de kennis nodig is bij de kast, op het moment dat de volgende monteur er iets aan wijzigt.

Het meterkastpaspoort (MKP) draait dat om: de actuele toestand van de kast — aansluiting, capaciteit, aangesloten verbruikers en opwekkers, begrenzingsinstellingen en de wijzigingshistorie — wordt vastgelegd in een QR-code op een sticker aan de binnenzijde van de kastdeur. Elke monteur die de kast opent, scant en weet wat er hangt. Elke monteur die iets wijzigt, schrijft het paspoort bij en plakt een nieuwe sticker.

2. Ontwerpprincipes

  1. De data reist in de QR-code zelf. Het paspoort staat niet in een database maar in de code op de sticker. Scannen werkt daardoor ook in een kelder zonder bereik, en er bestaat geen centraal register dat op adres doorzoekbaar is.
  2. Privacy door architectuur. De data staat in het URL-fragment (het deel achter #). Fragmenten worden door browsers nooit naar een server verzonden; het paspoort verlaat de meterkast dus alleen als iemand die er fysiek staat het scant.
  3. Leveranciersonafhankelijk. Ieder softwareproduct mag het formaat lezen en schrijven (zie licentie). Een paspoort gemaakt met de ene applicatie is leesbaar voor de andere.
  4. Voorwaarts compatibel. Lezers moeten onbekende velden negeren en het versieveld respecteren, zodat oude stickers leesbaar blijven en het formaat kan groeien.
  5. Opgave, geen garantie. Het paspoort is een opgave van de laatste installateur. Het vervangt geen inspectie en geen vakmanschap; bij twijfel controleert de monteur ter plekke.

3. Technische drager

Een MKP-QR-code codeert een URL van de vorm:

https://meterkastpaspoort.nl/p#<data>

waarin <data> het paspoort is: een JSON-object, gecomprimeerd met deflate-raw en gecodeerd als base64url. Het domein leidt door naar een referentie-implementatie; omdat de data in het fragment zit, reist zij automatisch mee met de doorverwijzing en bereikt zij nooit de server. Elke andere implementatie kan dezelfde payload lezen door het fragment te decoderen.

Richtwaarde: een gevuld paspoort comprimeert tot ± 200–400 bytes en past daarmee ruim in een QR-code die op een sticker van 40–50 mm scherp afdrukbaar is.

4. Datamodel documentversie 0.3 · datamodelversie v: 2

Veldnamen zijn kort gehouden om de QR-code compact te houden. Alle velden zijn optioneel tenzij anders vermeld; lezers negeren onbekende velden.

4.1 Wortelobject

VeldTypeBetekenis
vgetalVerplicht. Specificatieversie: 2 voor dit document, 1 voor paspoorten volgens v0.1. Een lezer die 1 aantreft hanteert de oude uitleg van f (zie 4.4).
dtekstDatum laatste bijwerking, JJJJ-MM-DD.
pc, nrtekstPostcode en huisnummer(-toevoeging) van het adres.
eantekstEAN-code van de elektriciteitsaansluiting (18 cijfers, NL begint met 87; laatste cijfer is GS1 modulo-10-controlecijfer). Vindbaar via eancodeboek.nl.
ean2tekstEAN van een eventueel secundair allocatiepunt (bijv. apart bemeten laadpaal).
bjtekstBouwjaar of aanlegperiode van de kast, desnoods geschat ("1998", "±1990"). Relevant voor het normregime van aanleg (rechtens verkregen niveau).
haobjectHoofdaansluiting — zie 4.2.
kamobjectOntwerpstroom verdeler — zie 4.3.
grplijstAfgaande en voedende groepen — zie 4.4.
matlijstMateriaal in de kast — zie 4.5. Nieuw in v0.2.
lbobjectLoad balancing / vermogenssturing — zie 4.6.
chkobjectLaatste belastingcheck — zie 4.7.
loglijstInstallateurs-logboek — zie 4.8.

4.2 Hoofdaansluiting ha

VeldTypeBetekenis
fgetalAantal fasen: 1 of 3.
agetalWaarde hoofdzekering in ampère per fase (bijv. 25, 35).
hsgetalNominale stroom hoofdschakelaar in ampère, indien afwijkend of bekend.

4.3 Ontwerpstroom verdeler kam

VeldTypeBetekenis
mm2getalDoorsnede kam/rail in mm² (praktijk: 10 ≈ max 40 A, 16 ≈ max 63 A).
agetalMaximale stroom van de kam in ampère. Onbekend? Conservatief 40 A aanhouden.

Toetsregel: de som van de voedende groepen, op het deel van de kam waar hun stromen kunnen cumuleren, mag de kamcapaciteit niet overschrijden. Advies: voedende groepen zo dicht mogelijk bij het voedingspunt plaatsen.

4.4 Groepen grp[]

VeldTypeBetekenis
ttekstType: alg (algemene groep), kook, wp (warmtepomp), lp (laadpaal), pv (PV-omvormer), bat (thuisbatterij), ov (overig).
roltekstaf = afgaande groep (neemt stroom af), voed = voedende groep (levert stroom aan de kam: PV, ontladende batterij). Een batterij kan beide rollen hebben; noteer de rol met de hoogste stroom of twee regels.
kwgetalVermogen in kW (bij voed: maximale teruglever-/ontlaadstroom omgerekend).
fgetalAantal fasen: 1 of 3. Gewijzigd in v0.2: in v0.1 kon dit veld ook een fasenummer bevatten, wat tot verwarring leidde.
fnlijstFasenummer(s) waarop de groep is aangesloten: [1], [2], [3] of [1,2,3]. Onmisbaar om de belasting per fase te kunnen bepalen; laat weg als onbekend.
matgetalVerwijzing naar i in mat[]: het beveiligingstoestel dat deze groep beveiligt. Nieuw in v0.2.
ntekstVrije korte omschrijving (bijv. "zolder PV 12 panelen").

4.5 Materiaal mat[] nieuw in v0.2

De beveiligingstoestellen en andere componenten in de kast. Deze lijst maakt twee dingen mogelijk die met alleen groepsgegevens niet kunnen: terugvinden wélk toestel een groep beveiligt, en een veldnotitie van een fabrikant vergelijken met wat er werkelijk hangt.

Neem op wat ertoe doet — beveiligingstoestellen, de hoofdschakelaar, de kam — en niet elk klemmetje. Elke regel vergroot de QR-code.

VeldTypeBetekenis
igetalVolgnummer binnen dit paspoort, waarnaar grp[].mat verwijst.
stekstSoort: hs (hoofdschakelaar), als (aardlekschakelaar), ala (aardlekautomaat), aut (installatieautomaat), kam (kamrail), tr (transformator), ov (overig).
fabtekstFabrikant, zoals op het toestel vermeld.
typtekstTypeaanduiding, letterlijk overgenomen.
arttekstArtikel- of bestelnummer. Optioneel, maar het sterkste aanknopingspunt bij een veldnotitie.
sntekstSerienummer. Optioneel.
pdtekstProductie- of datumcode, letterlijk zoals op het toestel. Vrije tekst, want fabrikanten gebruiken hiervoor geen gemeenschappelijk formaat. Optioneel.
postekstPlaats in de kast, bijvoorbeeld "R1-5" voor rij 1, modulepositie 5. Helpt het toestel terugvinden zonder te zoeken.

4.6 Load balancing lb

VeldTypeBetekenis
aanja/neeIs er vermogenssturing actief?
typtekststat (statisch: vaste begrenzing) of dyn (dynamisch: meet en regelt live, bijv. via P1).
maxgetalIngestelde grenswaarde in ampère (statisch) of maximaal toegestane huisstroom (dynamisch).
regtekstRegisseur: welk systeem stuurt (bijv. "evcc", "HEMS fabrikant X", "laadpaal intern"). Meerdere onafhankelijke begrenzers zonder gezamenlijke regisseur verdienen een waarschuwing in de lezende applicatie.

Let op: load balancing is een software-instelling, geen veiligheidsmaatregel. De installatie behoort ook bij falende of opgeheven begrenzing veilig te zijn. Zonder aantoonbare gezamenlijke begrenzer is een gelijktijdigheidsfactor van 0,6 over de grote verbruikers een bruikbare conservatieve rekenbasis (richtlijn ontleend aan de belastingsfactoren uit de NEN-EN-IEC 61439-serie).

4.7 Laatste belastingcheck chk

VeldTypeBetekenis
rtekstUitkomst: groen, oranje (begrenzing vereist en vastgelegd) of rood (verzwaring geadviseerd).
dtekstDatum van de check, JJJJ-MM-DD.

4.8 Installateurs-logboek log[]

De laatste 5–10 wijzigingen, nieuwste eerst. Oudere regels vervallen om de QR-code compact te houden.

VeldTypeBetekenis
dtekstDatum, JJJJ-MM-DD.
btekstBedrijfsnaam van de installateur.
wtekstKorte omschrijving van de wijziging.
erktekstErkenning of certificaat van het uitvoerende bedrijf, genoteerd als uitgever:nummer — bijvoorbeeld "installq:14718" (erkenning) of "kiwa:K0213477" (CO-certificaat van de certificerende instelling). De uitgever is wie het nummer afgeeft — niet wie een register bijhoudt. Nieuw in v0.2. Het paspoort verifieert niets; het maakt de erkenning controleerbaar in het openbare register van die uitgever.
ctekstOptioneel contactgegeven (telefoon/e-mail), uitsluitend met instemming van de betreffende installateur.
zeglijstZegelnummers die bij deze handeling zijn geplaatst, bijvoorbeeld ["IQ-14718-004217"]. Optioneel, nieuw in v0.2. Zie hoofdstuk 9.
sidtekstSleutel-identificatie van de ondertekenaar, op te zoeken in de index. Optioneel, nieuw in v0.2.
sigtekstEd25519-handtekening over deze regel, base64url. Optioneel, nieuw in v0.2. Zie 8.4: per toevoeging ondertekenen levert een keten op waarin niemand met terugwerkende kracht een eerdere regel kan wijzigen — ook niet als dat bedrijf niet meer bestaat. Kosten: circa 110 tekens per regel, wat de QR-code merkbaar vergroot. Weeg dat af tegen het aantal logboekregels.

5. Voorbeeld

Zelf bekijken: de paspoortlezer is de referentie-implementatie van deze versie. Plak er een QR-URL in — of scan een sticker — en hij toont alle velden, inclusief mat[], fn, erk en de status van de handtekeningen. Alles gebeurt in de browser; de paspoortdata verlaat het toestel niet.

{
  "v": 2,
  "d": "2026-09-11",
  "pc": "2801AB",
  "nr": "12",
  "ean": "871685900012345678",
  "bj": "±1995",
  "ha": {
    "f": 3,
    "a": 25
  },
  "kam": {
    "mm2": 10,
    "a": 40
  },
  "grp": [
    {
      "t": "pv",
      "rol": "voed",
      "kw": 4.2,
      "f": 1,
      "fn": [
        1
      ],
      "n": "12 panelen zuid",
      "mat": 1
    },
    {
      "t": "lp",
      "rol": "af",
      "kw": 11,
      "f": 3,
      "fn": [
        1,
        2,
        3
      ],
      "mat": 2
    },
    {
      "t": "wp",
      "rol": "af",
      "kw": 3.5,
      "f": 1,
      "fn": [
        2
      ],
      "mat": 3
    }
  ],
  "mat": [
    {
      "i": 1,
      "s": "ala",
      "fab": "Voorbeeld Elektro",
      "typ": "VBE-ALS-2P-40-30",
      "art": "1234567",
      "pd": "@29-1524-07",
      "pos": "R1-5"
    },
    {
      "i": 2,
      "s": "aut",
      "fab": "ABB",
      "typ": "S203-C16",
      "pos": "R1-9"
    },
    {
      "i": 3,
      "s": "aut",
      "fab": "ABB",
      "typ": "S201-B16",
      "pos": "R1-12"
    }
  ],
  "lb": {
    "aan": true,
    "typ": "dyn",
    "max": 25,
    "reg": "HEMS"
  },
  "chk": {
    "r": "oranje",
    "d": "2026-08-06"
  },
  "log": [
    {
      "d": "2026-09-11",
      "b": "Installatiebedrijf Jansen",
      "w": "Laadpaal 11 kW + belastingcheck",
      "erk": "installq:14718",
      "zeg": [
        "IQ-14718-004217"
      ]
    },
    {
      "d": "2024-03-11",
      "b": "PV Totaal",
      "w": "PV 12 panelen, groep 7",
      "erk": "installq:20551"
    }
  ]
}

Dit object wordt gecomprimeerd (deflate-raw), gecodeerd als base64url en achter https://meterkastpaspoort.nl/p# geplaatst; van die URL wordt de QR-code gegenereerd. Bovenstaand voorbeeld levert een URL van circa 670 tekens op en past in een QR-code van versie 21 bij foutcorrectieniveau M.

Let op de omvang. Elke regel in mat[] maakt de code dichter. Blijft de QR onder de 50 mm slecht leesbaar, neem dan minder materiaal op of verklein het logboek — de leesbaarheid van de sticker gaat vóór de volledigheid van de lijst.

6. Omvang van de QR-code

Een paspoort met een materiaallijst wordt groter dan een paspoort zonder. De begrenzing zit niet in de QR-code zelf maar in de sticker: hoe meer modules, hoe kleiner elk blokje. Op een sticker van 50 mm met 2 mm marge is 46 mm bedrukbaar; bij 203 dpi (8 punten per millimeter) wordt een module onder ongeveer 3,5 punten onbetrouwbaar om te scannen.

Gemeten waarden, met per groep één toestel en een logboek van één regel. De JSON groeit stevig, maar comprimeert goed doordat een materiaallijst zeer repetitief is:

Groepen met materiaalJSONNa compressieModulesPunten per module
3810 B364 B894,13ruim
61278 B404 B933,96ruim
122223 B479 B1013,64ruim
162859 B525 B1053,50krap
244131 B620 B1133,26te dicht

Richtlijn: houd een sticker van 50 mm onder de 105 modules. Tot ongeveer twaalf groepen met volledige materiaalgegevens is dat ruim haalbaar.

Wat te doen bij een volle kast

Twee maatregelen leveren elk ongeveer even veel op, en ze zijn te combineren:

  1. Foutcorrectieniveau L in plaats van M. Dat scheelt twee QR-versies: vierentwintig toestellen passen dan nog op 101 modules. Verantwoord voor een sticker aan de binnenzijde van een kastdeur, waar beschadiging weinig voorkomt; op een plek waar de sticker vuil of gekrast kan raken is M de betere keuze.
  2. Detailvelden weglaten waar ze niet helpen. Laat art en pd weg bij standaardautomaten en volsta met fab, typ en pos; twintig toestellen passen dan op 101 modules bij niveau M. Een veldnotitie gaat vrijwel altijd over een specifieke serie — een aardlekschakelaar, een klemblok — en zelden over de standaardautomaat waarvan er tien in de kast zitten. Neem de volledige gegevens dus op waar ze ertoe doen en houd het elders kort.

Afkapvolgorde

Moet een schrijvende toepassing toch inkorten, dan doet zij dat in deze volgorde, zodat overal dezelfde gegevens als eerste sneuvelen:

  1. de oudste regels van log[], van onderen af;
  2. art, sn en pd van toestellen die geen art hebben — die matchen toch niet betrouwbaar;
  3. hele regels uit mat[], te beginnen bij toestellen zonder art en zonder sn;
  4. als laatste: vrije omschrijvingen (n) inkorten.

Nooit afkappen op grond van “dit veld ken ik niet”. Een toepassing die inkort meldt aan de gebruiker welke gegevens niet zijn meegenomen, zodat die het volledige overzicht in het opleverdocument kan opzoeken.

7. Verlies en herstel

Een sticker kan verloren gaan — beschadiging, vervanging van de kastdeur, of brand. Het paspoort is daartegen bestand door gedistribueerde opslag zonder register: dezelfde QR-code staat als uitknippagina in elk opleverdocument, en dat document is bij oplevering aan de bewoner verstrekt (en berust in de administratie van de installateur). Herstel bestaat uit het scannen van de QR uit het meest recente opleverdocument en het printen van een nieuwe sticker. Omdat iedere klus een nieuw document met de actuele paspoortstand oplevert, bestaan er evenveel reservekopieën als er ingrepen zijn geweest — verspreid over bewoner en betrokken installateurs. Een centraal register is daarmee bewust géén onderdeel van deze specificatie: het zou een doorzoekbare koppeling tussen adres en installatiegegevens introduceren (privacy- en inbraakrisico) zonder wezenlijke toevoeging aan de hersteldekking.

8. Veldnotities — het terugroepkanaal

Een fabrikant die een probleem ontdekt in een serie aardlekschakelaars of automaten heeft vandaag geen weg naar de kasten waarin dat materiaal hangt. De groothandel weet wie het kocht, niet waar het terechtkwam; de installateur is misschien gestopt of overgenomen. Wat er gebeurt is een persbericht en hopen.

Het meterkastpaspoort kan dat gat overbruggen — en juist doordat er geen centrale database is. De QR zit op de kastdeur en overleeft de installateur.

8.1 Hoe het werkt

Elke uitgever publiceert een eigen, ondertekend bestand onder zijn eigen domein. Een lezende toepassing haalt dat op en vergelijkt het op het toestel van de gebruiker met mat[] uit de paspoorten die hij heeft. Er verlaat geen enkel gegeven het toestel: de vergelijking gaat naar de data, niet de data naar de vergelijking. De fabrikant komt dus nooit te weten waar zijn product hangt.

8.2 Het formaat

{
  "standaard": "meterkastpaspoort-veldnotitie/1.0",
  "uitgever": { "naam": "Voorbeeld Elektro B.V.",
                "domein": "voorbeeldelektro.nl",
                "sleutel_id": "vbe-2026-01" },
  "bijgewerkt": "2026-09-11",
  "notities": [{
    "id": "vbe-2026-003",
    "gepubliceerd": "2026-09-01",
    "status": "actueel",
    "ernst": "actie_vereist",
    "producten": [{
      "fabrikant": "Voorbeeld Elektro",
      "type": "VBE-ALS-2P-40-30",
      "artikelnummer": "1234567",
      "identificatie": {
        "waar": "Datumcode op het typeplaatje aan de rechterzijde en op de doos.",
        "formaat": "@29-WWJJ-DD — week 09 t/m 32 van 2024 is geraakt.",
        "toelichting": "Staat de code er niet, dan valt het exemplaar buiten deze melding."
      }
    }],
    "titel": "Aardlekschakelaar kan traag uitschakelen bij lage temperatuur",
    "tekst": "Letterlijke tekst van de fabrikant.",
    "handeling": "Vervangen. Neem contact op via … voor kosteloze omruil.",
    "bron_url": "https://voorbeeldelektro.nl/veldnotities/vbe-2026-003"
  }],
  "handtekening": "…"
}

ernst kent drie waarden: informatie, actie_gewenst, actie_vereist. status kan naar ingetrokken; de notitie blijft dan in het bestand staan zodat een gecachte toepassing hem ook echt kan intrekken. tekst en handeling worden letterlijk getoond.

8.3 Identificatie — waarom een datumrange niet volstaat

Een echte terugroepactie identificeert zelden op een schone reeks. Een gedocumenteerd voorbeeld: in 2020 werd een serie metersokkels teruggeroepen wegens brandgevaar, herkenbaar aan een datumcode op drie plekken in het formaat @29-WWJJ-DD, waarbij een bereik van weken geraakt was. Dat past in geen enkel gestructureerd veld — en het is precies wat de monteur nodig heeft, want hij staat voor één kast met één exemplaar.

Daarom bestaat identificatie uit drie vrije regels: waar de code staat, hoe je hem leest, en een toelichting voor het randgeval. Die tekst wordt nooit machinaal vergeleken en altijd woordelijk getoond. Een treffer op type is een aanwijzing; de identificatie maakt er een vaststelling van — door de monteur, niet door de software.

8.4 Ondertekening

Drie lagen, drie vragen: de feed wordt ondertekend door de fabrikant (komt deze melding echt van dit merk?), het paspoort door de installateur (is deze data sinds het maken ongewijzigd?), en de index van uitgevers en sleutels door de beheerder van de standaard (is dit werkelijk de officiële lijst?). Die derde wordt vaak vergeten en is onmisbaar: wie de index kan vervangen, voegt een valse uitgever toe en kan daarna elke melding faken.

De handtekening is asymmetrisch — Ed25519, circa 110 tekens base64 — en nadrukkelijk geen HMAC: wie met een gedeeld geheim kan controleren, kan er ook mee vervalsen, terwijl hier een consument of inspecteur het moet kunnen nakijken.

Een handtekening bewijst dat de gegevens onveranderd zijn en van de houder van die sleutel komen. Niet dat de installatie deugt en niet dat de sticker op de juiste kast zit. Lezende toepassingen tonen daarom drie toestanden, feitelijk gesteld: ondertekend en geverifieerd, ondertekend maar nog niet te verifiëren, niet ondertekend — nooit “ongeldig” of “goedgekeurd”.

8.5 Vindplaatsen

Om het kanaal zonder centrale regie te laten werken staan feed en index op vaste, voorspelbare plekken:

WatWaar
Feed van een uitgeverhttps://<domein>/.well-known/meterkastpaspoort-veldnotities.json
Index van uitgevers en sleutelshttps://meterkastpaspoort.nl/veldnotities/index.json
{
  "standaard": "meterkastpaspoort-veldnotitie-index/1.0",
  "bijgewerkt": "2026-09-11",
  "uitgevers": [
    { "naam": "Voorbeeld Elektro B.V.",
      "domein": "voorbeeldelektro.nl",
      "feed": "https://voorbeeldelektro.nl/.well-known/meterkastpaspoort-veldnotities.json",
      "sleutel_id": "vbe-2026-01",
      "publieke_sleutel": "…" }
  ],
  "handtekening": "…"
}

Een lezende toepassing haalt de feeds bij voorkeur op via een eigen tussenstap in plaats van rechtstreeks. Dat is geen technische luxe: bij rechtstreeks ophalen ziet de fabrikant de IP-adressen van installateurs en kan hij dus tellen wie er kijkt. De feeds worden gecacht zodat de controle ook zonder netwerk werkt — een meterkast is vaak een kelder.

8.6 Neutraliteit

Dit kanaal is voor een fabrikant alleen waardevol als het neutraal is; een kanaal dat te koop is, is voor een veiligheidsmelding waardeloos. Daarom horen deze regels bij de standaard:

  1. Het formaat is vrij en open (CC BY 4.0) en mag door iedereen worden gebruikt, ook buiten YourWkb.
  2. Opname in de index is gratis en kan niet gekocht worden.
  3. Er is geen rangschikking of uitlichting; de index is alfabetisch.
  4. Niemand redigeert, vertaalt of onderdrukt de inhoud van een notitie.
  5. Notities van alle merken worden identiek weergegeven.
  6. Een lezende toepassing voegt geen eigen oordeel toe. Wij verifiëren niet, wij maken vindbaar.
  7. Geen enkele fabrikant krijgt inzage in trefferaantallen, locaties of installateurs.
  8. Toelating tot de index is uitsluitend technisch: geldig formaat, geldige handtekening, aantoonbare zeggenschap over het domein.

Het uitvoeren of administreren van een terugroepactie valt buiten deze standaard. Wij maken vindbaar, meer niet.

8.7 Vergelijken

De vergelijking gebeurt op het toestel van de gebruiker, in deze volgorde:

  1. Op art (artikelnummer) wanneer beide kanten dat hebben — het sterkste aanknopingspunt.
  2. Anders op fab + typ.
  3. Verfijnen op sn of pd wanneer de notitie een bereik noemt én het paspoort de waarde draagt.

De uitkomst is per notitie treffer (product en bereik komen overeen), mogelijk van toepassing (type komt overeen, bereik onbekend of alleen met de hand vast te stellen), of niets. Bij mogelijk van toepassing is de tekst uit identificatie het enige wat de monteur verder helpt; die hoort daarom prominent in beeld.

9. Zegels

Sinds 1 mei 2026 kent Nederland een landelijk zegelrecht: erkende installatiebedrijven mogen verzegelingen in de meterkast zelfstandig verbreken en opnieuw aanbrengen. Aan een erkenning hangt daarmee een reeks zegelnummers. Hoe het gebruik van die zegels wordt vastgelegd was bij het opstellen van deze versie nog een open vraag.

Het paspoort is er de natuurlijke drager voor, om één reden: het zegel en de vastlegging zitten op dezelfde plek. Wie het zegel ziet, ziet de registratie ernaast — zonder register, zonder verbinding.

9.1 Vastleggen

Een geplaatst zegel hoort bij de handeling die eraan voorafging en wordt dus genoteerd in de logboekregel van die handeling, in het veld zeg. Datum en uitvoerend bedrijf staan al in dezelfde regel; is die regel ondertekend (zie 8.4), dan is de zegelregistratie automatisch onvervalsbaar en herleidbaar tot een sleutel.

9.2 Nummerconventie

Aanbevolen opbouw: uitgever-erkenning-volgnummer, bijvoorbeeld IQ-14718-004217.

Door het erkenningsnummer ín het zegelnummer op te nemen draagt het zegel zijn herkomst met zich mee. Wie het aantreft — de volgende monteur, een netbeheerder, een inspecteur — ziet welk erkend bedrijf het heeft geplaatst, zonder iets op te zoeken. Het zegel wordt daarmee zelf een stuk bewijs in plaats van alleen een afsluiting.

9.3 Toezicht zonder centraal register

De uitgever wil weten hoeveel zegels er in omloop zijn, welke, en door wie ze zijn gebruikt. Dat kan grotendeels zonder ook maar één melding, en het is de moeite waard te onderscheiden wat waarvoor nodig is:

VraagAntwoord
Welke nummers zijn uitgegeven, en aan wie?Bekend bij de uitgever zelf — dat is administratie, geen monitoring. Hiermee is elk nummer buiten alle uitgegeven reeksen per definitie vals, en elk nummer uit de reeks van een ander bedrijf onterecht geplaatst.
Wordt er gefraudeerd met zegels?Zichtbaar in het veld. Iedereen die een meterkast opent kan het nummer lezen en het naast de ondertekende erkenningsverklaring van het bedrijf leggen. Eén melding volstaat; registratie van elk zegel is er niet voor nodig. Zo worden bankbiljetten ook gecontroleerd: niet door elk biljet te registreren, maar doordat vervalsen opvalt zodra iemand kijkt.
Hoeveel zegels verbruikt een bedrijf?Een periodieke teller volstaat: het aantal verbruikte zegels uit de reeks, zonder nummers en zonder adressen. Een verbruik dat niet strookt met de omvang van het bedrijf, of een nieuwe reeks terwijl de vorige nauwelijks is gebruikt, is dan alsnog een signaal — toezicht op patroon in plaats van op handelingen.

9.4 Wat deze standaard uitdrukkelijk niet ondersteunt

Het per zegel melden van nummer én adres aan een centrale partij. Dat levert een landelijk bestand op van wie er wanneer in welke meterkast is geweest. Dat is een ander soort gegevensverzameling dan waar deze standaard voor is gemaakt, en het zou het uitgangspunt uit hoofdstuk 2 ondergraven: de gegevens blijven bij de kast en bij de eigenaar.

De verleiding is reëel, want zonder adres kan een uitgever niet vaststellen of hetzelfde zegelnummer op twee plaatsen is gebruikt. Dat is een aanvaardbare beperking: dubbelgebruik komt aan het licht op het moment dat iemand de kast opent, en dat is precies het moment waarop het ertoe doet.

10. Erkenningsverklaring

Het veld erk in het logboek noteert de erkenning van de installateur, maar bewijst niets — het is tekst die hij zelf invult. Dat volstond zolang het probleem was dat erkenningen werden verzonnen. Inmiddels is het probleem verschoven: malafide bedrijven gebruiken de naam, en soms het nummer, van een bedrijf dat wél erkend is. Een register dat alleen op naam en adres doorzoekbaar is, bevestigt dan de leugen.

Dit hoofdstuk beschrijft hoe een uitgever — de erkennende instantie of een certificerende instelling — die erkenning ondertekend kan afgeven, zodat iedereen haar kan controleren zonder register en zonder verbinding.

10.1 Het moment: bij de offerte, niet bij de oplevering

Een opleverdocument ontstaat ná de klus. Dan is er betaald en is de schade geleden. De verklaring hangt daarom aan het bedrijf en niet aan een klus: ze kan mee op de offerte, op het bedrijfsbusje en op de website, en reist daarnaast mee in het paspoort. De controle verschuift zo naar het moment waarop de opdrachtgever nog nee kan zeggen.

10.2 Leesbaar formaat

Anders dan het paspoort wordt de verklaring niet gecomprimeerd. De gegevens moeten met het blote oog te lezen zijn, ook door iemand die alleen de URL in zijn adresbalk ziet staan:

https://<uitgever>/v?u=demo&kvk=30269985&b=Installatiebedrijf%20Jansen%20B.V.
  &erk=14718&vg=elektrotechniek,zonnestroom&bv=zegelrecht:IQ-14718-004000-004999
  &tot=2027-01-01&sid=demo-2026-01&sig=IwC7BsALphvgokU4rQIW6f…
VeldBetekenis
uIdentificatie van de uitgever, op te zoeken in de index (zie 8.5).
kvkKVK-nummer. Het anker van de verklaring: een bedrijfsnaam kan iedereen roepen, een KVK-nummer niet.
bBedrijfsnaam zoals ingeschreven.
erkErkenningsnummer bij deze uitgever.
vgVakgebieden waarvoor erkend, komma-gescheiden.
bvBevoegdheden, als soort:waarde — zie 10.3.
totGeldig tot. Lost intrekken op zonder dat iemand online hoeft te zijn: een ingetrokken erkenning krijgt geen nieuwe verklaring en verloopt vanzelf.
sidSleutel-identificatie van de uitgever.
sigEd25519-handtekening over alle voorgaande parameters in de getoonde volgorde, base64url.

10.3 Bevoegdheden verschillen per vakgebied

Het zegelrecht is niet de enige bevoegdheid die aan een erkenning hangt, en het geldt maar voor één vakgebied. Twee andere zijn zelfs zwaarder, want wettelijk in plaats van privaatrechtelijk:

VakgebiedBevoegdheidAard
Elektrotechniekzegelrecht:<reeks> — verzegelingen verbreken en aanbrengen, met toegewezen nummerreeksprivaatrechtelijk
Gastechnische installatiesco:<nummer> — CO-certificaat (BRL 6000-25)wettelijk
Warmtepomp, koelingfgas:<nummer> — F-gassencertificaatwettelijk
Zonnestroom, laadpunten, energieopslaggeen wettelijke bevoegdheid—

Die laatste regel verdient aandacht. Juist bij de vakgebieden waar de energietransitie het hardst groeit — en waar de meeste meldingen over malafide bedrijven vandaan komen — is de erkenning het enige signaal dat er is. Er is geen wettelijk register dat de opdrachtgever kan raadplegen. Een verifieerbare erkenning is daar dus niet nuttig maar noodzakelijk.

10.4 Meerdere uitgevers

Een uitgever kan alleen ondertekenen wat zij zelf afgeeft. Erkenningen komen van de erkennende instantie; het CO-certificaat en het F-gassencertificaat komen van certificerende instellingen. Een installateur draagt daarom mogelijk meerdere verklaringen, elk met de sleutel van hun eigen uitgever ondertekend en elk terug te vinden in de index. Dat sluit aan op de notatie uitgever:nummer die erk in het logboek al gebruikt.

10.5 Wat de verklaring wel en niet bewijst

Wel: dat deze erkenning door deze uitgever is afgegeven aan het bedrijf met dit KVK-nummer, en dat er sindsdien niets aan is gewijzigd. Wie één letter verandert, breekt de handtekening.

Niet: dat degene die voor u staat dat bedrijf ís. Een verklaring is een bestand en kan gekopieerd worden. De controle die daarop volgt is menselijk en eenvoudig: komt de bedrijfsnaam en het KVK-nummer in de verklaring overeen met de offerte? Zo niet, dan draagt iemand andermans papieren. Lezende toepassingen tonen die vergelijking daarom expliciet in plaats van alleen een vinkje.

Deze standaard beschrijft het formaat. Zij verifieert geen erkenningen en geeft er geen af; zij maakt controleerbaar wat de uitgever verklaart.

11. Versiebeheer & bijdragen

11.1 Twee versienummers

Deze specificatie kent twee nummers die niet gelijk oplopen, en dat is opzet:

WatNuWanneer hoger
Documentversie — deze tekst0.3bij elke inhoudelijke uitbreiding, ook als het datamodel gelijk blijft
Datamodelversie — het veld v in een paspoort2uitsluitend bij een wijziging die oudere lezers zou breken

Een paspoort met v: 2 kan dus velden bevatten die in documentversie 0.2 nog niet beschreven waren, zoals zeg. Dat is geen probleem: alle toevoegingen zijn optioneel en een lezer negeert wat hij niet kent. Wie zekerheid wil over welke velden hij kan verwachten, kijkt naar de documentversie; wie wil weten of hij het paspoort überhaupt kan lezen, kijkt naar v.

Wijzigingsvoorstellen op deze concept-specificatie zijn welkom; het veld v wordt verhoogd bij niet-neerwaarts-compatibele wijzigingen. Lezers behoren paspoorten met een hogere versie zo goed mogelijk weer te geven en onbekende velden te negeren. De referentie-implementatie van deze specificatie is YourWkb.

11.2 Wijzigingen in v0.3 datamodel ongewijzigd

WatWaarom
Nieuw: log[].zeg en hoofdstuk 9, zegelsHet landelijk zegelrecht hangt aan de erkenning. Het paspoort legt het zegelnummer vast op dezelfde plek als het zegel zelf, zodat toezicht mogelijk is zonder centraal register van meterkasten.
Nieuw: hoofdstuk 10, erkenningsverklaringHet veld erk noteert een erkenning maar bewijst haar niet. Een ondertekende verklaring maakt dat wél mogelijk — en al bij de offerte, dus vóórdat de opdracht is gegeven. Met de bevoegdheden per vakgebied, die per discipline verschillen en soms ontbreken.
Nieuw: hoofdstuk 6, omvang van de QR-codeMet een materiaallijst wordt de code groter. Vaste grenswaarden en één afkapvolgorde houden implementaties onderling vergelijkbaar.
Verduidelijkt: twee versienummers (11.1)Documentversie en datamodelversie liepen door elkaar.

11.3 Wijzigingen in v0.2

WatWaarom
Nieuw: mat[] met fab, typ, art, sn, pd, posZonder materiaallijst is een veldnotitie van een fabrikant nergens mee te vergelijken. Dit is de drager van het terugroepkanaal.
Nieuw: grp[].fn (fasenummer) en f beperkt tot het aantal fasenIn v0.1 kon f beide betekenen, waardoor de belasting per fase niet te bepalen was. Fasecompensatie is boekhouding, stroom is fysiek — de hoofdzekering zit vóór de saldering, dus per fase rekenen vereist een eenduidig fasenummer.
Nieuw: grp[].matKoppelt een groep aan het toestel dat hem beveiligt.
Nieuw: log[].erk als uitgever:nummerMaakt de erkenning van de uitvoerende installateur controleerbaar in het openbare register van de uitgever. Het paspoort verifieert niets; het maakt controleerbaar.
Nieuw: log[].sid en log[].sigOndertekening per logboekregel in plaats van over het geheel: dan kan niemand met terugwerkende kracht een eerdere regel wijzigen, en blijft de regel van een installateur verifieerbaar ook als dat bedrijf niet meer bestaat.
Nieuw: hoofdstuk 6, omvang van de QR-codeMet een materiaallijst wordt de code groter. Vaste grenswaarden en één afkapvolgorde houden implementaties onderling vergelijkbaar.
Nieuw: hoofdstuk 8, veldnotitiesHet formaatdeel van het terugroepkanaal hoort in de open standaard, niet in één applicatie. Inclusief vaste vindplaatsen voor feed en index, de ondertekening in drie lagen, en de neutraliteitsregels.

Neerwaartse compatibiliteit. Alle toevoegingen zijn optioneel. Een paspoort van v0.1 blijft geldig en leesbaar; alleen f is van betekenis verscherpt, waarbij een lezer bij v: 1 de oude uitleg moet blijven hanteren.