suggest: split multi-output channels by vendor object marker; drop device diagnostics

- _subunit()/_split_subunits(): '[1] Switch On/Off' style markers separate the outputs a vendor
  packs into one ETS channel; each sub-unit is classified on its own (ids and secondary_info carry it)
- diagnostics (error/communication/firmware/version/bus voltage/reset, EN+DE+RU) never become sensors
  and are excluded from the name-based fallback; counted in hints.diagnostics_skipped
- real-project effect (3646 GAs): entities 341->513, sensors 752->367, platform agreement 92->95 %,
  address-key agreement 94->95 %
- tests: multi-output split (two lights, statuses consumed, no sensor fallout) + diagnostics filter
This commit is contained in:
Nikolay Miroshnichenko
2026-09-12 09:09:08 +02:00
parent 80fc279ac1
commit 07352cdb61
3 changed files with 125 additions and 14 deletions
+14
View File
@@ -6,6 +6,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### Changed
- **`suggest.py`: multi-output actuators are split by their vendor object marker.** Zennio-style
devices (Lumento DX4, MAXinBOX, KLIC-DI…) put every output of a device into ONE ETS channel and
separate them only in the object text (`[1] Switch On/Off`, `[2] On/Off (Status)`). The channel
classifier used to see several switch commands in one channel, give up, and let every status object
fall through to a sensor suggestion. Channels are now split into vendor sub-units first. On a real
3646-GA project: entities 341 → 513, sensor noise 752 → 367, agreement with the name/Function engine
92 % → 95 % (platform) and 94 % → 95 % (address keys).
- **Device diagnostics are no longer suggested as sensors** (error flags, communication failures,
firmware/version, bus voltage, reset — matched in the vendor object text or the GA name, EN/DE/RU).
They are counted in `hints["diagnostics_skipped"]` and kept out of the name-based fallback as well.
53 such objects on the same project.
## [0.8.1] - 2026-09-12
### Added