Skip to content

PiggyMeter

PiggyMeter tilsluttet elmåler

Denne artikel viser dig, hvordan du bygger en enhed til at aflæse data fra en elmåler (eller enhver enhed med en kompatibel grænseflade) eksternt.

Den bruger bredt tilgængelige komponenter, open source-software og er kompatibel med populær hjemmeautomatiseringssoftware, Home Assistant.

INFO

Et kit til at samle en funktionel enhed er tilgængeligt til køb på Tindie: PiggyMeter KIT.

Funktioner

  • Understøtter IEC62056-21 baserede protokoller
  • Understøtter passiv SML-protokol ved hjælp af ESPHome native komponent
  • Flere målere: energi, vand, termisk og mere
  • Bruger open source ESPHome
  • Trådløs kommunikation via Wi-Fi
  • Integrerer med Home Assistant
  • Valgfri webserver
  • Billig hardware ESP32-C3 eller ESP32-S2
  • Kassedesign tilgængeligt til 3D-print

Den understøtter målere, der er kompatible med IEC62056-21 standarden, som fungerer i tilstande A, B, C, D (men ikke E). For detaljer se IEC 62056-21 komponent.

Bemærk, at der er mange variationer af protokollen. Selvom måleren kan bruge den samme optiske grænseflade, kan dataframestrukturen være forskellig.

Derudover understøtter den målere, der bruger SML (Smart Message Language) protokol ved hjælp af ESPHome SML komponent.

WARNING

DLMS, M-Bus og ANSI C12.18/19 standarder understøttes ikke af softwaren.

Hvordan tjekker man, om måleren understøttes?

IEC 62056-21 termen bruges til flere protokoller (med det samme hardwarelag men forskellig dataindkodning). Enheden understøtter målere, der leverer ASCII-kodede data, noget i stil med dette:

console
1-0:15.8.1(00000009999.567*kWh)
1-0:15.8.2(00000000000.000*kWh)
1-0:15.8.3(00000000000.000*kWh)
1-0:15.8.4(00000000000.000*kWh)

Måleren skal være kompatibel med International Standard IEC 62056-21:2002.

Karakteristisk metalring og optisk grænseflade i midten.

For SML-protokollen, se efter SML-logoet på måleren eller tjek manualen. ESPHome-komponenten understøtter kun passiv tilstand, den sender ingen forespørgsler til måleren. I den tilstand sender måleren data hvert par sekunder.

Målere rapporteret til at fungere med PiggyMeter

Listen er oprettet baseret på brugernes rapporter. Der gives ingen garanti for, at den er nøjagtig.

INFO

Du er velkommen til at sende en e-mail til info@aquaticus.info, hvis du kender en måler, der fungerer med PiggyMeter, men som ikke er nævnt ovenfor.

Alternativ software

PiggyMeter-hardware kan arbejde med mange forskellige målere, der benytter optisk interface. Dog understøtter softwaren i øjeblikket kun én standard, hvilket praktisk begrænser rækken af understøttede målere.

Du kan prøve at bruge alternativ software, der muligvis tilføjer understøttelse til forskellige målere. Det er vigtigt at bemærke, at der ikke er nogen garanti for, at det vil fungere problemfrit med PiggyMeter. For support, bedes du kontakte den oprindelige forfatter.

Materialeliste

DelBeskrivelse
CPUWemos C3 eller S2 Mini https://www.wemos.cc/en/latest/
Optisk interfacePiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42,54mm raster; den plastiske del skal være 8,5 mm høj
Ringmagnet⌀30/⌀15×2mm
Kasse3D-printet kasse https://github.com/aquaticus/piggymeter_case
Skive3D-printet skive https://github.com/aquaticus/piggymeter_case
Låg3D-printet baglåg https://github.com/aquaticus/piggymeter_case

CPU board

CPU

Du skal bruge et board med Espressif-chip installeret og kompatibel Wemos/Lolin pinout. Den afgørende faktor er placeringen af 4 pins: GND, VCC, TX og RX.

Størrelsen på PCB'en er også kritisk. Det 3D-printede kabinet passer kun til boards (eller deres kloner) listet nedenfor:

  • Lolin/Wemos S2 mini
  • Lolin/Wemos C3 mini

I teorien kan du bruge ethvert andet CPU-board med kompatibel pinout, notable ESP32 og ESP8266 D1 mini. Men i så fald skal du designe dit eget kabinet og ændre lidt i konfigurationsfilerne (boardtype og serielle portpins).

Optisk interface

Optisk interface

En måler anvender et optisk interface kompatibelt med IEC62056-21 standarden, der kommunikerer med en probe via en infrarød diode og en fototransistor.

Interfacet er forbundet til en af de serielle porte på CPU-boardet. Du har selvfølgelig også brug for VCC og GND.

Optisk interface og CPU
board

Lod 2 pin headers. Du skal bruge pin header 8,5 mm i højden. Designet af kabinettet rummer denne højde og sikrer en ordentlig pasform. Hvis højden overstiger denne dimension, kan det være udfordrende at lukke låget.

