
Indholdsfortegnelse
- Intro
- Aflæsning af data
- Ingen data..??
- Integration i Home Assistant med MQTT
- Hvad er min oplevelse med alt det her?
- Debugging
- Tak
Intro
Dette er et LANGT indlæg omkring udmåling af elforbruget fra Kamstrup elmålere. Jeg anbefaler at du læser det hele, selvom det godt kan være lidt langhåret.
For at opsummere lidt, her er en checkliste som bliver forklaret senere:
- Sørg for at HAN interfacet er slået til i din elmåler
- Sørg for at have de to dekrypteringsnøgler klar
- Sørg for at have en ESP8266/ESP32 samt en smule kendskab til disse
Jeg har de sidste par uger prøvet at få gang i live udmåling af mit elforbrug. Der findes et par måder at gøre det på, men den fedeste måde er 100% garanteret via HAN interfacet på Kamstrups OmniPower elmålere. HAN (Home Area Network) interfacet på de nyere OmniPower elmålere handler essentielt om, at man kan få en masse fed data ud med ~10 sekunders mellemrum. Her er en liste over hvad man får hvert ~10. sekund:

Du kan altså aflæse din målers spænding (volt), strøm (ampere) og forbrug (watt) hvert 10. sekund, i stedet for at skulle vente på et gennemsnit fra Eloverblik.dk, som kun kan vise dig 1-2 dage gammelt data. Det data fra HAN interfacet kan du så smide direkte videre ind i et program, der står for at logge det hele, så du kan generere fine grafer, lave beregninger og så videre. Kun fantasien sætter grænser.
At nå i mål har altså IKKE været nemt. Det har faktisk taget 5-6 uger, selvom jeg havde alt hardware til det. Jeg brugte cirka en dag på at researche andre folks løsninger, såsom dette fine indlæg fra Xenophane og lidt omkring HAN interfacet. Mit endelige mål var at få det ind i Home Assistant, så jeg kunne vise mit forbrug på mit dashboard. Ud fra HAN interfacets dokumentation, vidste jeg godt, at jeg enten selv skulle:
- Lære at dekode de krypterede bytes fra elmåleren
- Stjæle andre folks kode
- Bruge en færdig løsning
At lære at dekode de krypterede bytes fra elmåleren ville ikke være så svært, da det er så veldokumenteret, men når jeg ved at andre folk har gjort det, giver den løsning ingen mening i mine øjne. Og så tager den løsning tid. Meget tid.
At stjæle andre folks kode er altid sjovt, men det kræver stadigvæk at jeg laver min egen løsning i sidste ende.. som igen kommer til at tage tid. Tid jeg hellere vil bruge på at bestille gadgets fra AliExpress.
At bruge en færdig løsning må derfor være det, jeg vælger at gå med. Og det har jeg. Der findes nogle kommercielle produkter såsom smart-me, som egentligt lover at gøre præcis hvad jeg gerne vil. Dog koster sådan en adapter 1000+ kroner sidst jeg tjekkede, og det vil jeg simpelthen ikke ofre for en ESP8266 eller ESP32 på et PCB med lidt kode. Sorry, men nej tak.
Den anden løsning er at bruge andre folks kode og smide det direkte på en ESP8266 eller ESP32. Her kommer AMS Reader ind i billedet. Det er et genialt stykke software, der er skræddersyet til præcis det jeg (og forhåbentligt dig) gerne vil frem til.
Aflæsning af data
Det aller aller aller første du skal gøre, er at tage kontakt til dit elværk. Du skal nemlig bruge to dekrypteringsnøgler: GPK60 og GPK61. GPK60 er krypteringsnøglen (Encryption key i AMS Reader) og GPK61 er autentificeringsnøglen (Authentication key).
For at få fat i nøglerne, skal du blot skrive til dit elværk, hvor du kan formulere en mail såsom denne:
Kære Elværk
Jeg har købt et HAN modul til min Kamstrup elmåler, som nu spørger efter et sæt krypteringsnøgler. Jeg skal bruge GPK60 og GPK61 for at kunne snakke med måleren. Derudover vil jeg også gerne have slået HAN interfacet til, så jeg kan snakke med mit HAN-NVE “push” modul.
Mit navn er XXX og jeg bor på YYY.
Jeg har vedhæftet et billede af min elmåler, hvor I kan se serienummeret.
Kan I sende de to nøgler til mig?
På forhånd tak
XXX
Husk at vedhæfte et billede af din elmåler, da der står et serienummer på. Vær opmærksom på, at denne proces sagtens kan tage 1-2 uger. Det afhænger lidt af dit elværk, samt hvor travlt de har.
De to nøgler du får er nogle hexadecimal tal på 32 tegn. De ligner lidt dette: 2C8D93E5F6E05DECA1A7E43B90B472C1
Mens du venter på nøglerne, kan du lige så godt bestille de nødvendige komponenter:
- Female-to-female dupont kabel (reklamelink) (under 20 kroner inkl. fragt for en god sjat)
- ESP8266 (reklamelink) (~30 kroner) eller ESP32 (reklamelink) (~40 kroner)
- USB Micro-B kabel (reklamelink) (dem har du sikkert en god håndfuld af ellers)
Jeg antager alle ved hvordan man flasher en ESP8266 eller ESP32, ellers kan man følge den fine guide herinde: https://github.com/UtilitechAS/amsreader-firmware/wiki/flashing
Når AMS Reader er flashed til din ESP8266/ESP32 er det blot et spørgsmål om at forbinde den med WiFi og opsætte den til at forbinde til dit eget WiFi. Derefter skal du tilslutte den til din elmåler med de to dupont female-to-female (reklamelink) kabler. Du skal forbinde pin 6 (GND) på elmåleren til GND på din ESP8266/ESP32 og pin 5 (DATA_OUT) til den pin du har valgt inde i AMS Readers configuration screen. Her er en fin oversigt over pins på en ESP8266 (GPIO4 er D2 eksempelvis).

