diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..4241072
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,17 @@
+# Changelog
+
+## 0.8.0
+- doplněno README o reálné nastavení převodníku a screenshoty
+- přidána složka `docs/images` se screenshoty konfigurace a výsledku v Home Assistantu
+- přidána složka `docs/pdfs` s podkladovou dokumentací k RS485 HAN a OBIS kódům
+- README upraveno podle reálně ověřeného chování elektroměru XT211 / Relay box
+- sjednocen popis dostupných entit a známých omezení
+
+## 0.7.7
+- opraven parser DLMS/COSEM a zpracování TCP streamu
+- opraveno vytváření binárních senzorů
+- opraveno mapování výrobního čísla na `0-0:96.1.1.255`
+- odstraněno vytváření trvale prázdných textových entit
+
+## 0.7.6
+- první větší oprava parseru a logování
diff --git a/README.md b/README.md
index 1d9e734..217187a 100644
--- a/README.md
+++ b/README.md
@@ -3,127 +3,139 @@
[](https://github.com/hacs/integration)

-> **Čtení dat z elektroměru Sagemcom XT211 (ČEZ Distribuce) přes RS485-to-Ethernet adaptér – bez ESP32.**
+> Čtení dat z elektroměru Sagemcom XT211 / Relay box (ČEZ Distribuce) přes RS485-to-Ethernet převodník do Home Assistantu.
-Tato integrace nahrazuje ESPHome řešení s ESP32 + RS485→TTL převodníkem. Místo toho používá průmyslový RS485-to-Ethernet adaptér (doporučen **PUSR USR-DR134**), který posílá syrová RS485 data přes TCP přímo do Home Assistantu.
-
----
+Tahle integrace čte push data z HAN / RS485 rozhraní elektroměru přes TCP server na převodníku. Není potřeba ESPHome ani ESP32.
## Jak to funguje
-```
-XT211 / WM-RelayBox
- └── RJ12 HAN port (RS485, 9600 baud)
- └── USR-DR134 (RS485 → Ethernet)
- └── TCP socket (LAN)
- └── Home Assistant (tato integrace)
+```text
+XT211 / Relay box
+ └── RJ12 HAN port (RS485, 9600 Bd)
+ └── RS485 → Ethernet převodník
+ └── TCP server na LAN
+ └── Home Assistant
```
-Elektroměr posílá DLMS/COSEM PUSH zprávy každých **60 sekund**. Integrace udržuje persistentní TCP spojení k adaptéru a dekóduje příchozí HDLC rámce.
+Elektroměr posílá jednosměrná DLMS/COSEM data z elektroměru k zákazníkovi rychlostí 9600 Bd a podle dokumentace ČEZ se push zprávy předávají 1× za 60 s. Rozhraní je vyvedené na konektoru RJ12, kde je Data A na pinu 3, Data B na pinu 4 a GND na pinu 6. Dokumentace také uvádí sadu OBIS kódů pro HAN rozhraní. fileciteturn6file0 fileciteturn6file1
----
+## Ověřený hardware
-## Požadavky
+Integrace byla ověřena s převodníkem z rodiny PUSR USR-DR132/USR-DR134. Výrobce na produktové stránce uvádí, že varianta **USR-DR134** má 1× RS485 port, podporuje TCP server mód, rozsah 600 až 230400 Bd a napájení 5 až 24 V DC. citeturn348633view0
-- Home Assistant 2024.1+
-- RS485-to-Ethernet adaptér s TCP server módem:
- - **PUSR USR-DR134** (doporučeno) – RS485, DIN rail, 5–24V
- - Nebo jiný kompatibilní adaptér (USR-TCP232-410S, Waveshare, apod.)
-
----
+Pro XT211 dává smysl použít právě **USR-DR134** protože je to RS485 varianta. DR132 je RS232.
## Instalace přes HACS
-1. Otevři HACS → **Integrace** → tři tečky vpravo nahoře → **Vlastní repozitáře**
-2. Přidej URL tohoto repozitáře, kategorie: **Integration**
-3. Najdi „XT211 HAN" a nainstaluj
-4. Restartuj Home Assistant
-5. **Nastavení → Zařízení a služby → Přidat integraci → XT211 HAN**
+1. Otevři HACS → **Integrace** → **Vlastní repozitáře**.
+2. Přidej URL tohoto repozitáře jako typ **Integration**.
+3. Nainstaluj integraci **XT211 HAN**.
+4. Restartuj Home Assistant.
+5. V **Nastavení → Zařízení a služby** přidej integraci **XT211 HAN**.
----
+## Nastavení převodníku
-## Nastavení adaptéru USR-DR134
+### 1. Síťové nastavení
-Nastavení přes webové rozhraní adaptéru (výchozí IP `192.168.0.7`):
+Použité nastavení na funkční sestavě:
+- IP Type: `Static IP`
+- Native IP: `192.168.0.152`
+- Submask: `255.255.255.0`
+- Gateway: `192.168.0.1`
+- DNS Server: `192.168.0.1`
-| Parametr | Hodnota |
-|----------|---------|
-| Work Mode | **TCP Server** |
-| Local Port | `8899` (nebo libovolný) |
-| Baud Rate | `9600` |
-| Data Bits | `8` |
-| Stop Bits | `1` |
-| Parity | `None` |
-| Flow Control | `None` |
+
-> ⚠️ Použij model **USR-DR134** (RS485), ne DR132 (RS232)!
+### 2. Sériové / TCP nastavení
----
+Použité nastavení na funkční sestavě:
+- Baud Rate: `9600`
+- Data Size: `8`
+- Parity: `NONE`
+- Stop Bits: `1`
+- Local Port Number: `8899`
+- Work Mode: `TCP Server`
+- Client Overrun Mechanism: `KICK`
+- Client Access Quantity: `4`
-## Zapojení
+
-```
-WM-RelayBox HAN port (RJ12):
- Pin 3 (Data A+) → USR-DR134 terminal A+
- Pin 4 (Data B-) → USR-DR134 terminal B-
- Pin 6 (GND) → USR-DR134 GND (volitelné)
-```
+### 3. Kontrola, že převodník opravdu posílá data
-Napájení USR-DR134: 5–24V DC (např. z USB adaptéru přes step-up, nebo 12V zdroj).
+Na stavové stránce převodníku je vidět aktivní klient a počitadlo `TX/RX Count`. Pokud **roste TX počet bajtů**, převodník normálně odesílá data z elektroměru do sítě. Na ukázce níže je vidět připojený klient `192.168.0.190` a narůstající `TX Count`, zatímco `RX` zůstává nulové. To odpovídá jednosměrnému provozu elektroměr → zákazník, který je uvedený i v dokumentaci ČEZ. fileciteturn6file0
----
+
-## Dostupné entity (27 celkem)
+## Zapojení RJ12 / RS485
-### 📊 Výkon (W) – okamžité hodnoty
-| # | Název entity | OBIS kód |
-|---|---|---|
-| 5 | Power Limiter Value | `0-0:17.0.0.255` |
-| 13 | Active Power Import | `1-0:1.7.0.255` |
-| 14 | Active Power Import L1 | `1-0:21.7.0.255` |
-| 15 | Active Power Import L2 | `1-0:41.7.0.255` |
-| 16 | Active Power Import L3 | `1-0:61.7.0.255` |
-| 17 | Active Power Export | `1-0:2.7.0.255` |
-| 18 | Active Power Export L1 | `1-0:22.7.0.255` |
-| 19 | Active Power Export L2 | `1-0:42.7.0.255` |
-| 20 | Active Power Export L3 | `1-0:62.7.0.255` |
+Podle dokumentace ČEZ je konektor RJ12 zapojen takto:
+- pin 3 = `Data A`
+- pin 4 = `Data B`
+- pin 6 = `Shield / GND` nebo `Data GND`
-### ⚡ Energie (kWh) – kumulativní
-| # | Název entity | OBIS kód |
-|---|---|---|
-| 21 | Energy Import | `1-0:1.8.0.255` |
-| 22 | Energy Import T1 | `1-0:1.8.1.255` |
-| 23 | Energy Import T2 | `1-0:1.8.2.255` |
-| 24 | Energy Import T3 | `1-0:1.8.3.255` |
-| 25 | Energy Import T4 | `1-0:1.8.4.255` |
-| 26 | Energy Export | `1-0:2.8.0.255` |
+
-### 🔀 Binární senzory (zapnuto/vypnuto)
-| # | Název entity | OBIS kód |
-|---|---|---|
-| 4 | Disconnector Status | `0-0:96.3.10.255` |
-| 6 | Relay R1 Status | `0-1:96.3.10.255` |
-| 7 | Relay R2 Status | `0-2:96.3.10.255` |
-| 8 | Relay R3 Status | `0-3:96.3.10.255` |
-| 9 | Relay R4 Status | `0-4:96.3.10.255` |
-| 10 | Relay R5 Status | `0-5:96.3.10.255` |
-| 11 | Relay R6 Status | `0-6:96.3.10.255` |
+## Co integrace reálně čte
-### 📋 Diagnostika (text)
-| # | Název entity | OBIS kód |
-|---|---|---|
-| 1 | COSEM Logical Device Name | `0-0:42.0.0.255` |
-| 3 | Serial Number | `0-0:96.1.0.255` |
-| 12 | Current Tariff | `0-0:96.14.0.255` |
-| 27 | Consumer Message | `0-0:96.13.0.255` |
+Na reálně otestované sestavě se z XT211 / Relay boxu četou tyto hodnoty:
+- dodávka energie celkem
+- spotřeba energie celkem
+- spotřeba energie T1
+- spotřeba energie T2
+- okamžitý příkon odběru celkem
+- okamžitý příkon odběru L1, L2, L3
+- okamžitý výkon dodávky celkem
+- okamžitý výkon dodávky L1, L2, L3
+- limiter
+- stav odpojovače
+- stav relé R1 až R4
+- aktuální tarif
+- výrobní číslo elektroměru
-> ℹ️ Idx 2 (`0-2:25.9.0.255` – Push setup) je interní konfigurační objekt elektroměru, neobsahuje měřená data.
+Dokumentace ČEZ uvádí širší seznam OBIS kódů včetně názvu zařízení, zprávy pro zákazníka, relé R5/R6 a dalších položek. V praxi ale záleží na tom, co konkrétní elektroměr opravdu posílá ve svém push profilu. Na testované sestavě se tyto položky v datech neobjevily, takže je integrace nevytváří dopředu jako prázdné entity. fileciteturn6file0 fileciteturn6file1
----
+## Dostupné entity
-## Ladění (debug)
+### Výkon (W)
+- Limiter — `0-0:17.0.0.255`
+- Okamžitý příkon odběru celkem — `1-0:1.7.0.255`
+- Okamžitý příkon odběru L1 — `1-0:21.7.0.255`
+- Okamžitý příkon odběru L2 — `1-0:41.7.0.255`
+- Okamžitý příkon odběru L3 — `1-0:61.7.0.255`
+- Okamžitý výkon dodávky celkem — `1-0:2.7.0.255`
+- Okamžitý výkon dodávky L1 — `1-0:22.7.0.255`
+- Okamžitý výkon dodávky L2 — `1-0:42.7.0.255`
+- Okamžitý výkon dodávky L3 — `1-0:62.7.0.255`
-Přidej do `configuration.yaml`:
+### Energie (kWh)
+- Spotřeba energie celkem — `1-0:1.8.0.255`
+- Spotřeba energie T1 — `1-0:1.8.1.255`
+- Spotřeba energie T2 — `1-0:1.8.2.255`
+- Spotřeba energie T3 — `1-0:1.8.3.255` pokud ji elektroměr posílá
+- Spotřeba energie T4 — `1-0:1.8.4.255` pokud ji elektroměr posílá
+- Dodávka energie celkem — `1-0:2.8.0.255` pokud ji elektroměr posílá
+
+### Binární senzory
+- Stav odpojovače — `0-0:96.3.10.255`
+- Stav relé R1 — `0-1:96.3.10.255`
+- Stav relé R2 — `0-2:96.3.10.255`
+- Stav relé R3 — `0-3:96.3.10.255`
+- Stav relé R4 — `0-4:96.3.10.255`
+
+### Diagnostika
+- Aktuální tarif — `0-0:96.14.0.255`
+- Výrobní číslo — `0-0:96.1.1.255`
+
+## Známá omezení
+
+- Integrace zobrazí jen to, co elektroměr opravdu posílá v push datech.
+- Ne každý XT211 / Relay box posílá všechny OBIS položky z dokumentace.
+- Položky jako `Název zařízení`, `Zpráva pro zákazníka`, `Relé R5`, `Relé R6` se nemusí objevit vůbec.
+- Pokud přecházíš ze starší verze integrace, po změně typů entit je rozumné staré entity smazat a integraci nainstalovat znovu.
+
+## Debug logování
+
+Do `configuration.yaml`:
```yaml
logger:
@@ -132,35 +144,54 @@ logger:
custom_components.xt211_han: debug
```
-V logu uvidíš surová hex data každého HDLC rámce a dekódované OBIS hodnoty.
+V logu pak uvidíš:
+- příjem TCP dat
+- složení rámců ze streamu
+- parsed OBIS objekty
+- aktualizaci coordinatoru
----
+## Změny ve verzi 0.8.0
+
+- README přepsané podle reálně funkční konfigurace
+- přidané screenshoty nastavení převodníku
+- přidané screenshoty výsledku v Home Assistantu
+- přidaná složka `docs/images`
+- přidaná složka `docs/pdfs`
+- doplněný `CHANGELOG.md`
+
+Předchozí funkční opravy z verzí 0.7.6 a 0.7.7:
+- oprava parseru DLMS/COSEM
+- oprava zpracování TCP streamu
+- oprava binárních senzorů
+- oprava mapování výrobního čísla
+- odstranění trvale prázdných entit
## Struktura repozitáře
-```
+```text
custom_components/xt211_han/
-├── __init__.py # Inicializace integrace
-├── manifest.json # Metadata pro HA / HACS
-├── const.py # Konstanty
-├── config_flow.py # UI průvodce nastavením
-├── coordinator.py # TCP listener + DataUpdateCoordinator
-├── sensor.py # Senzorová platforma
-├── dlms_parser.py # HDLC / DLMS / COSEM parser
-├── strings.json # Texty UI
+├── __init__.py
+├── binary_sensor.py
+├── config_flow.py
+├── const.py
+├── coordinator.py
+├── dlms_parser.py
+├── manifest.json
+├── sensor.py
+├── strings.json
└── translations/
- ├── cs.json # Čeština
- └── en.json # Angličtina
+ ├── cs.json
+ └── en.json
+
+docs/
+├── images/
+└── pdfs/
```
----
+## Podklady v repozitáři
-## Poděkování / Credits
-
-- [Tomer27cz/xt211](https://github.com/Tomer27cz/xt211) – původní ESPHome komponenta a dokumentace protokolu
-- ČEZ Distribuce – dokumentace OBIS kódů a RS485 rozhraní
-
----
+- `docs/pdfs/cez_rs485_han_interface.pdf`
+- `docs/pdfs/cez_obis_codes_han_2025-02-01.pdf`
## Licence
diff --git a/custom_components/xt211_han/manifest.json b/custom_components/xt211_han/manifest.json
index 7c52326..9230c30 100644
--- a/custom_components/xt211_han/manifest.json
+++ b/custom_components/xt211_han/manifest.json
@@ -1,7 +1,7 @@
{
"domain": "xt211_han",
"name": "XT211 HAN (RS485 via Ethernet)",
- "version": "0.7.7",
+ "version": "0.8.0",
"documentation": "https://github.com/nero150/xt211-han-ha",
"issue_tracker": "https://github.com/nero150/xt211-han-ha/issues",
"dependencies": [],
diff --git a/docs/images/converter_network_settings.png b/docs/images/converter_network_settings.png
new file mode 100644
index 0000000..aa1140b
Binary files /dev/null and b/docs/images/converter_network_settings.png differ
diff --git a/docs/images/converter_serial_settings.png b/docs/images/converter_serial_settings.png
new file mode 100644
index 0000000..b8a629f
Binary files /dev/null and b/docs/images/converter_serial_settings.png differ
diff --git a/docs/images/converter_status_tx.png b/docs/images/converter_status_tx.png
new file mode 100644
index 0000000..a4ceb75
Binary files /dev/null and b/docs/images/converter_status_tx.png differ
diff --git a/docs/images/home_assistant_entities.png b/docs/images/home_assistant_entities.png
new file mode 100644
index 0000000..2829490
Binary files /dev/null and b/docs/images/home_assistant_entities.png differ
diff --git a/docs/pdfs/cez_obis_codes_han_2025-02-01.pdf b/docs/pdfs/cez_obis_codes_han_2025-02-01.pdf
new file mode 100644
index 0000000..2a11602
--- /dev/null
+++ b/docs/pdfs/cez_obis_codes_han_2025-02-01.pdf
@@ -0,0 +1,964 @@
+%PDF-1.7
+%љ
+2 0 obj
+<<
+/Lang (cs)
+/MarkInfo <<
+/Marked true
+>>
+/Metadata 4 0 R
+/OutputIntents 5 0 R
+/Pages 6 0 R
+/StructTreeRoot 7 0 R
+/Type /Catalog
+/ViewerPreferences 8 0 R
+>>
+endobj
+4 0 obj
+<<
+/Length 7713
+/Subtype /XML
+/Type /Metadata
+>>
+stream
+
+
+
+
+ Microsoft® Word pro Microsoft 365
+ Microsoft® Word pro Microsoft 365
+ 2025-01-02T13:30:44+01:00
+ 2025-01-22T10:49:40+01:00
+ uuid:8D5F8487-0C4D-4FA5-940A-F1F274327ABB
+ uuid:8D5F8487-0C4D-4FA5-940A-F1F274327ABB
+
+
+ Zlámal Jiří
+
+
+
+
+
+ http://ns.adobe.com/pdf/1.3/
+ pdf
+ Adobe PDF Schema
+
+
+
+ Producer
+ external
+ Text
+ The name of the tool that created the PDF document
+
+
+
+
+
+
+
+
+ http://ns.adobe.com/xap/1.0/
+ xmp
+ XMP Basic schema
+
+
+
+ CreatorTool
+ external
+ Text
+ The name of the first known tool used to create the resource
+
+
+ CreateDate
+ external
+ Date
+ The date and time the resource was originally created
+
+
+ ModifyDate
+ external
+ Date
+ The date and time the resource was last modified
+
+
+
+
+
+
+
+
+ http://ns.adobe.com/xap/1.0/mm/
+ xmpMM
+ XMP Media Management schema
+
+
+
+ DocumentID
+ external
+ URI
+ The common identifier for all versions and renditions of a document
+
+
+ InstanceID
+ external
+ URI
+ An identifier for a specific incarnation of a document, updated each time a file is saved
+
+
+
+
+
+
+
+
+ http://purl.org/dc/elements/1.1/
+ dc
+ Dublin Core schema
+
+
+
+ creator
+ external
+ seq ProperName
+ The authors of the resource
+
+
+
+
+
+
+
+
+
+ 2
+ B
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+endstream
+endobj
+15 0 obj
+<<
+/Filter /FlateDecode
+/Length 2599
+/N 3
+>>
+stream
+xSwXSw>Jl "#!S$@!(*E!u" ED*.}>_?};ys h!"q)I#q lb@ْ(h @_.;;(WlʗHe H8 8| $ 2reE| )4.> P|ڧSb D)PN X#
+ ( sk `!`B^6 ˄T - Фё\ -..)fIKE)2ߜmas32U8Γ
+ܬL OsϟЖusqrBz3{3Gj 8 ?bZh#f@9~XyI$66"!Z! _Zay[?+#K.egKx|!C"BPcD\8D2Q-'e_yQA ݀cPKܥpwB1ؼXs @lQʧ:nd4/|>S%MC0+gpO hyT)2X
Pa;T@5B4ahcp%pa8IAa bX""!H$$!)#ː5HRT {:[(r!7!dyb(
e: jrP/4F)Bt nB ڂF/ b,L8dL
+Rkڱ.*6=8¹pq|B
+F\ >xm%çsR>|3,?I XS3!OH#,%l$$4NÄ "I$ÈQ/s4^OmޯS>OOl
+{~~)~
~KO\ 9-GWA[C2%aa[/>Q .rYdW#j~T}h۳fgw($ż-[w)^+^ߖ@LIؗ01w9#sM.{aּy+?OMOz&.Z0w<cBwap4=$a{֔T'"B,- :UzXM̤̣b5q3K7kQVRR \pqit_6=7MƔIdr3ZP̜ʜ1G./^lx%~K^[_ڱLeC˽YXc#WXMY<ۼkb״^뿶@@Zp}ۺ=6oP((Xd[TZn#ů*M=NŻ667lrDdIЭ-
+>;(;;Bʍ7HlҮPj`]uOKIM^ޜjcj|]Ok_ѾDs/n@
c^盶F=MCpH~ѷI>qs;漢ͅ-HAG;ڛ~1cՏ?䒓$N9=13:#:{=ܙ.zEKNZpǩ}'x\9}k.=pzof|v+Uww
+-}Guߏ{?ލ??({hؘGs<<|RUO͞~/q#Ϥ>/2ךzvt2]{?o
+endstream
+endobj
+16 0 obj
+<<
+/Filter /FlateDecode
+/Length 3586
+>>
+stream
+xڽ\RG}+^ᶒm X}q1 m_ݕ=LpXsTgeʾlݞ\|G~z?~f^mMjTWijdL41V^o|eJNWQw_ߩItV7 ]NM?gpΨR1jzk;V_vk?9s N/6Ȕ7k\GBQA_u qѩM]m?S_=BFL_/n63~msvTiڎVݎYߊ;t]hab}~}z}.mgm˺
+9y8PHDo/cC`ZM.>>-맶ǽl(dM^E]9#@чfXb2M2
+ݷi*66eHױi5W>mjƅ۾ͺvZ@fi]Rfry(wvp:ʛE hh6I@h6EG0-NN-Z,'O|vһ٤M.
kovOq?{*
sV]?ߩG~>r}l_|/ufsq`h`~FSj
ySյY
T};M
+>/F\TjQ!4B.FdC583ԘJ`O9LmkˋB#l,؟R'kB1.SsiUa.VQ;+Xleo-;,qe% !毉M Z
+N'_ͯ7_N#1q)8+
>