Skip to content

PiggyMeter

PiggyMeter bevestigd aan elektrische
meter

Dit artikel laat zien hoe je een apparaat bouwt om gegevens van een elektrische meter (of een apparaat met een compatibele interface) op afstand uit te lezen.

Het maakt gebruik van algemeen beschikbare componenten, open source software en is compatibel met populaire domotica-software, Home Assistant.

INFO

Een kit voor het assembleren van een functioneel apparaat is te koop op Tindie: PiggyMeter KIT.

Kenmerken

  • Ondersteunt IEC62056-21 gebaseerde protocollen
  • Ondersteunt passief SML-protocol met ESPHome native component
  • Meerdere meters: energie, water, thermisch, en meer
  • Maakt gebruik van open source ESPHome
  • Draadloze communicatie via Wi-Fi
  • Integreert met Home Assistant
  • Optionele webserver
  • Goedkope hardware ESP32-C3 of ESP32-S2
  • Ontwerp van behuizing beschikbaar voor 3D-print

Het ondersteunt meters die compatibel zijn met de IEC62056-21 standaard die werken in de modi A, B, C, D (maar niet E). Voor details zie IEC 62056-21 component.

Let op dat er veel variaties van het protocol zijn. Hoewel de meter dezelfde optische interface kan gebruiken, kan het dataframeformaat anders zijn.

Daarnaast ondersteunt het meters die het SML (Smart Message Language) protocol gebruiken met behulp van ESPHome SML component.

WARNING

DLMS, M-Bus en ANSI C12.18/19 standaarden worden niet ondersteund door de software.

Hoe te controleren of de meter wordt ondersteund?

De term IEC 62056-21 wordt gebruikt voor meerdere protocollen (met dezelfde hardwarelaag maar verschillende data-encodering). Het apparaat ondersteunt meters die ASCII-gecodeerde gegevens leveren, iets zoals dit:

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)

De meter moet compatibel zijn met Internationale Standaard IEC 62056-21:2002.

Kenmerkende metalen ring en optische interface in het
midden.

Voor het SML-protocol, zoek naar het SML-logo op de meter of controleer de handleiding. De ESPHome-component ondersteunt alleen passieve modus, het stuurt geen verzoeken naar de meter. In die modus stuurt de meter elke paar seconden gegevens.

Meters waarvan bekend is dat ze werken met PiggyMeter

De lijst is samengesteld op basis van gebruikersrapporten. Er is geen garantie dat deze accuraat is.

INFO

Voel je vrij om een e-mail te sturen naar info@aquaticus.info als je een meter kent die werkt met PiggyMeter maar niet hierboven vermeld staat.

Alternatieve software

PiggyMeter-hardware kan werken met veel verschillende meters die gebruikmaken van een optische interface. Echter, de software ondersteunt momenteel slechts één standaard, wat de reeks ondersteunde meters praktisch beperkt.

Je kunt proberen alternatieve software te gebruiken die mogelijk ondersteuning toevoegt voor verschillende meters. Het is belangrijk op te merken dat er geen garantie is dat het naadloos zal functioneren met PiggyMeter. Voor ondersteuning kun je contact opnemen met de oorspronkelijke auteur.

Materiaallijst

OnderdeelBeschrijving
CPUWemos C3 of S2 Mini https://www.wemos.cc/en/latest/
Optische interfacePiggyMeter PCB https://www.tindie.com/products/32082/
2×pin header 1×42,54 mm raster; plastic deel moet 8,5 mm hoog zijn
Ringmagneet⌀30/⌀15×2mm
Behuizing3D-geprinte behuizing https://github.com/aquaticus/piggymeter_case
Ring3D-geprinte ring https://github.com/aquaticus/piggymeter_case
Deksel3D-geprinte achterdeksel https://github.com/aquaticus/piggymeter_case

CPU-bord

CPU

Je hebt een bord nodig met een Espressif-chip geïnstalleerd en compatibel Wemos/Lolin pinout. De belangrijkste factor is de locatie van 4 pinnen: GND, VCC, TX, en RX.

De grootte van de PCB is ook cruciaal. De 3D-geprinte behuizing past alleen op borden (of hun klonen) die hieronder zijn vermeld:

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

In theorie kun je elk ander CPU-bord gebruiken met een compatibele pinout, zoals de ESP32 en ESP8266 D1 mini. Maar in dat geval moet je je eigen behuizing ontwerpen en de configuratiebestanden een beetje aanpassen (bordtype en seriële poortpinnen).

Optische interface

Optische interface

