PiggyMeter
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.
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.
- Apator Norax 3
- Apator Norax 1
- Apator Norax 1D via SML-component
- Pafal 12EA5
- Iskra MT372
- Iskra ME162
- Kastrup 382
- Landis+Gyr E350 ZMF110
- ZPA ZE110.D0
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.
- DLMS/COSEM Esphome-module https://github.com/viric/esphome-ziv
Materiaallijst
Onderdeel | Beschrijving |
---|---|
CPU | Wemos C3 of S2 Mini https://www.wemos.cc/en/latest/ |
Optische interface | PiggyMeter PCB https://www.tindie.com/products/32082/ |
2×pin header 1×4 | 2,54 mm raster; plastic deel moet 8,5 mm hoog zijn |
Ringmagneet | ⌀30/⌀15×2mm |
Behuizing | 3D-geprinte behuizing https://github.com/aquaticus/piggymeter_case |
Ring | 3D-geprinte ring https://github.com/aquaticus/piggymeter_case |
Deksel | 3D-geprinte achterdeksel https://github.com/aquaticus/piggymeter_case |
CPU-bord
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
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.
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.
Behuizing
Download bestanden voor de 3D-printer van https://github.com/aquaticus/piggymeter_case. Gebruik versie V5 voor het nieuwste ontwerp.
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
Montage
Plaats de componenten in de behuizing in deze volgorde:
- Magneet
- Ring
- Optische interface
- CPU-bord
- 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.
Sensoren
Dit is een lijst van sensoren die in het configuratiebestand zijn gedefinieerd.
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.