Inde i AMS Reader skal du så indtaste dine to dekrypteringsnøgler. Hvis du ser de starter med 0x efterfulgt af din nøgle, skal du ikke være bekymret, for det er sådan AMS Reader selv konverterer dem.
Hvis du derefter gemmer og går til forsiden, burde du nu hvert ~10. sekund begynde at få data ind og alt kører! Kæmpe high-five!
Ingen data..??
Hvis du er 100% sikker på, at du har koblet AMS Reader ordentligt til, så er der to mulige scenarier (der begge kan være sande):
- Din elmåler er for gammel, så det firmware der kører på den ikke sender det korrekte ud ifht. hvad AMS Reader forventer (og så vidt jeg kan forstå, så skal man spørge om dataen på de “gamle” elmålere før de sender noget tilbage)
- HAN interfacet på din elmåler er slået fra
Hvis din elmåler er for gammel, så skal du have dit elværk til at skifte den til en nyere. Du kan prøve at tigge om at få en gratis opgradering, men eftersom elmåleren højest sandsynligt virker som den skal, kan det sagtens være de nægter at gøre det. Det andet du kan gøre, er at punge op for at få den skiftet. Prisen varierer alt afhængig af, hvor gammel din måler er og hvor lang tid installatøren skal bruge på at skifte den.
Er HAN interfacet slået fra, skal du “blot” oplyse dit elværk om dette. Husk at nævne dit modul bruger “push”. De kan via OmniSoft VisionAir slå HAN interfacet til og fra. Hvis de ikke har mulighed for det, så tager de kontakt til Kamstrup, som enten kan be- eller afkræfte om det er slået til, og derefter gøre det i deres ende. Virker det stadigvæk ikke, kan de med fordel slå HAN fra, vente noget tid og derefter slå det til igen. Det trigger højest sandsynligt en opdatering til din måler.
Integration i Home Assistant med MQTT

AMS Reader sender nyt dekrypteret data ud via MQTT, så du skal have en MQTT broker installeret ét eller andet sted. Bruger du Home Assistant med Supervisor, kan du vist installere en MQTT broker direkte i Home Assistant. På min server der kører unRAID, har jeg installeret en Docker container med et image fra spants/mqtt
. Gå ind i AMS Reader, vælg Configuration og derefter MQTT. Indtast nu dine MQTT brokers oplysninger.

Sæt Client ID til eksempelvis Kamstrup og sæt Publish topic til ét eller andet. Jeg har valgt at smide den ind i homeassistant/sensor/kamstrup-meter/config
, bare for at holde nogenlunde samme struktur som nogle andre sensorer jeg har.
Derefter skal du have MQTT integrationen i Home Assistant til at snakke med din broker. Det er vist nemmere bare at linke til denne side, end at jeg prøver at forklare det: https://www.home-assistant.io/integrations/mqtt/ (bare tryk på Add Integration og følg hvad der står på skærmen)
Nu skal du så tilføje en sensor, der hiver dataen ud af MQTT og laver en entity til dig. Dette skal gøres i configuration.yaml filen, hvor jeg har et eksempel her:
sensor:
- platform: mqtt
name: "Kamstrup Power"
unit_of_measurement: "watts"
state_topic: "homeassistant/sensor/kamstrup-meter/config"
value_template: "{{ value_json.data.P }}"
device_class: 'power'
state_class: 'measurement'
Efter Home Assistant er blevet genstartet, får du så en ny entity:

