4.1 KiB
🔌 Echelon 83331 MEP Sniffer med ESP32
Et projekt til at aflæse rådata fra MEP-porten på Echelon 83331 elmåleren ved hjælp af en ESP32. Data læses i RAW-format for senere parsing og dekryptering med lokal krypteringsnøgle.
🎯 Formål
- Læs måledata direkte fra elmålerens MEP-port.
- Undgå afhængigheder som SaveEye, cloud eller MQTT.
- Gem og parse data 100 % lokalt.
- Send senere data til Home Assistant via REST API.
🔌 Hardwaretilslutning
📟 Komponenter
- ESP32 DevKit (WROOM anbefales)
- RJ12-hunstik eller MEP-adapter
- Evt. logikniveaukonverter (hvis MEP-port er RS-232 og ikke TTL)
- Jumper wires
⚙️ MEP RJ12 Pinout (standard):
| Pin | Signal | ESP32 GPIO eksempel |
|---|---|---|
| 1 | GND | GND |
| 2 | VCC (3.3/5V) | 3.3V / 5V (tjek målerens spænding) |
| 3 | TX fra måler | GPIO16 (RX) |
| 4 | RX til måler | GPIO17 (TX) |
| 5–6 | Ikke i brug | – |
⚠️ Dobbelttjek spænding og signaltype – hvis RS-232 bruges, skal du sætte en MAX3232 imellem ESP32 og måler.
📊 Forventet dataoutput
Når dekodningen er aktiv og korrekt krypteringsnøgle er implementeret, forventes følgende output fra måleren:
| Felt | Enhed | Beskrivelse |
|---|---|---|
meterType |
String | Målerens type (fx "MEP meter") |
meterSerialNumber |
String | Målerens serienummer |
wifiRssi |
dBm | Signalstyrke (kun relevant for WiFi-modul) |
activeActualConsumption |
Watt (W) | Øjeblikkeligt aktivt forbrug |
activeActualProduction |
Watt (W) | Øjeblikkelig produktion (fx solceller) |
activeTotalConsumption |
Wh/kWh | Akkumuleret forbrug siden opsætning |
activeTotalProduction |
Wh/kWh | Akkumuleret produktion |
reactiveActualConsumption |
VAr | Øjeblikkeligt reaktivt forbrug |
reactiveActualProduction |
VAr | Øjeblikkelig reaktiv produktion |
rmsVoltage (L1-L3) |
Volt (V) | RMS spænding per fase |
rmsCurrent (L1-L3) |
mA / A | RMS strømstyrke per fase |
powerFactor |
% | Effektfaktor (fx 98 = 0.98 cos(φ)) |
Bemærk: Nogle værdier er afhængige af målerens firmware og opsætning
🔍 ESP32 Sniffer-kode (Arduino C++)
Brug denne kode til at logge rå data fra måleren i HEX, så det kan analyseres:
#include <HardwareSerial.h>
HardwareSerial MEP(2); // UART2
void setup() {
Serial.begin(115200);
MEP.begin(9600, SERIAL_8N1, 16, 17); // RX=GPIO16, TX=GPIO17
Serial.println("🔍 Starter MEP-sniffer...");
}
void loop() {
while (MEP.available()) {
byte b = MEP.read();
if (b < 0x10) Serial.print("0");
Serial.print(b, HEX);
Serial.print(" ");
}
}
👉 Når ESP32 er tilsluttet og måleren sender data, vises byte for byte i Serial Monitor (115200 baud).
🔐 Krypteringsnøgle
Projektet vil senere anvende elmålerens private krypteringsnøgle (hvis krævet) til at:
- Autentificere sig mod måleren
- Dekryptere binære data til forståelige værdier
🔒 Sikkerhedstiltag
- Nøglen bliver hardcoded i firmware.
- Ændringer kræver OTA eller fysisk opdatering – ingen åben adgang i web eller serial interface.
- Brug af nøglen håndteres i separat kodeblok ved parsing.
🧪 Næste trin
- Brug denne sniffer til at logge et datasæt fra måleren.
- Sammenlign værdier med dit kendte forbrug/spænding for at forstå datastrukturen.
- Vi implementerer parsing + kryptering, og REST-opdatering til Home Assistant.
📬 Kontakt
Udviklet og vedligeholdt af Thomas Emil.
For tekniske spørgsmål, kontakt via GitHub Issues eller ESP32-antenne-tanker 💡