Add diagnostic bit support to Gateway Modbus

- Introduced new enum value `kShortDiagnosticBit` to `GatewayModbusGeneratedKind`.
- Enhanced `GatewayModbusPoint` and `GatewayModbusPointBinding` structures to include diagnostic snapshot, boolean key, and device type.
- Added new diagnostic bit specifications and updated the corresponding arrays for generated discrete inputs and holding registers.
- Implemented `addGeneratedDiagnosticPoint` function to handle the creation of diagnostic points.
- Updated `rebuildMap` method to include generated diagnostic points during the map rebuilding process.

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Tony
2026-05-04 02:26:09 +08:00
parent 694217eb2c
commit 7424b43bdd
13 changed files with 1133 additions and 40 deletions
@@ -79,6 +79,7 @@ enum class GatewayModbusGeneratedKind : uint8_t {
kShortActualLevel,
kShortSceneId,
kShortRawStatus,
kShortDiagnosticBit,
};
struct GatewayModbusPoint {
@@ -93,6 +94,9 @@ struct GatewayModbusPoint {
std::string model_id;
BridgeOperation operation{BridgeOperation::unknown};
std::optional<int> bit_index;
std::string diagnostic_snapshot;
std::string diagnostic_bool;
int diagnostic_device_type{-1};
};
struct GatewayModbusPointBinding {
@@ -105,6 +109,10 @@ struct GatewayModbusPointBinding {
GatewayModbusGeneratedKind generated_kind{GatewayModbusGeneratedKind::kNone};
int short_address{-1};
GatewayModbusAccess access{GatewayModbusAccess::kReadWrite};
std::optional<int> bit_index;
std::string diagnostic_snapshot;
std::string diagnostic_bool;
int diagnostic_device_type{-1};
};
std::optional<GatewayModbusConfig> GatewayModbusConfigFromValue(const DaliValue* value);