Derefter er det blot et spørgsmål om, at gøre noget med dataen. For at lave en “bar chart” ligesom jeg havde i toppen af denne sektion, kan du bruge mit eksempel her, ved brug af mini-graph-card:
type: custom:mini-graph-card
name: Forbrug 3 minutter
entities:
- sensor.kamstrup_power
line_color: lightblue
hours_to_show: 0.05
points_per_hour: 360
aggregate_func: max
show:
icon: false
graph: bar
labels: true
Energy siden i Home Assistant
Hvis du gerne vil have energy siden i Home Assistant til at vise data, skal du sørge for at du har oprettet din MQTT sensor og du får dataen vist først. Derefter skal du oprette en ny sensor af typen Riemann Sum Integral:
sensor:
- platform: integration
source: sensor.kamstrup_power
name: energy_spent
unit_prefix: k
round: 2
Derefter skal vi have tilføjet et par attributter til den sensor, før energy tabben giver en lov til at vælge den. Jeg har både tilføjet den til Kamstrup Power sensoren, men også den nye Riemann Sum Integral sensor:
homeassistant:
customize_glob:
sensor.kamstrup_power:
last_reset: '1970-01-01T00:00:00+00:00'
device_class: energy
state_class: measurement
sensor.energy_spent:
last_reset: '1970-01-01T00:00:00+00:00'
device_class: energy
state_class: total_increasing
unit_of_measurement: kWh
OPDATERING:
Hvis du kører Home Assistant FØR februar 2022, så skal du ændre state_class:
til total_increasing
state_class: measurement
:
homeassistant:
customize_glob:
sensor.kamstrup_power:
last_reset: '1970-01-01T00:00:00+00:00'
device_class: energy
state_class: measurement
sensor.energy_spent:
last_reset: '1970-01-01T00:00:00+00:00'
device_class: energy
state_class: measurement
unit_of_measurement: kWh
Det stump kode skal blot sættes i toppen eller bunden af din configuration.yaml fil. Husk at “homeassistant
:” kun må være i configuration.yaml én gang.
Derefter går du ind på din /config/energy side, tilføjer en ny Grid consumption og vælger sensor.energy_spent
:

Vær opmærksom på, at det godt kan tage et par timer, før energy siden viser noget data, men når den gør, så ser det meget godt ud:

Hvad er min oplevelse med alt det her?
Jeg har som sagt været i gang i 5-6 uger, og er heldigvis endeligt kommet i mål. Men det har ikke været nemt.
- Jeg fik bekræftet af Kamstrup og mit elværk, at HAN interfacet på min 2014 OmniPower elmåler var slået til, men jeg fik stadigvæk ingen data ud
- Firmwaret på min 2014 elmåler var for gammel, og jeg kunne ikke få en ny version installeret
- Jeg fik skiftet min elmåler til en nyere, som efter lidt tid fik den nyeste firmwareversion installeret automatisk (ifølge mit elværk)
- Efter installeringen skulle HAN interfacet igen aktiveres
- Efter installeringen skulle jeg anmode om 2 nye GPK60 og GPK61 nøgler (da de passer til måleren og ikke huset)
- Efter modtagelsen af de nye nøgler, virkede det stadigvæk ikke, og jeg brugte sammenlagt ~1.5 time i telefonen med Kamstrup
- Kamstrup endte med at få det til at virke umiddelbart ved at “slå det til og fra igen”. Sådan lød det i hvert fald på nordmanden
Det er lang tid siden, jeg har været så fustreret over noget. Jeg har absolut ingen kontrol over min elmåler samt hvilke features der er aktiveret eller deaktiveret. Det hele ender i bund og grund hos dit elværk eller Kamstrup, som stadigvæk kan være uvidende (som de var i mit tilfælde), hvorfor dette har taget så lang tid.
Jeg har ikke fortrudt dette projekt overhovedet, for slutresultatet er utrolig fedt. At kunne aflæse sin elmåler helt ned til hver fase, og så hvert ~10. sekund, er jo utrolig fedt. Jeg kan se præcis hvilke enheder i vores hjem bruger meget strøm, ved at tænde for dem, opsnappe data i lidt tid, og så slukke for enheden igen.
Jeg ville dog ønske, at det gik lidt mere “smooth”, men der kan man desværre pege fingre af mange.
Debugging
Denne sektion er mest for at hjælpe folk, hvis det slet, slet ikke virker for dem.
- I AMS Reader har du mulighed for at debugge hvad der kommer ind på din enhed. Hvis du har telnet slået til, så skal du bare forbinde til den og vente på at der kommer noget data ind i din terminal
- Et oscilloskop eller en logic analyzer kan hjælpe gevaldigt med at få bekræftet, at du faktisk får noget data ud af pin 5 (DATA_OUT) på din elmåler
- Hvis du forbinder din ESP8266/ESP32 til din computer mens den sidder ude i elskabet, kan du se den serielle kommunikation i Arduinos IDE (eller hvad end du bruger). Dataen sendes vist ved 115200 baud rate, selvom den aflæser Kamstrup måleren ved 2400 baud rate. Den data der bliver vist, er den samme som ved at bruge telnet
Tak
Til slut vil jeg gerne sige tak til alle der har hjulpet. Jeg var helt grøn på området, men fik hurtigt dannet mig en teknisk forståelse for HAN. Så denne sektion er en tak til alle, der har hjulpet mig med debugging og deres egne oplevelser.
- Claus fra xipher.dk og Home Assistant Facebook gruppen
- Morten fra Home Assistant Facebook gruppen
- Gunnar Skjold der har udviklet AMS Reader
- ArnieO der har udviklet POW-K (færdigt produkt der kører AMS Reader)
- Tor Berg fra Kamstrup der formåede at få elmåleren til at virke i sidste ende
- Jørn fra Energi Ikast i vores 30+ lange mailkorrespondance
Skriv et svar