Jeg har, igen, igen, igen, fået ny elmåler, denne gang en E450 fra L&G som kun taler DLMS.
Jeg har kun lovord til overs for ZeaNet's medarbejder's indsats for at få skaffet mig adgang til data via det optiske øje, han har virkelig kæmpet for det.
Men det er lidt op ad bakke, for DLMS er ikke så meget en protokolstak, men det vi hernede på det sydvestsjællandske bondeplateau slet og ret kalder en bunke lort.
Kan I huske OSI protokollerne ?
Den der Post&Telegraf designede kolods på lerfødder som krævede et EU forskningsprojekt for at komme op på 2Mbit/s hastighed dengang vi andre kørte TCP/IP på 10Mbit/s ethernet ?
Nej ?
Men I har set den her T-shirt, ikke ?
Nå men sæt jer godt til rette, det her kan komme til at tage lidt tid...
Vi lider idag under nogle teknologier der blev startet dengang i 1980'erne og som af dårlige årsager hænger fast i mange af de dårligste ideer fra hele OSI-æraen.
I SS7, "Signal System Syv", som bruges til at udveksle traffik mellem telefonselskaber, er der f.eks intet der bare minder om authenticering af data, det er derfor "Mike From Microsoft Support" kan ringe fra danske telefonnumre.
Den er også gal med jernbanernes nye ERTMS2 radio-baserede signalsystem, men den historie gemmer vi til en anden dag.
Den teknologi vi skal kigge på idag er "smarte" elmålere og specifikt DLMS protokollen de bruger til dataudveksling.
Det første problem man løber ind i, er at de relevante standardiseringsdokumenter er dyre at få fat i. Ingen grund til at uddybe hvorfor det er forkert og dumt.
Det næste problem man løber ind i, er at dokumenterne er elendigt skrevet i forhold til tilsvarende RFC'er fra samme æra.
DLMS bruger, hvis man skal tro deres standarddokumenter, ISO-13239 "Information technology — Telecommunications and information exchange between systems — High-level data link control (HDLC) procedures" som link-level protokol.
Hvis vi ser bort fra de fundamentalt forkerte antagelser, f.eks at bitfejl er sjældne fordi teleselskaber, leverer kvalitetsforbindelser, (det manglede andet til de priser!) er ISO 13239's største problem at den er helt unødvendig kompliceret.
En meget stor del af komplikationen bunder i at en X.75 linie på tværs af en landegrænse naturligvis må være symmetrisk, vi kan ikke have at det ene land indtager en overordnet og det andet land en underordnet rolle, så de skal begge kunne gøre alt hvad man skal kunne gøre, med det resultat procedurene skal tage højde for en masse situationer hvor de prøver at gøre hver sin ting.
I praksis er "tage højde for" begrænset til at definere hvordan de pågældene pakker ser ud, men ikke til hvordan man i praksis kommer videre. Den slags problemer henvises i ISO-protokoller til "have your folks call my folks".
Mao: HDLC lider af Conways lov: IT systemers organisation afspejler den organisation der laver dem.
DLMS bruger den simpleste variant af HDLC, kaldet "Normal Reponse Mode", hvilket for almindelige mennesker betyder at den primære station spørger og den sekundære svarer kun når den bliver spurgt.
Den klassiske, den fornuftige måde at håndtere transmissionsfejl i den situation, er at den primære station starter et timeout og hvis den ikke får svar, gentager spørgsmålet et antal gange, inden den giver op.
I HDLC har man også to andre muligheder: Den primære station kan enten sende det næste spørgsmål, eller en speciel "Burde jeg have hørt et svar fra dig ?" pakke, forvirrende nok kaldet "REJect".
Min elmåler svarer forkert i alle tre tilfælde.
Retransmitterer man, sender den en "FRMR" - "Frame Reject" pakke og siger at det kan den sandelig ikke finde ud af.
Sender man næste spørgsmål med sekvensnummer der viser at man mangler forrige svar, får man også en FRMR tilbage.
Sender man en REJ får man ikke engang en korrekt pakke tilbage, man får bare to 0x00 bytes(!).
Der er, så vidt jeg kan se, ingen måde at få den tabte pakke retransmitteret og jeg ved godt hvorfor: Elmålerens software er oprindeligt designet til at køre på minimal processkraft, så den har slet ikke gemt sit forrige svar, langt mindre spørgsmålet.
Løsningen er at retransmittere, for det tilfældes skyld at det var spørgsmålet der gik tabt og hvis elmåleren brokker sig fordi den allerede har svaret, gentager man bare spørgsmålet som et nyt spørgsmål.
Godt så.
Men det der med den minimale processkraft, ikke ?
Min elmåler har siger og skriver seksogtyve forskellige "roller", hver med sine sikkerhedsparametre og beføjelser.
F.eks kan man have en rolle der kan sætte elpriserne, mens en anden rolle kan definere reglerne for valg af elpris, en tredje der vælger hvilket sæt regler der gælder hvornår.
Der er naturligvis også roller til at ændre hvad de andre roller kan & må, ligesom der er roller til kalibrering, validering osv. osv.
Conways lov igen og for elmålere er det et firma der prøver at lave et produkt de er generelt nok til at det næste elselskabs underlige krav til hvordan ting skal være organiseret.
Mao: Conways lov i anden potens.
Resultatet er at ingen elselskaber har folk der kan gennemskue den slags og derfor må hyre dyre konsulenter til "alt det indviklede".
Af årsager der er mig ukendte, er konsulenterne overvejende finske.
Men når man så har fået HDLC laget til at virke, skal man til at sende spørgsmål og svar.
Det første man bør gøre, er at hente en oversigt over hvad elmåleren faktisk kan, det tager omkring et minut eller deromkring.
Når man så har opdaget at elmåleren er en elmåler, kan man begynde at hive tal ud af den, forudsat man har en tildelt rolle og dens password, og forudsat der er sat kryds i de rigtige felter ud for denne rolles tilladelser.
En eller anden gang, i noget der hedder "COSEM", har nogle folk i branchen manglet båndbredde, så de har defineret deres egen mere kompakte version af X.509 BER enkodningen.
Så vidt jeg kan se sparede de ikke engang 10% båndbredde.
Senere har nogle andre defineret DLMS protokollen som bruger "rigtig" BER enkodning.
Derfor pakker man først selve spørgsmålet, f.eks "Spænding på fase 1", ind med COSEM's BER, derefter tager man dette resultat og pakker det ind i et DLMS spørgsmål, "COSEM get request", som en bytesekvens.
Svaret udpakkes på samme to-trins måde i omvendt rækkefølge.
Der findes nogle få open-source pakker der kan alt det her hejs, f.eks "GuruX" fra Finland.
Deres Python version er på omkring 50.000 linier kode.
Giver man sig til at undersøge hvorfor bliver ens tilværelse ikke bedre.
På et eller andet tidspunkt under XML-pandemien, fik nogen den ide at man kunne tage en BER pakke og lave den om til XML, standarden for det hedder X.680 - "XER - XML Encoding Rules".
Og nåh ja, det finske GuruX firma's software er organiseret, som en organisation der prøver at interface med "Conways lov i anden" implementeringer af DLMS protokollen - dvs. Conways lov i tredje potens.
Det er slemt nok at elselskaberne skal belemres med alt det her slam, det gør ikke elektriciteten i Danmark bedre eller billigere, men at forbrugerne skal sparke denne døde hval ned af stranden for at hive ud af deres elmåler hvor mange Watt de bruger lige nu, er hindsides enhver fornuft.
Ved i hvad det mest frustrerende er ?
Alle elmålere kan, hvis de konfigureres dertil taler IEC1107 protokol.
Her sender man i ASCII med paritet spørgsmålet "/ ? ! CR NL" og får f.eks som svar:
/LGZ4\2ZMD120AMe.A04r\n
\x02 F(00000000)\r\n 0.Z( 815413)\r\n
99.Z(74700132)\r\n
8.1(00183359kWh)\r\n
A1(00090669kWh)\r\n
A2(00042130kWh)\r\n
A3(00050559kWh)\r\n
71(00000008)\r\n
L1(00000008)\r\n
L2(00000006)\r\n
L3(00000007)\r\n
95(01-04-26 21:29)\r\n
96(01-04-26 21:10)\r\n
97(A04)\r\n
98(7EZ1120-0AA06)\r\n
C.8.0(05198139)\r\n
!\r\n
x03 J
Præcis hvilke variabler der sendes tilbage kan konfigures i elmåleren.
Folketinget kunne have vedtaget, at alle danske elmålere via det optiske øje skal svare på IEC1107 med aktuel spænding, strøm med fortegn og effekt med fortegn samlet og for hver fase for sig, samt akkumleret kWh ind og ud og frekvensen, i alt 15 variabler.
Så ville alting have været bedre for alle der har noget med elmålere at gøre, dog måske med undtagelse af finske konsulenter.
Elselskaberne kunne bestille firmware til deres elmålere med henvisning til lovteksten og derefter aldrig nogensinde igen bruge tid på kunder der vil have adgant til realtids data.
Det ville også skabe et startup-marked for dimser og software som forbrugerne nemt kunne klikke på deres egen elmåler og således følge med i, eller ligefrem styre deres elforbrug.
Det gjorde Folketinget ikke.
Derfor skal folk i visse landsdele slås med DLMS, i andre med Echelon (der ikke er et hak bedre) i andre igen med Kamstrup protokollen (heller ikke noget at råbe hurra for) eller elselskaber der er så usikre på den teknologi de selv ruller ud, at de slet ikke vil give folk adgang til at begynde med.
Det er meget langt fra at være "smarte elmålere".
Den teoretisk gode nyhed er at Folketinget kan gøre det endnu.
Nå, men hvad har I så brugt hele jeres weekend på ?
phk

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.