PiggyMeter
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.
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.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D via SML-komponent
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
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.
- DLMS/COSEM Esphome modul https://github.com/viric/esphome-ziv
Materialeliste
Del | Beskrivelse |
---|---|
CPU | Wemos C3 eller S2 Mini https://www.wemos.cc/en/latest/ |
Optisk interface | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2,54mm raster; den plastiske del skal være 8,5 mm høj |
Ringmagnet | ⌀30/⌀15×2mm |
Kasse | 3D-printet kasse https://github.com/aquaticus/piggymeter_case |
Skive | 3D-printet skive https://github.com/aquaticus/piggymeter_case |
Låg | 3D-printet baglåg https://github.com/aquaticus/piggymeter_case |
CPU board
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
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.
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.
Kabinet
Download filer til 3D-printer fra https://github.com/aquaticus/piggymeter_case. Brug V5-versionen til det nyeste design.
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
Samling
Arranger komponenterne inden i kassen i denne rækkefølge:
- Magnet
- Skive
- Optisk interface
- CPU-kort
- Låg
INFO
Se samling på Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
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.
Sensorer
Dette er en liste over sensorer defineret i konfigurationsfilen.
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.