114 lines
4.1 KiB
Markdown
114 lines
4.1 KiB
Markdown
# 🔌 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.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
|
||
|
||
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 💡
|