invert logic cutoff register
Some checks failed
CI and deploy / migration-check (push) Failing after 14s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-04-29 13:24:28 +02:00
parent 9aceb628aa
commit 342483b885
6 changed files with 14 additions and 12 deletions

View File

@@ -118,8 +118,8 @@ U instalací typu **BA81** (AC coupling / mikroinvertory na GEN portu) může so
`asset_inverter.deye_gen_microinverter_cutoff_enabled = true`, exporter provede **masked read-modify-write**
registru **179**:
- `deye_gen_cutoff_enabled = true` → reg **179** bits **01** = **2** (`10b`, disable = cut-off **ON**)
- `deye_gen_cutoff_enabled = false` → reg **179** bits **01** = **3** (`11b`, enable = cut-off **OFF**)
- `deye_gen_cutoff_enabled = true` → reg **179** bits **01** = **3** (`11b`, enable = cut-off **ON** / export blokován)
- `deye_gen_cutoff_enabled = false` → reg **179** bits **01** = **2** (`10b`, disable = cut-off **OFF** / export povolen)
Zápisy se ukládají do `ems.modbus_command` a ověřují v `verify_modbus_commands` (porovnává se pouze maska
bits 01). Detail registrů: [`modbus-registers.md`](modbus-registers.md) (reg 179).

View File

@@ -25,8 +25,8 @@ Indexy: podle `(site_id, status, created_at)` a částečný index pro `pending`
1. Po `mismatch` se odešle **Discord** alert (`notify_modbus_mismatch`), pokud je nastaven `DISCORD_WEBHOOK_URL`.
2. **Retry** zápisu max. **3×** (počítáno přes `attempt_count` po zápisech).
3. **Reg 178** (grid peak shaving switch): journal ukládá **celé 16bit** `value_to_write` (32 nebo 48). Při ověření se za **shodu** považuje shoda **bitů 45** maskou **`0x0030`** s očekáváním; `value_verified` = přečtená surová hodnota. Při nesouladu masky se **jednou** znovu přečte reg. 178 (druhé FC3) kvůli glitchům na RS485 — pokud druhé čtení maskou sedí, stav je **`verified`**.
4. **Reg 179** (control board special 1, BA81 GEN cut-off): exporter zapisuje masked RMW (zachová ostatní bity).
Při ověření se za shodu považuje jen maska **bits 01** (`0x0003`) vůči očekávání (2 = cutoff ON, 3 = cutoff OFF).
4. **Reg 179** (control board special 1, BA81 GEN cut-off): exporter zapisuje hodnotu 2/3 (clean write).
Při ověření se za shodu považuje jen maska **bits 01** (`0x0003`) vůči očekávání (**3 = cutoff ON**, **2 = cutoff OFF**).
4. **TOU výkon W (154159):** firmware často vrátí **max. výkon z reg. 108/109 × 51.2 V** místo přesně zapsaného W; verify to akceptuje jako **shodu** (skutečný výkon je stejně omezen proudy 108/109).
5. **Pojistka 6264**: pokud by se řádek registru **62, 63 nebo 64** omylem dostal do striktní větve po jednom registru, verify to zachytí a zpracuje **jako toleranční celek 6264** (stejně jako primární clock větev) — bez přepnutí do SELF_SUSTAIN jen kvůli tomu.
6. Po třech neúspěšných cyklech ověření:

View File

@@ -64,8 +64,8 @@ Režim **CHARGE_CHEAP** nastaví oba setpointy na stejný kladný výkon (min. 1
### BA81: GEN port cut-off (reg 179) z plánu
Pro instalace s AC coupling na GEN portu (mikroinvertory) může solver uložit do `planning_interval` flag **`deye_gen_cutoff_enabled`**.\n
- `true` → exporter nastaví reg **179** bits01 na **2** (`10b`, disable = cut-off ON)
- `false` → exporter nastaví bits01 na **3** (`11b`, enable = cut-off OFF)
- `true` → exporter nastaví reg **179** bits01 na **3** (`11b`, enable = cut-off ON / export blokován)
- `false` → exporter nastaví bits01 na **2** (`10b`, disable = cut-off OFF / export povolen)
Zápis do reg. 179 se v praxi provádí jako **„clean write“** hodnoty **2** nebo **3** (bez read-modify-write),
protože některé firmware/UI varianty nevyhodnocují jen bity 01 maskou, ale očekávají přímo hodnotu 2/3.