Een meter maakt gebruik van een optische interface die compatibel is met de IEC62056-21 standaard, en communiceert met een sonde via een infrarooddiode en een fototransistor.

De interface is verbonden met een van de seriële poorten op het CPU-bord. Natuurlijk heb je ook VCC en GND nodig.

Optische interface en CPU
bord

Soldeer 2 pinheaders. Je moet een pinheader van 8,5 mm hoogte gebruiken. Het ontwerp van de behuizing is afgestemd op deze hoogte, wat zorgt voor een goede pasvorm. Als de hoogte deze afmeting overschrijdt, kan het sluiten van het deksel problemen opleveren.

INFO

Je kunt een geassembleerde interface kopen op Tindie. Koop op Tindie

Behuizing

Download bestanden voor de 3D-printer van https://github.com/aquaticus/piggymeter_case. Gebruik versie V5 voor het nieuwste ontwerp.

Behuizing

De behuizing bestaat uit drie componenten:

  • de hoofdbehuizing,
  • een ring,
  • en een deksel.

Er zijn drie afzonderlijke STL bestanden beschikbaar voor elk onderdeel, of als alternatief, een enkel 3fm bestand dat alle drie de elementen bevat.

De behuizing voldoet aan de eisen van de IEC62056-21 standaard Optische Sonde>.

INFO

De behuizing heeft een kleine sluiting. Om deze te sluiten of te openen, moet je enige kracht gebruiken.

Aanbevolen 3D-printinstellingen

  • Materiaal: PLA
  • Laag: 0,2 mm
  • Geen ondersteuning

3d print

Montage

Montage

Plaats de componenten in de behuizing in deze volgorde:

  1. Magneet
  2. Ring
  3. Optische interface
  4. CPU-bord
  5. Deksel

INFO

Bekijk de montage op Youtube https://youtu.be/fM2LyJJWQHA?si=dyY4r7zMSMfbwQtm

Programmeren voor IEC62056-21 meters

Begin met het installeren van ESPHome.

Kies op basis van je CPU-bord het juiste configuratiebestand. Pas daarnaast handmatig bepaalde parameters aan, zoals het WiFi-wachtwoord.

Verkrijg configuratiebestanden

Kloon de git-repository met configuratiebestanden:

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

Maak het secrets.yaml bestand

Maak een secrets.yaml bestand aan in de map waar de configuratiebestanden zich bevinden. Dit bestand bevat de naam van het WiFi-netwerk en het bijbehorende wachtwoord.

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

Wijzig projectconfiguratie

De configuratie is vooraf ingesteld met standaardgegevens voor een elektriciteitsmeter.

Voel je vrij om de lijst aan te passen, vooral als je meter verschilt van het type elektriciteitsmeter. Raadpleeg de IEC 62056-21 component voor meer informatie.

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

Bouw en flash de firmware

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

Het bovenstaande commando flasht de firmware en toont de monitoruitvoer. Standaard leest de interface elke minuut gegevens van een meter.

TIP

Voor ESP32-S2 bord moet je de BOOT-knop indrukken en vervolgens de RESET-knop op de PCB om de programmeermodus in te schakelen. Bovendien kun je na het flashen een foutmelding zien -- negeer deze gewoon.

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)

Programmeren voor SML meters

De eerste stappen zijn identiek aan die voor IEC62056-21 meters.

Na het klonen van de repository en het aanmaken van het secrets.yaml bestand, gebruik configuratiebestanden voor SML meters.

bash
esphome run piggymeter-s2-sml.yaml

Hoogstwaarschijnlijk moet je het configuratiebestand aanpassen om overeen te komen met de gegevenspunten die door de meter worden verzonden. Het is ook de moeite waard om de baudrate en databits van de seriële poort te verifiëren.

Home Assistant

Het apparaat zou automatisch door Home Assistant gedetecteerd moeten worden. Zo niet, dan kun je het handmatig toevoegen door op Integratie toevoegen te klikken en de ESPHome integratie te selecteren.

PiggyMeter stelt drie groepen items bloot:

Uitlees Trigger

Deze trigger dwingt PiggyMeter om gegevens van een meter buiten het schema om uit te lezen.

Meter Verbinding Status

De status Verbonden geeft aan dat de interface gegevens uitwisselt met de meter.

Verbindingsstatus

Sensoren

Dit is een lijst van sensoren die in het configuratiebestand zijn gedefinieerd.

Sensoren

Standalone modus

PiggyMeter kan onafhankelijk van Home Assistant werken en biedt de mogelijkheid om een webserver te activeren. Deze server toont gegevensuitlezingen direct in een webbrowser en biedt een eenvoudige REST API.