INFO

Du kan købe et samlet interface på Tindie. Buy on Tindie

Kabinet

Download filer til 3D-printer fra https://github.com/aquaticus/piggymeter_case. Brug V5-versionen til det nyeste design.

Kabinet

Kabinettet består af tre komponenter:

  • hovedkabinettet,
  • en skive,
  • og et låg.

Der er tre forskellige STL-filer tilgængelige for hver komponent, eller alternativt en enkelt 3fm-fil der inkorporerer alle tre elementer.

Huset opfylder kravene i IEC62056-21 standarden Optisk Probe>.

INFO

Huset har en lille lås. For at lukke eller åbne det, skal du bruge en smule kraft.

Anbefalede 3D-printindstillinger

  • Materiale: PLA
  • Lag: 0,2 mm
  • Ingen støtte

3d print

Samling

Samling

Arranger komponenterne inden i kassen i denne rækkefølge:

  1. Magnet
  2. Skive
  3. Optisk interface
  4. CPU-kort
  5. Låg

Programmering til IEC62056-21 målere

Begynd med at installere ESPHome.

Baseret på dit CPU-kort, vælg den passende konfigurationsfil. Foretag desuden manuelle justeringer af visse parametre, såsom WiFi-adgangskoden.

Hent konfigurationsfiler

Klon git-repositoriet med konfigurationsfiler:

bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml

Opret secrets.yaml fil

Opret en secrets.yaml fil i den mappe, hvor konfigurationsfilerne er placeret. Denne fil vil indeholde WiFi-netværkets navn og den tilsvarende adgangskode.

yaml
# Home Assistant API encryption key
api_key: my_home_assistant_encryption_key

# OTA password
ota_pass: my_ota_password

# WiFi network name
wifi_ssid: my_network

# WiFi network password
wifi_pass: my_password

Rediger projektkonfiguration

Konfigurationen kommer forudindstillet med standard datapunkter for en elmåler.

Du er velkommen til at justere listen, især hvis din måler adskiller sig fra elmålertypen. Se IEC 62056-21 komponenten for yderligere information.

yaml
sensor:
   - platform: iec62056
       obis: 1-0:15.8.0
       name: Absolute active energy total
       unit_of_measurement: kWh
       accuracy_decimals: 3
       device_class: energy
       state_class: total_increasing

Byg og flash firmwaren

bash
esphome run piggymeter-s2-iec62056-21.yaml

Kommandoen ovenfor flasher firmwaren og viser monitoroutput. Som standard læser interfacet data fra en måler hvert 1. minut.

TIP

For ESP32-S2 kort skal du trykke på BOOT-knappen og derefter RESET-knappen på PCB for at gå ind i programmeringstilstand. Derudover kan du se en fejlmeddelelse efter flashing -- bare ignorer den.

