# 🔌 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: ```cpp #include 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 1. Brug denne sniffer til at logge et datasæt fra måleren. 2. Sammenlign værdier med dit kendte forbrug/spænding for at forstå datastrukturen. 3. Vi implementerer parsing + kryptering, og REST-opdatering til Home Assistant. --- ## 📬 Kontakt > Udviklet og vedligeholdt af [Thomas Emil](https://www.linkedin.com/in/thomas-emil-b3497995/). > For tekniske spørgsmål, kontakt via GitHub Issues eller ESP32-antenne-tanker 💡