Om de webserver te activeren, voeg je de volgende regels toe aan het configuratiebestand:

yaml
web_server:
  port: 80

Meer informatie over de webserver is te vinden in de ESPHome documentatie.

Wijzigingen

Standaard haalt het apparaat elke minuut gegevens op en wordt de interne LED verlicht tijdens de transmissie.

Slechts een beperkt aantal OBIS-codes zijn gedefinieerd in het configuratie yaml-bestand. Het wordt sterk aanbevolen om de lijst met sensoren aan te passen aan de meter.

Hoewel OBIS-codes gestandaardiseerd zijn, kunnen meters verschillende aantallen codes verzenden. Om de ondersteunde codes voor jouw meter te achterhalen, schakel je DEBUG logging in voor de IEC62056-21 component en analyseer je de loguitvoer.

Diagnostiek en Problemen IEC62056-21

Dit gedeelte is alleen voor IEC62056-21 meters (niet SML).

Na het flashen van de firmware zal het apparaat proberen gegevens van een meter uit te lezen na ongeveer 15 seconden. Als de transmissie mislukt, zal het apparaat twee keer opnieuw proberen elke 15 seconden.

Je kunt deze parameters aanpassen door de juiste tokens te configureren. Raadpleeg de IEC62056-21 component documentatie voor meer details.

Het is raadzaam om het standaard logniveau van DEBUG naar INFO te schakelen zodra het apparaat correct werkt.

Hieronder staan veelvoorkomende problemen en hun respectieve oplossingen.

TIP

Zorg ervoor dat de sonde stevig aan de meter is bevestigd, waarbij de pijl op de sonde naar boven wijst.

Geen transmissie van meter

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

Dit kan aangeven:

  • Meestal is de interface niet aangesloten op een meter.
  • De interface is niet goed uitgelijnd met de optische interface van een meter.
  • De meter is niet compatibel.

Zorg ervoor dat de optische interface parallel aan het vooroppervlak van de behuizing is gepositioneerd. Als het apparaat werkt wanneer het aan de meter is bevestigd zonder de behuizing, maar niet werkt nadat het in de behuizing is geplaatst, kan dit het probleem zijn. In dat geval kun je overwegen om de twee gaten in de behuizing te vergroten.

Niet alle sensoren hebben gegevens ontvangen

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.

Dit kan twee problemen aangeven:

  • De meter ondersteunt de OBIS-code die je hebt geconfigureerd in het yaml bestand niet. Verwijder eenvoudig de sensor met een specifieke OBIS-code uit de configuratie.
  • Er kan een typefout of onjuiste definitie van de OBIS-code voor de sensor in het configuratiebestand zijn. Controleer de code dubbel.

De meter zendt automatisch gegevens uit, maar het apparaat ontvangt niets

Dit geeft aan dat de meter modus D van IEC62056-21 ondersteunt. In deze modus zendt de meter autonoom gegevens uit elke paar seconden zonder een specifieke aanvraag. Zorg ervoor dat de seriële poort is geconfigureerd om overeen te komen met het transmissieformaat van de meter, meestal ingesteld op 9600 7E1 of 2400 7E1 in de meeste gevallen.

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

Bovendien moet modus D handmatig worden geactiveerd door mode_d=True in de platformconfiguratie in te stellen.

yaml
# Schakel modus D in
iec62056:
  mode_d: True

Checksum fouten

log
[E][iec62056.component:504]: BCC-verificatie mislukt. Verwacht 0x6b, kreeg 0x14

Deze fout wijst op transmissieproblemen.

Meestal is de transmissiesnelheid te hoog. Het verlagen van de maximale baudrate zou moeten helpen.

yaml
iec62056:
  baud_rate_max : 4800

Meteridentificatie ontvangen maar geen transmissie

log
[D][iec62056.component:174]: Meteridentificatie: '/XXX6\2YYYYYYY'
[D][iec62056.component:252]: De meter geeft modus E aan, wat niet wordt ondersteund. Poging tot modus C. Dit zal werken voor meters die zowel modus E als C ondersteunen.
[E][iec62056.component:268]: Geen transmissie van meter.

De meteridentificatiestring wordt succesvol ontvangen, maar er is geen datatransmissie. Bovendien geeft het logboek een bericht weer met de mededeling: "De meter geeft modus E aan."

De meter werkt uitsluitend in modus E, wat PiggyMeter niet ondersteunt. Daarom probeert de software de meter naar modus C te schakelen, maar deze poging mislukt.

Als een meter zowel modus E als C ondersteunt, zou het systeem correct moeten functioneren.