SlimmeLezer P1 olvasó összekötése ADA P1 Bridge-el (>1.5.4v) – útmutató
Ez a leírás azoknak szól, akiknek már van egy működő SlimmeLezer (ESPHome‑os P1/DSMR olvasójuk), és szeretnék az ADA P1 Bridge‑et úgy használni, hogy az ne a saját P1 portjáról, hanem a SlimmeLezer által hálózaton publikált nyers telegramból dolgozzon.

A cél egyszerű:
-
SlimmeLezer olvas a villanyóráról.
-
HTTP‑n kiadja a nyers DSMR telegramot.
-
ADA P1 Bridge (min 1.5.5 verzió) ezt az URL‑t pollolja, és ugyanúgy feldolgozza (JSON, rules, MQTT), mintha a saját P1‑jén jött volna.
Ha ezt végigcsinálod, kapsz egy stabil, „P1‑port nélküli” ADA Bridge‑et, ami tök jól működik akkor is, ha a mérő mellett csak egy SlimmeLezer fér el.
1) Mire lesz szükséged?
Hardver / hálózat:
-
Egy már működő SlimmeLezer ESPHome firmware‑rel (tipikusan ESP8266 D1 Mini).
-
Egy ADA P1 Bridge, beállítva Wi‑Fi‑re.
-
Ugyanazon a helyi hálón legyenek (ugyanaz a router / Wi‑Fi, ne vendégháló, ne külön VLAN).
Szoftver:
-
ESPHome (Home Assistant ESPHome addon vagy standalone).
-
A SlimmeLezer YAML konfigurációja.
2) SlimmeLezer teljes példa YAML (copy‑paste alap)
Ha még nincs SlimmeLezered, vagy a mostanit szeretnéd egységesíteni, ez egy jól bevált teljes config. Ezt tedd be az ESPHome‑ba egy új eszközhöz, majd a saját értékeidhez igazítsd (PIN, board, szenzorok).
Fontos: a
secrets.yamlfájlra is szükség lesz (az alján mutatom).
substitutions:
device_name: slimmelezer
device_description: "DIY P1 module to read your smart meter"
esphome:
name: ${device_name}
comment: "${device_description}"
name_add_mac_suffix: false
project:
name: zuidwijk.slimmelezer
version: "1.0"
on_boot:
then:
- if:
condition:
lambda: return id(has_key);
then:
- lambda: |-
std::string key(id(stored_decryption_key), 32);
id(dsmr_instance).set_decryption_key(key);
else:
- logger.log:
level: info
format: "Not using decryption key. If you need to set a key use Home Assistant service 'ESPHome: ${device_name}_set_dsmr_key'"
esp8266:
board: d1_mini
restore_from_flash: true
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: ${device_name}
ap_timeout: 15s
captive_portal:
logger:
baud_rate: 0
api:
services:
- service: set_dsmr_key
variables:
private_key: string
then:
- logger.log:
format: "Setting private key %s. Set to empty string to disable"
args: [private_key.c_str()]
- globals.set:
id: has_key
value: !lambda "return private_key.length() == 32;"
- lambda: |-
if (private_key.length() == 32)
private_key.copy(id(stored_decryption_key), 32);
id(dsmr_instance).set_decryption_key(private_key);
ota:
- platform: esphome
web_server:
port: 80
version: 3
uart:
id: p1_uart
baud_rate: 115200
rx_pin: D7
rx_buffer_size: 4000
globals:
- id: has_key
type: bool
restore_value: yes
initial_value: "false"
- id: stored_decryption_key
type: char[32]
restore_value: yes
dsmr:
id: dsmr_instance
uart_id: p1_uart
max_telegram_length: 4000
sensor:
- platform: dsmr
energy_delivered_lux:
name: "Energy Consumed Luxembourg"
state_class: total_increasing
energy_delivered_tariff1:
name: "Energy Consumed Tariff 1"
state_class: total_increasing
energy_delivered_tariff2:
name: "Energy Consumed Tariff 2"
state_class: total_increasing
energy_returned_lux:
name: "Energy Produced Luxembourg"
state_class: total_increasing
energy_returned_tariff1:
name: "Energy Produced Tariff 1"
state_class: total_increasing
energy_returned_tariff2:
name: "Energy Produced Tariff 2"
state_class: total_increasing
power_delivered:
name: "Power Consumed"
accuracy_decimals: 3
power_returned:
name: "Power Produced"
accuracy_decimals: 3
electricity_failures:
name: "Electricity Failures"
icon: mdi:alert
electricity_long_failures:
name: "Long Electricity Failures"
icon: mdi:alert
voltage_l1:
name: "Voltage Phase 1"
voltage_l2:
name: "Voltage Phase 2"
voltage_l3:
name: "Voltage Phase 3"
current_l1:
name: "Current Phase 1"
current_l2:
name: "Current Phase 2"
current_l3:
name: "Current Phase 3"
power_delivered_l1:
name: "Power Consumed Phase 1"
accuracy_decimals: 3
power_delivered_l2:
name: "Power Consumed Phase 2"
accuracy_decimals: 3
power_delivered_l3:
name: "Power Consumed Phase 3"
accuracy_decimals: 3
power_returned_l1:
name: "Power Produced Phase 1"
accuracy_decimals: 3
power_returned_l2:
name: "Power Produced Phase 2"
accuracy_decimals: 3
power_returned_l3:
name: "Power Produced Phase 3"
accuracy_decimals: 3
gas_delivered:
name: "Gas Consumed"
state_class: total_increasing
gas_delivered_be:
name: "Gas Consumed Belgium"
state_class: total_increasing
- platform: uptime
name: "SlimmeLezer Uptime"
- platform: wifi_signal
name: "SlimmeLezer Wi‑Fi Signal"
update_interval: 60s
text_sensor:
- platform: dsmr
identification:
name: "DSMR Identification"
p1_version:
name: "DSMR Version"
p1_version_be:
name: "DSMR Version Belgium"
telegram:
id: telegram_raw
name: "Raw DSMR Telegram"
- platform: wifi_info
ip_address:
name: "SlimmeLezer IP Address"
ssid:
name: "SlimmeLezer Wi‑Fi SSID"
bssid:
name: "SlimmeLezer Wi‑Fi BSSID"
- platform: version
name: "ESPHome Version"
hide_timestamp: true
2/A) secrets.yaml
A fenti config akkor fog fordulni, ha van mellette egy secrets.yaml. Minimum ez kell bele:
wifi_ssid: "A_TE_WIFI_HALOZATOD"
wifi_password: "A_TE_WIFI_JELSZAVAD"
Ha a P1 portod titkosított (Belgium, Luxemburg, néhány holland mérő), akkor a kulcsot nem ide írod, hanem Home Assistantben a szolgáltatással adod meg:
-
ESPHome: slimmelezer_set_dsmr_key -
private_key: "32 karakteres kulcs"
3) A nyers telegram végpont (URL) ellenőrzése
Miután a SlimmeLezer online, a web_server automatikusan kirakja a text_sensorok értékeit.
Fontos kompatibilitási megjegyzés: az ADA P1 Bridge nem csak a „sima” szöveges DSMR telegramot tudja megenni, hanem azt is, ha a végpont JSON‑ba csomagolva adja vissza, és abban egy value kulcs alatt van a telegram (pl. {"value":"/…!XXXX"}). Ilyenkor a Bridge automatikusan a value mező tartalmát bontja ki és dolgozza fel. SlimmeLezer esetén ez általában plain text, de ha valami proxy / HA‑s szenzor miatt mégis JSON jönne, ezzel sem lesz gond.
A telegram_raw szenzor URL‑je így néz ki:
http://<slimmelezer_ip>/text_sensor/raw_dsmr_telegram
Példa:
http://192.168.31.149/text_sensor/raw_dsmr_telegram
Mit kell látnod? Egy komplett DSMR telegramot, ami:
-
/jellel kezdődik -
több OBIS sort tartalmaz (
1-0:1.8.0(...),1-0:32.7.0(...)stb.) -
!XXXXrésszel végződik (CRC)
Ha ezt látod, akkor jöhet a Bridge.
4) ADA P1 Bridge átkapcsolása URL‑es telegram módra
Az ADA P1 Bridge firmware‑ben van erre egy direkt végpont.
4/A) URL mentése és tesztelése egyben
POST kérés a Bridge felé:
curl -X POST "http://okosvillanyora.local:8989/tg/test" \
-H "Content-Type: application/json" \
-d '{"url":"http://192.168.31.149/text_sensor/raw_dsmr_telegram"}'
Várható válaszok:
-
{"ok":true,...}→ az URL mentve, a Bridge átállt URL módra. -
{"ok":false,"msg":"..."}→ hibát talált (lásd hibakeresés lent).
A Bridge elmenti az URL‑t a belső tárhelyre (LittleFS‑be), szóval újraindítás után is így indul.
4/B) Státusz ellenőrzése
GET http://okosvillanyora.local:8989/tg/status
Itt látod többek közt:
-
using_url: true/false -
url_set: true/false -
url_masked(maszkolva, biztonságosan)
5) Innentől hogyan működik a rendszer?
-
A SlimmeLezer olvassa a villanyórát P1‑en.
-
A Bridge 10 másodpercenként lekéri a telegramot a megadott URL‑ről.
-
A Bridge ugyanúgy feldolgozza, mintha direktben soros P1‑ről jött volna:
-
JSON generálás
-
szabályok futtatása (rules)
-
MQTT publikálás
-
webes API‑k
-
6) Hibakeresés (ha valami nem megy elsőre)
1) ADA azt írja: „nem tűnik telegramnak”
-
Nyisd meg böngészőben a SlimmeLezer URL‑t.
-
Ha nem komplett telegram jön, akkor nem a
telegram_rawtext_sensort hívod.
2) Titkosított telegram (BE/LU)
-
Add meg a DSMR kulcsot a HA service‑szel (
set_dsmr_key). -
Kulcs nélkül a telegram olvashatatlan lesz, az ADA eldobja.
3) Csonka telegram / néha jó, néha rossz
-
A SlimmeLezerben legyen nagy buffer:
uart:
rx_buffer_size: 4000
dsmr:
max_telegram_length: 4000
4) IP cím változik
-
A routerben érdemes fix IP‑t adni a SlimmeLezernek.
-
Ha már változott, elég újra meghívni a
/tg/test‑et az új címmel.
5) A Bridge és a SlimmeLezer nem látják egymást
-
Ne vendéghálón legyenek.
-
Ne legyen köztük hálózati szeparáció (VLAN).
-
Próbáld meg pingelni a SlimmeLezer IP‑jét a hálóról.

Hozzászólások
Még nincs hozzászólás, légy te az első!