log
[12:21:27][D][iec62056.component:232]: Connection start
[12:21:27][D][binary_sensor:036]: 'Meter Connection Status': Sending state ON
[12:21:28][D][switch:013]: 'Internal LED' Turning ON.
[12:21:28][D][switch:056]: 'Internal LED': Sending state ON
[12:21:28][D][iec62056.component:174]: Meter identification: '/XXX6\2YYYYY'
[12:21:28][D][iec62056.component:407]: Meter reported protocol: C
[12:21:28][D][iec62056.component:410]: Meter reported max baud rate: 19200 bps ('6')
[12:21:28][D][iec62056.component:438]: Using negotiated baud rate 9600 bps.
[12:21:29][D][iec62056.component:470]: Switching to new baud rate 9600 bps ('5')
[12:21:29][D][iec62056.component:482]: Meter started readout transmission
[12:21:29][D][iec62056.component:524]: Data: 0-0:C.1.0(12345678)
[12:21:29][D][iec62056.component:524]: Data: 0-0:1.0.0(2000-01-01 20:10:30)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.0(00000001000.657*kWh)
[12:21:29][D][iec62056.component:620]: Set sensor 'Absolute active energy total' for OBIS '1-0:15.8.0'. Value: 1000.656982
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.1(00000002000.657*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.2(00000003000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.3(00000004000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.8.4(00000005000.000*kWh)
[12:21:29][D][iec62056.component:524]: Data: 1-0:15.6.0(00000006000.385*kW)(2000-01-01 20:10:01)

Programmering til SML målere

De første trin er identiske med dem for IEC62056-21 målere.

Efter at have klonet repositoriet og oprettet secrets.yaml filen, brug konfigurationsfiler til SML målere.

bash
esphome run piggymeter-s2-sml.yaml

Det er sandsynligt, at du skal justere konfigurationsfilen for at matche de datapunkter, der overføres af måleren. Det er også værd at verificere baudrate og databits for den serielle port.

Home Assistant

Enheden bør automatisk blive opdaget af Home Assistant. Hvis ikke, kan du tilføje den manuelt ved at klikke på Tilføj Integration og vælge ESPHome integration.

PiggyMeter eksponerer tre grupper af elementer:

Aflæsning Udløser

Denne udløser tvinger PiggyMeter til at læse data fra en måler uden for tidsplanen.

Målerforbindelsesstatus

Connected status indikerer, at interfacet udveksler data med måleren.

Connection Status

Sensorer

Dette er en liste over sensorer defineret i konfigurationsfilen.

Sensors

Standalone-tilstand

PiggyMeter kan fungere uafhængigt af Home Assistant og tilbyder muligheden for at aktivere en webserver. Denne server viser dataaflæsninger direkte i en webbrowser og tilbyder en simpel REST API.

For at aktivere webserveren, inkludér følgende linjer i konfigurationsfilen:

yaml
web_server:
  port: 80

Mere information om webserveren kan findes i ESPHome dokumentationen.

Ændringer

Som standard henter enheden data hvert minut, og den interne LED er tændt under transmission.

Kun et begrænset antal OBIS-koder er defineret i konfigurations-yaml-filen. Det anbefales stærkt at ændre listen over sensorer for at matche en måler.

Selvom OBIS-koder er standardiserede, kan målere overføre varierende antal koder. For at fastslå de understøttede koder for din måler, aktiver DEBUG logging for IEC62056-21 komponenten og analyser logoutputtet.

Diagnostik og Problemer IEC62056-21

Denne sektion er kun for IEC62056-21 målere (ikke SML).

Efter at firmwaren er blevet flash'et, vil enheden forsøge at læse data fra en måler efter cirka 15 sekunder. Hvis transmissionen fejler, vil den forsøge igen to gange hver 15. sekund.

Du kan justere disse parametre ved at konfigurere de passende tokens. Konsulter IEC62056-21 komponent dokumentationen for flere detaljer.

Det anbefales at ændre standard logniveauet fra DEBUG til INFO, når enheden er bekræftet til at fungere korrekt.

Nedenfor er almindelige problemer og deres respektive løsninger.

TIP

Sørg for, at proben er sikkert fastgjort til måleren, og at pilen på proben peger opad.

Ingen transmission fra måleren

log
[E][iec62056.component:268]: No transmission from meter.

Dette kan indikere:

  • Oftest er interfacet ikke tilsluttet en måler.
  • Interfacet er ikke korrekt justeret med målerens optiske interface.
  • Måleren er ikke kompatibel.

Sørg for, at det optiske interface er placeret parallelt med frontfladen af huset. Hvis enheden fungerer, når den er tilsluttet måleren uden huset, men ikke fungerer efter at være indsat i huset, kan dette være problemet. I så fald kan du også overveje at forstørre de to huller i huset.

Ikke alle sensorer modtog data

log
[E][iec62056.component:644]: Not all sensors received data from the meter. The first one: OBIS '1-0:72.7.0'. Verify sensor is defined with valid OBIS code.

Dette kan indikere to problemer:

  • Måleren understøtter ikke OBIS-koden, du har konfigureret i yaml filen. Fjern blot sensoren med den specifikke OBIS-kode fra konfigurationen.
  • Der kan være en tastefejl eller forkert definition af OBIS-koden for sensoren i konfigurationsfilen. Dobbelttjek koden.

Måleren transmitterer data automatisk, men enheden modtager intet

Dette indikerer, at måleren understøtter mode D af IEC62056-21. I denne tilstand transmitterer måleren autonomt data hvert par sekunder uden at kræve en specifik forespørgsel. Sørg for, at den serielle port er konfigureret til at stemme overens med målerens transmissionsformat, typisk indstillet til 9600 7E1 eller 2400 7E1 i de fleste tilfælde.

yaml
# 9600bps for mode D
uart:
    rx_pin: GPIO21
    tx_pin: GPIO22
    baud_rate: 9600
    data_bits: 7
    parity: EVEN
    stop_bits: 1

Derudover skal tilstand D aktiveres manuelt ved at sætte mode_d=True i platformkonfigurationen.

yaml
# Aktiver tilstand D
iec62056:
  mode_d: True

Kontrolsumfejl

log
[E][iec62056.component:504]: BCC-verifikation mislykkedes. Forventet 0x6b, fik 0x14

Denne fejl antyder transmissionsproblemer.

Normalt er transmissionshastigheden for høj. At sænke den maksimale baudrate bør hjælpe.

yaml
iec62056:
  baud_rate_max : 4800

Modtaget måleridentifikation men ingen transmission

log
[D][iec62056.component:174]: Måleridentifikation: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Måleren angiver tilstand E, som ikke understøttes. Forsøger tilstand C. Dette vil fungere for målere, der understøtter både tilstand E og C.
[E][iec62056.component:268]: Ingen transmission fra måleren.

Måleridentifikationsstrengen modtages med succes, men der er ingen datatransmission. Derudover viser loggen en besked, der angiver, "Måleren angiver tilstand E."

Måleren fungerer udelukkende i tilstand E, som PiggyMeter ikke understøtter. Derfor forsøger softwaren at skifte måleren til tilstand C, men dette forsøg mislykkes.

Hvis en måler understøtter både tilstand E og C, bør systemet fungere korrekt.