PiggyMeter
Denna artikel visar hur du bygger en enhet för att fjärravläsa data från en elmätare (eller någon enhet med ett kompatibelt gränssnitt).
Den använder allmänt tillgängliga komponenter, öppen källkod och är kompatibel med populär hemautomationsprogramvara, Home Assistant.
INFO
Ett kit för att montera en fungerande enhet finns att köpa på Tindie: PiggyMeter KIT.
Funktioner
- Stöder IEC62056-21-baserade protokoll
- Stöder passivt SML-protokoll med ESPHome inbyggd komponent
- Flera mätare: energi, vatten, värme och mer
- Använder öppen källkod ESPHome
- Trådlös kommunikation via Wi-Fi
- Integreras med Home Assistant
- Valfri webbserver
- Billig hårdvara ESP32-C3 eller ESP32-S2
- Konstruktion för 3D-utskrift tillgänglig
Den stöder mätare som är kompatibla med IEC62056-21-standarden som fungerar i lägen A, B, C, D (men inte E). För detaljer se IEC 62056-21 komponent.
Observera att det finns många variationer av protokollet. Även om mätaren kan använda samma optiska gränssnitt kan dataformatet vara annorlunda.
Dessutom stöder den mätare som använder SML (Smart Message Language) protokoll med ESPHome SML komponent.
WARNING
DLMS, M-Bus och ANSI C12.18/19-standarder stöds inte av programvaran.
Hur kontrollerar man om mätaren stöds?
IEC 62056-21-termen används för flera protokoll (med samma hårdvarulager men olika dataenkodning). Enheten stöder mätare som tillhandahåller ASCII-kodad data, något i stil med detta:
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ätaren måste vara kompatibel med Internationell Standard IEC 62056-21:2002.
För SML-protokollet, leta efter SML-logotypen på mätaren eller kontrollera manualen. ESPHome-komponenten stöder endast passivt läge, den skickar inga förfrågningar till mätaren. I det läget skickar mätaren data var några sekunder.
Mätare rapporterade att fungera med PiggyMeter
Listan är skapad baserat på användarrapporter. Ingen garanti för att den är korrekt.
- 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
Känn dig fri att skicka ett e-postmeddelande till info@aquaticus.info om du känner till en mätare som fungerar med PiggyMeter men inte är listad ovan.
Alternativ programvara
PiggyMeter-hårdvara kan fungera med många olika mätare som använder optiskt gränssnitt. Dock stöder programvaran för närvarande endast en standard, vilket praktiskt begränsar antalet stödda mätare.
Du kan försöka använda alternativ programvara som kan lägga till stöd för olika mätare. Det är viktigt att notera att det inte finns någon garanti för att det kommer att fungera sömlöst med PiggyMeter. För support, vänligen kontakta den ursprungliga författaren.
- DLMS/COSEM Esphome-modul https://github.com/viric/esphome-ziv
Materiallista
Del | Beskrivning |
---|---|
CPU | Wemos C3 eller S2 Mini https://www.wemos.cc/en/latest/ |
Optiskt gränssnitt | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×stiftlist 1×4 | 2,54 mm raster; plastdelen måste vara 8,5 mm hög |
Ringmagnet | ⌀30/⌀15×2mm |
Hölje | 3D-utskrivet hölje https://github.com/aquaticus/piggymeter_case |
Bricka | 3D-utskriven bricka https://github.com/aquaticus/piggymeter_case |
Lock | 3D-utskrivet baklock https://github.com/aquaticus/piggymeter_case |
CPU-kort
Du behöver ett kort med Espressif-chip installerat och kompatibelt Wemos/Lolin pinout. Den avgörande faktorn är placeringen av 4 stift: GND
, VCC
, TX
och RX
.
Storleken på PCB är också kritisk. Det 3D-utskrivna fodralet passar endast kort (eller deras kloner) som listas nedan:
- Lolin/Wemos S2 mini
- Lolin/Wemos C3 mini
I teorin kan du använda vilket annat CPU-kort som helst med kompatibel pinout, noterbart ESP32 och ESP8266 D1 mini. Men i så fall måste du designa ditt eget fodral och ändra lite i konfigurationsfilerna (korttyp och seriella portstift).
Optiskt gränssnitt
En mätare använder ett optiskt gränssnitt kompatibelt med IEC62056-21 standard, som kommunicerar med en sond via en infraröd diod och en fototransistor.
Gränssnittet är anslutet till en av de seriella portarna på CPU-kortet. Självklart behöver du också VCC och GND.
Löd 2 stifthuvuden. Du måste använda stifthuvud med 8,5 mm höjd. Designen av fodralet rymmer denna höjd, vilket säkerställer en korrekt passform. Om höjden överstiger denna dimension kan det vara svårt att stänga locket.
Fodral
Ladda ner filer för 3D-skrivare från https://github.com/aquaticus/piggymeter_case. Använd V5-versionen för den senaste designen.
Fodralet består av tre komponenter:
- huvudfodralet,
- en bricka,
- och ett lock.
Det finns tre distinkta STL-filer tillgängliga för varje komponent, eller alternativt en enda 3fm-fil som innehåller alla tre elementen.
Höljet uppfyller kraven i IEC62056-21 standarden Optisk Prober>.
INFO
Höljet har en liten spärr. För att stänga eller öppna det behöver du använda lite kraft.
Rekommenderade 3D-utskriftsinställningar
- Material: PLA
- Lager: 0,2 mm
- Ingen stödstruktur
Montering
Ordna komponenterna i höljet i denna ordning:
- Magnet
- Bricka
- Optiskt gränssnitt
- CPU-kort
- Lock
INFO
Se montering på Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm
Programmering för IEC62056-21 mätare
Börja med att installera ESPHome.
Baserat på ditt CPU-kort, välj lämplig konfigurationsfil. Gör dessutom manuella justeringar av vissa parametrar, såsom WiFi-lösenordet.
Hämta konfigurationsfiler
Klona git-repositoriet med konfigurationsfiler:
bash
git clone https://github.com/aquaticus/piggymeter_esphome_yaml
Skapa secrets.yaml-fil
Skapa en secrets.yaml
fil i katalogen där konfigurationsfilerna finns. Denna fil kommer att innehålla WiFi-nätverkets namn och dess motsvarande lösenord.
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
Ändra projektkonfiguration
Konfigurationen är förinställd med standarddatapunkter för en elmätare.
Känn dig fri att justera listan, särskilt om din mätare skiljer sig från elmätartypen. Se IEC 62056-21-komponenten för mer 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
Bygg och flasha firmware
bash
esphome run piggymeter-s2-iec62056-21.yaml
Kommandot ovan flashar firmware och visar monitorutgång. Som standard läser gränssnittet data från en mätare varje minut.
TIP
För ESP32-S2-kort måste du trycka på BOOT-knappen och sedan RESET-knappen på PCB för att gå in i programmeringsläge. Dessutom kan du se ett felmeddelande efter flashning -- ignorera det bara.
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 för SML-mätare
De första stegen är identiska med de för IEC62056-21 mätare.
Efter att ha klonat repositoriet och skapat secrets.yaml
filen, använd konfigurationsfiler för SML-mätare.
bash
esphome run piggymeter-s2-sml.yaml
Det är troligt att du behöver justera konfigurationsfilen för att matcha de datapunkter som överförs av mätaren. Det är också värt att verifiera baudhastigheten och databitarna för den seriella porten.
Home Assistant
Enheten bör automatiskt upptäckas av Home Assistant. Om inte, kan du lägga till den manuellt genom att klicka på Lägg till integration och välja ESPHome-integrationen.
PiggyMeter exponerar tre grupper av objekt:
Avläsningstrigger
Denna trigger tvingar PiggyMeter att läsa data från en mätare utanför schemat.
Mätaranslutningsstatus
Ansluten status indikerar att gränssnittet utbyter data med mätaren.
Sensorer
Detta är en lista över sensorer definierade i konfigurationsfilen.
Självständigt läge
PiggyMeter kan fungera oberoende av Home Assistant och erbjuder möjligheten att aktivera en webbserver. Denna server visar dataavläsningar direkt i en webbläsare och erbjuder ett enkelt REST API.
För att aktivera webbservern, inkludera följande rader i konfigurationsfilen:
yaml
web_server:
port: 80
Mer information om webbservern finns i ESPHome-dokumentationen.
Modifieringar
Som standard hämtar enheten data varje minut, och den interna LED-lampan lyser under överföringen.
Endast ett begränsat antal OBIS-koder är definierade i konfigurations-yaml-filen. Det rekommenderas starkt att ändra listan över sensorer för att matcha en mätare.
Även om OBIS-koder är standardiserade kan mätare överföra olika antal koder. För att fastställa de stödda koderna för din mätare, aktivera DEBUG
-loggning för IEC62056-21-komponenten och analysera loggutdata.
Diagnostik och problem IEC62056-21
Detta avsnitt är endast för IEC62056-21-mätare (inte SML).
Efter att ha flashat firmware kommer enheten att försöka läsa data från en mätare efter cirka 15 sekunder. Om överföringen misslyckas kommer den att försöka igen två gånger var 15:e sekund.
Du kan justera dessa parametrar genom att konfigurera lämpliga tokens. Konsultera IEC62056-21-komponenten dokumentation för mer information.
Det är tillrådligt att byta standardloggnivån från DEBUG
till INFO
när enheten har bekräftats fungera korrekt.
Nedan följer vanliga problem och deras respektive lösningar.
TIP
Se till att sonden är ordentligt fäst vid mätaren, med pilen på sonden riktad uppåt.
Ingen överföring från mätaren
log
[E][iec62056.component:268]: No transmission from meter.
Detta kan indikera:
- Vanligast är att gränssnittet inte är anslutet till en mätare.
- Gränssnittet är inte korrekt justerat med den optiska gränssnittet på en mätare.
- Mätaren är inte kompatibel.
Se till att det optiska gränssnittet är placerat parallellt med framsidan av höljet. Om enheten fungerar när den är ansluten till mätaren utan höljet, men inte fungerar efter att ha satts in i höljet, kan detta vara problemet. I ett sådant fall kan du också överväga att förstora de två hålen i höljet.
Inte alla sensorer mottog 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.
Detta kan indikera två problem:
- Mätaren stöder inte OBIS-koden du konfigurerade i yaml filen. Ta helt enkelt bort sensorn med specifik OBIS-kod från konfigurationen.
- Det kan finnas ett skrivfel eller felaktig definition av OBIS-koden för sensorn i konfigurationsfilen. Dubbelkolla koden.
Mätaren sänder data automatiskt men enheten tar inte emot något
Detta indikerar att mätaren stöder läge D av IEC62056-21. I detta läge sänder mätaren autonomt data var några sekunder utan att kräva en specifik begäran. Se till att den seriella porten är konfigurerad för att stämma överens med mätarens överföringsformat, vanligtvis inställd på 9600 7E1 eller 2400 7E1 i de flesta fall.
yaml
# 9600bps for mode D
uart:
rx_pin: GPIO21
tx_pin: GPIO22
baud_rate: 9600
data_bits: 7
parity: EVEN
stop_bits: 1
Dessutom måste läge D aktiveras manuellt genom att ställa in mode_d=True
i plattformskonfigurationen.
yaml
# Aktivera läge D
iec62056:
mode_d: True
Kontrollsummefel
log
[E][iec62056.component:504]: BCC-verifiering misslyckades. Förväntade 0x6b, fick 0x14
Detta fel tyder på överföringsproblem.
Vanligtvis är överföringshastigheten för hög. Att sänka den maximala baudhastigheten bör hjälpa.
yaml
iec62056:
baud_rate_max : 4800
Mottagen mätaridentifiering men ingen överföring
log
[D][iec62056.component:174]: Mätaridentifiering: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: Mätaren indikerar läge E, vilket inte stöds. Försöker med läge C. Detta kommer att fungera för mätare som stöder både läge E och C.
[E][iec62056.component:268]: Ingen överföring från mätaren.
Mätaridentifieringssträngen tas emot framgångsrikt, men det finns ingen dataöverföring. Dessutom visar loggen ett meddelande som säger, "Mätaren indikerar läge E."
Mätaren fungerar uteslutande i läge E, vilket PiggyMeter inte stöder. Därför försöker programvaran att växla mätaren till läge C, men detta försök misslyckas.
Om en mätare stöder både läge E och C bör systemet fungera korrekt.