From a8b69d24877f66cc42a0ab05d4893d8a0c36227a Mon Sep 17 00:00:00 2001 From: Nero <95982029+nero150@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:22:57 +0100 Subject: [PATCH] Add files via upload --- CHANGELOG.md | 6 ++ README.md | 115 ++-------------------- custom_components/xt211_han/manifest.json | 2 +- hacs.json | 3 +- manifest.json | 2 +- xt211_han.zip | Bin 15196 -> 13785 bytes 6 files changed, 17 insertions(+), 111 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52ce193..c33c33a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.8.9 +- opraven HACS release balík pro `content_in_root: true` +- release asset `xt211_han.zip` už obsahuje přímo soubory integrace v rootu ZIPu +- doplněno `content_in_root` do `hacs.json` +- sjednocena verze balíku na 0.8.9 + ## 0.8.7 - zvýšena verze balíku na 0.8.7 - sjednocena verze v kořenovém i integračním `manifest.json` diff --git a/README.md b/README.md index 20ea90f..3d078c0 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ > Čtení dat z elektroměru Sagemcom XT211 / Relay box (ČEZ Distribuce) přes RS485-to-Ethernet převodník do Home Assistantu. -Tahle integrace čte push data z HAN / RS485 rozhraní elektroměru přes TCP server na převodníku. +Tahle integrace čte push data z HAN / RS485 rozhraní elektroměru přes TCP server na převodníku. ## Jak to funguje @@ -17,115 +17,23 @@ XT211 / Relay box └── Home Assistant ``` -- 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í. +- 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í. ## Ověřený hardware -- PUSR USR-USR-DR134 (https://www.pusr.com/products/Lipstick-Size-Serial-Device-Server.html) -- Předpokládám, že bude fungovat každý RS485-TCP převodník +- PUSR USR-USR-DR134 +- Předpoklad je, že bude fungovat každý RS485-TCP převodník ## Instalace přes HACS 1. Otevři HACS → **Integrace** → **Vlastní repozitáře**. -2. Přidej URL tohoto repozitáře jako typ **Integration** (https://github.com/nero150/CEZ_rele_box). +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 - -### 1. Síťové nastavení - -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` - -![Síťové nastavení převodníku](docs/images/converter_network_settings.png) - -### 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` - -![Sériové a TCP nastavení převodníku](docs/images/converter_serial_settings.png) - -### 3. Kontrola, že převodník opravdu posílá data - -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. fileciteturn6file0 - -![Status převodníku a TX počitadlo](docs/images/converter_status_tx.png) - -## Zapojení RJ12 / RS485 - -Podle dokumentace ČEZ je konektor RJ12 zapojen takto: -- pin 3 = `Data A` -- pin 4 = `Data B` -- pin 6 = `Shield / GND` nebo `Data GND` - -![Home Assistant – funkční entity](docs/images/home_assistant_entities.png) - -## Co integrace reálně čte - -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 - -## Dostupné entity - -### 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` - -### 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` - - ## Debug logování Do `configuration.yaml`: @@ -137,20 +45,11 @@ logger: custom_components.xt211_han: debug ``` -V logu pak uvidíš: -- příjem TCP dat -- složení rámců ze streamu -- parsed OBIS objekty -- aktualizaci coordinatoru - ## Podklady v repozitáři - `docs/pdfs/cez_rs485_han_interface.pdf` - `docs/pdfs/cez_obis_codes_han_2025-02-01.pdf` -## Poděkování -- Děkuji za inspiraci: https://github.com/Tomer27cz/xt211 - ## Licence MIT diff --git a/custom_components/xt211_han/manifest.json b/custom_components/xt211_han/manifest.json index fe4f54c..135a2da 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.8.8", + "version": "0.8.9", "documentation": "https://github.com/nero150/CEZ_rele_box", "issue_tracker": "https://github.com/nero150/CEZ_rele_box/issues", "dependencies": [], diff --git a/hacs.json b/hacs.json index 9e5297e..21bb53b 100644 --- a/hacs.json +++ b/hacs.json @@ -6,5 +6,6 @@ "iot_class": "local_push", "render_readme": true, "zip_release": true, - "filename": "xt211_han.zip" + "filename": "xt211_han.zip", + "content_in_root": true } diff --git a/manifest.json b/manifest.json index fe4f54c..135a2da 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "domain": "xt211_han", "name": "XT211 HAN (RS485 via Ethernet)", - "version": "0.8.8", + "version": "0.8.9", "documentation": "https://github.com/nero150/CEZ_rele_box", "issue_tracker": "https://github.com/nero150/CEZ_rele_box/issues", "dependencies": [], diff --git a/xt211_han.zip b/xt211_han.zip index c5726b25f447c39584a24f1fb10e8a8a38973f5a..2970fdf9400ba25cd39873eb5e0146b7cfa4bb27 100644 GIT binary patch literal 13785 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