|
86 | 86 | clusters.OperationalState.Enums.OperationalStateEnum.kError: "error", |
87 | 87 | } |
88 | 88 |
|
| 89 | +OPERATIONAL_STATE_ERROR_MAP = { |
| 90 | + # enum with known Error state values which we can translate |
| 91 | + clusters.OperationalState.Enums.ErrorStateEnum.kNoError: "no_error", |
| 92 | + clusters.OperationalState.Enums.ErrorStateEnum.kUnableToStartOrResume: "unable_to_start_or_resume", |
| 93 | + clusters.OperationalState.Enums.ErrorStateEnum.kUnableToCompleteOperation: "unable_to_complete_operation", |
| 94 | + clusters.OperationalState.Enums.ErrorStateEnum.kCommandInvalidInState: "command_invalid_in_state", |
| 95 | +} |
| 96 | + |
89 | 97 | RVC_OPERATIONAL_STATE_MAP = { |
90 | 98 | # enum with known Operation state values which we can translate |
91 | 99 | **OPERATIONAL_STATE_MAP, |
|
94 | 102 | clusters.RvcOperationalState.Enums.OperationalStateEnum.kDocked: "docked", |
95 | 103 | } |
96 | 104 |
|
| 105 | +RVC_OPERATIONAL_STATE_ERROR_MAP = { |
| 106 | + # enum with known Error state values which we can translate |
| 107 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kNoError: "no_error", |
| 108 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kUnableToStartOrResume: "unable_to_start_or_resume", |
| 109 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kUnableToCompleteOperation: "unable_to_complete_operation", |
| 110 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kCommandInvalidInState: "command_invalid_in_state", |
| 111 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kFailedToFindChargingDock: "failed_to_find_charging_dock", |
| 112 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kStuck: "stuck", |
| 113 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kDustBinMissing: "dust_bin_missing", |
| 114 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kDustBinFull: "dust_bin_full", |
| 115 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kWaterTankEmpty: "water_tank_empty", |
| 116 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kWaterTankMissing: "water_tank_missing", |
| 117 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kWaterTankLidOpen: "water_tank_lid_open", |
| 118 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kMopCleaningPadMissing: "mop_cleaning_pad_missing", |
| 119 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kLowBattery: "low_battery", |
| 120 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kCannotReachTargetArea: "cannot_reach_target_area", |
| 121 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kDirtyWaterTankFull: "dirty_water_tank_full", |
| 122 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kDirtyWaterTankMissing: "dirty_water_tank_missing", |
| 123 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kWheelsJammed: "wheels_jammed", |
| 124 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kBrushJammed: "brush_jammed", |
| 125 | + clusters.RvcOperationalState.Enums.ErrorStateEnum.kNavigationSensorObscured: "navigation_sensor_obscured", |
| 126 | +} |
| 127 | + |
97 | 128 | BOOST_STATE_MAP = { |
98 | 129 | clusters.WaterHeaterManagement.Enums.BoostStateEnum.kInactive: "inactive", |
99 | 130 | clusters.WaterHeaterManagement.Enums.BoostStateEnum.kActive: "active", |
@@ -1101,6 +1132,19 @@ def _update_from_device(self) -> None: |
1101 | 1132 | # don't discover this entry if the supported state list is empty |
1102 | 1133 | secondary_value_is_not=[], |
1103 | 1134 | ), |
| 1135 | + MatterDiscoverySchema( |
| 1136 | + platform=Platform.SENSOR, |
| 1137 | + entity_description=MatterSensorEntityDescription( |
| 1138 | + key="OperationalStateOperationalError", |
| 1139 | + translation_key="operational_error", |
| 1140 | + device_class=SensorDeviceClass.ENUM, |
| 1141 | + entity_category=EntityCategory.DIAGNOSTIC, |
| 1142 | + options=list(OPERATIONAL_STATE_ERROR_MAP.values()), |
| 1143 | + device_to_ha=lambda x: OPERATIONAL_STATE_ERROR_MAP.get(x.errorStateID), |
| 1144 | + ), |
| 1145 | + entity_class=MatterSensor, |
| 1146 | + required_attributes=(clusters.OperationalState.Attributes.OperationalError,), |
| 1147 | + ), |
1104 | 1148 | MatterDiscoverySchema( |
1105 | 1149 | platform=Platform.SENSOR, |
1106 | 1150 | entity_description=MatterListSensorEntityDescription( |
@@ -1194,6 +1238,19 @@ def _update_from_device(self) -> None: |
1194 | 1238 | # don't discover this entry if the supported state list is empty |
1195 | 1239 | secondary_value_is_not=[], |
1196 | 1240 | ), |
| 1241 | + MatterDiscoverySchema( |
| 1242 | + platform=Platform.SENSOR, |
| 1243 | + entity_description=MatterSensorEntityDescription( |
| 1244 | + key="RvcOperationalStateOperationalError", |
| 1245 | + translation_key="operational_error", |
| 1246 | + device_class=SensorDeviceClass.ENUM, |
| 1247 | + entity_category=EntityCategory.DIAGNOSTIC, |
| 1248 | + options=list(RVC_OPERATIONAL_STATE_ERROR_MAP.values()), |
| 1249 | + device_to_ha=lambda x: RVC_OPERATIONAL_STATE_ERROR_MAP.get(x.errorStateID), |
| 1250 | + ), |
| 1251 | + entity_class=MatterSensor, |
| 1252 | + required_attributes=(clusters.RvcOperationalState.Attributes.OperationalError,), |
| 1253 | + ), |
1197 | 1254 | MatterDiscoverySchema( |
1198 | 1255 | platform=Platform.SENSOR, |
1199 | 1256 | entity_description=MatterOperationalStateSensorEntityDescription( |
|
0 commit comments