import 'package:syncrow_app/features/devices/model/function_model.dart'; import 'package:syncrow_app/features/scene/enum/ac_values.dart'; import 'package:syncrow_app/features/scene/model/scene_details_model.dart'; import 'package:syncrow_app/features/scene/model/scene_static_function.dart'; import 'package:syncrow_app/generated/assets.dart'; import 'package:syncrow_app/utils/resource_manager/constants.dart'; mixin SceneOperationsDataHelper { List getFunctionsWithIcons({ DeviceType? type, required List functions, required String deviceId, required String deviceName, }) { switch (type) { case DeviceType.LightBulb: return lightBulbFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); case DeviceType.CeilingSensor: return ceilingSensorFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); case DeviceType.WallSensor: return wallSensorFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); case DeviceType.AC: return acFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); case DeviceType.DoorLock: return doorLockFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); case DeviceType.Curtain: return curtainFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); case DeviceType.ThreeGang: return threeGangFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); case DeviceType.Gateway: return gatewayFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); default: return lightBulbFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, ); } } String getTitle({DeviceType? type}) { switch (type) { case DeviceType.LightBulb: return 'Light Bulb Functions'; case DeviceType.CeilingSensor: return 'Presence Sensor Functions'; case DeviceType.WallSensor: return 'Human Presence Sensor Functions'; case DeviceType.AC: return 'AC Functions'; case DeviceType.DoorLock: return 'Door Lock Functions'; case DeviceType.Curtain: return 'Curtain Functions'; case DeviceType.ThreeGang: return '3G Light Switch Functions'; case DeviceType.Gateway: return 'Gateway Functions'; default: return ''; } } /// presence sensor List ceilingSensorFunctions({ required List functions, required String deviceId, required String deviceName, required dynamic functionValue, }) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsSensitivityFunction, operationName: 'Sensitivity', code: 'sensitivity', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 1, description: 1.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 2, description: 2.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 3, description: 3.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 4, description: 4.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 5, description: 5.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 6, description: 6.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 7, description: 7.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 8, description: 8.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 9, description: 9.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 10, description: 10.toString(), ), ], ), ]; } List curtainFunctions( {required List functions, required String deviceId, required String deviceName, required functionValue}) { return []; } List doorLockFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, }) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsIconsDoorLock, operationName: 'Set Door lock Normal Open', functionValue: functionValue, code: 'normal_open_switch', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), ]; } List wallSensorFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, }) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFarDetection, operationName: 'Far Detection', code: 'far_detection', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 75, description: '75cm', iconValue: '75', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 150, description: '150cm', iconValue: '150', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 225, description: '225cm', iconValue: '225', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 300, description: '300cm', iconValue: '300', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 375, description: '375cm', iconValue: '375', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 450, description: '450cm', iconValue: '450', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 525, description: '525cm', iconValue: '525', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 600, description: '600cm', iconValue: '600', ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsMotionDetection, operationName: 'Motion Detection Sensitivity', code: 'motion_sensitivity_value', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 1, description: 1.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 2, description: 2.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 3, description: 3.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 4, description: 4.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 5, description: 5.toString(), ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsMotionlessDetection, operationName: 'Motionless Detection Sensitivity', code: 'motionless_sensitivity', functionValue: functionValue, operationalValues: [ SceneOperationalValue( iconValue: '1', icon: Assets.assetsFarDetectionFunction, value: 1, description: '1', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 2, description: '2', iconValue: '2', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 3, description: '3', iconValue: '3', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 4, description: '4', iconValue: '4', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 5, description: '5', iconValue: '5', ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsIndicator, operationName: 'Indicator', code: 'indicator', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsNobodyTime, operationName: 'Nobody Time', code: 'presence_time', functionValue: functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), ]; } List lightBulbFunctions( {required List functions, required String deviceId, required String deviceName, required functionValue}) { return []; } List gatewayFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, }) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsSwitchAlarmSound, operationName: 'Switch Alarm Sound', code: 'switch_alarm_sound', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsMasterState, operationName: 'Master State', code: 'master_state', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "Alarm", value: 'alarm', ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "Normal", value: 'normal', ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFactoryReset, operationName: 'Factory Reset', code: 'factory_reset', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsResetOff, description: "OFF", value: false), ], ), ]; } List threeGangFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, }) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 1 Switch', code: 'switch_1', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 2 Switch', code: 'switch_2', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Light 3 Switch', code: 'switch_3', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsLightCountdown, operationName: 'Light 1 CountDown', code: 'countdown_1', functionValue: functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsLightCountdown, operationName: 'Light 2 CountDown', code: 'countdown_2', functionValue: functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsLightCountdown, operationName: 'Light 3 CountDown', code: 'countdown_3', functionValue: functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), ]; } /// smart ac thermostat List acFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, }) { return [ SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsAcPower, operationName: 'Power', code: 'switch', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFreezing, operationName: 'Mode', code: 'mode', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcCooling, description: AcValuesEnums.Cooling.name, value: TempModes.cold.name, ), SceneOperationalValue( icon: Assets.assetsAcHeating, description: AcValuesEnums.Heating.name, value: TempModes.hot.name, ), SceneOperationalValue( icon: Assets.assetsFanSpeed, description: AcValuesEnums.Ventilation.name, value: TempModes.wind.name, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsTempreture, operationName: 'Set Temperature', code: 'temp_set', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsCelsiusDegrees, value: 0, description: 'COOL TO', ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsFanSpeed, operationName: 'Fan Speed', code: 'level', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcFanLow, description: ValueACRange.LOW.name, value: FanSpeeds.low.name, ), SceneOperationalValue( icon: Assets.assetsAcFanMiddle, description: ValueACRange.MIDDLE.name, value: FanSpeeds.middle.name, ), SceneOperationalValue( icon: Assets.assetsAcFanHigh, description: ValueACRange.HIGH.name, value: FanSpeeds.high.name, ), SceneOperationalValue( icon: Assets.assetsAcFanAuto, description: ValueACRange.AUTO.name, value: FanSpeeds.auto.name, ), ], ), SceneStaticFunction( deviceId: deviceId, deviceName: deviceName, icon: Assets.assetsChildLock, operationName: 'Child Lock', code: 'child_lock', functionValue: functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneChildLock, description: 'Lock', value: true, ), SceneOperationalValue( icon: Assets.assetsSceneChildUnlock, description: 'Unlock', value: false, ), ], ), ]; } ///////&************ END of get function with icons for device *************&&//////// /// /// List getTaskListFunctionsFromApi({ required List actions, }) { List functions = []; for (var action in actions) { if (action.entityId == 'delay') { functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'delay', deviceIcon: Assets.delay, icon: Assets.delay, operationName: 'delay', functionValue: action.executorProperty.delaySeconds, code: '', operationalValues: [ SceneOperationalValue( icon: '', description: "", value: action.executorProperty.delaySeconds, ), ], ), ); } ExecutorProperty executorProperty = action.executorProperty; switch (executorProperty.functionCode) { case 'sensitivity': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsSensitivityFunction, operationName: 'Sensitivity', code: 'sensitivity', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 1, description: 1.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 2, description: 2.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 3, description: 3.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 4, description: 4.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 5, description: 5.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 6, description: 6.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 7, description: 7.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 8, description: 8.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 9, description: 9.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 10, description: 10.toString(), ), ], ), ); break; case 'normal_open_switch': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'WIFI LOCK PRO', deviceIcon: Assets.assetsIconsDoorLock, icon: Assets.assetsIconsDoorLock, operationName: 'Set Door lock Normal Open', functionValue: executorProperty.functionValue, code: 'normal_open_switch', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ), ); break; case 'far_detection': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsFarDetection, operationName: 'Far Detection', functionValue: executorProperty.functionValue, code: 'far_detection', operationalValues: [ SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 75, description: '75cm', iconValue: '75', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 150, description: '150cm', iconValue: '150', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 225, description: '225cm', iconValue: '225', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 300, description: '300cm', iconValue: '300', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 375, description: '375cm', iconValue: '375', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 450, description: '450cm', iconValue: '450', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 525, description: '525cm', iconValue: '525', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 600, description: '600cm', iconValue: '600', ), ], ), ); break; case 'motion_sensitivity_value': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionDetection, operationName: 'Motion Detection Sensitivity', functionValue: executorProperty.functionValue, code: 'motion_sensitivity_value', operationalValues: [ SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 1, description: 1.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 2, description: 2.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 3, description: 3.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 4, description: 4.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 5, description: 5.toString(), ), ], ), ); break; case 'motionless_sensitivity': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionlessDetection, operationName: 'Motionless Detection Sensitivity', functionValue: executorProperty.functionValue, code: 'motion_sensitivity_value', operationalValues: [ SceneOperationalValue( iconValue: '1', icon: Assets.assetsFarDetectionFunction, value: 1, description: '1', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 2, description: '2', iconValue: '2', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 3, description: '3', iconValue: '3', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 4, description: '4', iconValue: '4', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 5, description: '5', iconValue: '5', ), ], ), ); break; case 'indicator': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsIndicator, operationName: 'Indicator', functionValue: executorProperty.functionValue, code: 'indicator', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ), ); break; case 'presence_time': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsNobodyTime, operationName: 'Nobody Time', functionValue: executorProperty.functionValue, code: 'presence_time', operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), ); break; case 'switch_alarm_sound': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsSwitchAlarmSound, operationName: 'Switch Alarm Sound', functionValue: executorProperty.functionValue, code: 'switch_alarm_sound', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), ); break; case 'master_state': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsMasterState, operationName: 'Master State', functionValue: executorProperty.functionValue, code: 'master_state', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "Alarm", value: 'alarm', ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "Normal", value: 'normal', ), ], ), ); break; case 'factory_reset': functions.add( SceneStaticFunction( deviceId: action.entityId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsFactoryReset, operationName: 'Reset Factory', functionValue: executorProperty.functionValue, code: 'factory_reset', operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsResetOff, description: "OFF", value: false, ), ], ), ); break; case 'switch_1': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, operationName: 'Light 1 Switch', code: 'switch_1', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: null, ), ], )); break; case 'switch_2': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, operationName: 'Light 2 Switch', code: 'switch_2', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: null, ), ], )); break; case 'switch_3': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, operationName: 'Light 3 Switch', code: 'switch_3', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: null, ), ], )); break; case 'countdown_1': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, operationName: 'Light 1 CountDown', code: 'countdown_1', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], )); break; case 'countdown_2': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, operationName: 'Light 2 CountDown', code: 'countdown_2', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], )); break; case 'countdown_3': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, operationName: 'Light 3 CountDown', code: 'countdown_3', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], )); break; case 'switch': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsAcPower, operationName: 'Power', code: 'switch', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], )); break; case 'temp_set': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsTempreture, operationName: 'Set Temperature', code: 'temp_set', functionValue: executorProperty.functionValue != null ? ((executorProperty.functionValue! / 10) as double).toInt() : null, operationalValues: [ SceneOperationalValue( icon: Assets.assetsCelsiusDegrees, value: 0, description: 'COOL TO', ), ], )); break; case 'mode': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFreezing, operationName: 'Mode', code: 'mode', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcCooling, description: AcValuesEnums.Cooling.name, value: TempModes.cold.name, ), SceneOperationalValue( icon: Assets.assetsAcHeating, description: AcValuesEnums.Heating.name, value: TempModes.hot.name, ), SceneOperationalValue( icon: Assets.assetsFanSpeed, description: AcValuesEnums.Ventilation.name, value: TempModes.wind.name, ), ], )); break; case 'level': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFanSpeed, operationName: 'Fan Speed', code: 'level', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcFanLow, description: ValueACRange.LOW.name, value: FanSpeeds.low.name, ), SceneOperationalValue( icon: Assets.assetsAcFanMiddle, description: ValueACRange.MIDDLE.name, value: FanSpeeds.middle.name, ), SceneOperationalValue( icon: Assets.assetsAcFanHigh, description: ValueACRange.HIGH.name, value: FanSpeeds.high.name, ), SceneOperationalValue( icon: Assets.assetsAcFanAuto, description: ValueACRange.AUTO.name, value: FanSpeeds.auto.name, ), ], )); break; case 'child_lock': functions.add(SceneStaticFunction( deviceId: action.entityId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsChildLock, operationName: 'Child Lock', code: 'child_lock', functionValue: executorProperty.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneChildLock, description: 'Lock', value: true, ), SceneOperationalValue( icon: Assets.assetsSceneChildUnlock, description: 'Unlock', value: false, ), ], )); break; default: } } return functions; } ///// END of get fucntion for once device based on the CODE ***** /////// /// /// /// List getOperationsForOneFunction({ required String deviceId, required SceneStaticFunction taskItem, }) { List functions = []; switch (taskItem.code) { case 'sensitivity': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsSensitivityFunction, operationName: 'Sensitivity', code: 'sensitivity', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 1, description: 1.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 2, description: 2.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 3, description: 3.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 4, description: 4.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 5, description: 5.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 6, description: 6.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 7, description: 7.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 8, description: 8.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 9, description: 9.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 10, description: 10.toString(), ), ], ), ); break; case 'normal_open_switch': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'WIFI LOCK PRO', deviceIcon: Assets.assetsIconsDoorLock, icon: Assets.assetsIconsDoorLock, operationName: 'Set Door lock Normal Open', functionValue: taskItem.functionValue, code: 'normal_open_switch', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ), ); break; case 'far_detection': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsFarDetection, operationName: 'Far Detection', functionValue: taskItem.functionValue, code: 'far_detection', operationalValues: [ SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 75, description: '75cm', iconValue: '75', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 150, description: '150cm', iconValue: '150', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 225, description: '225cm', iconValue: '225', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 300, description: '300cm', iconValue: '300', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 375, description: '375cm', iconValue: '375', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 450, description: '450cm', iconValue: '450', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 525, description: '525cm', iconValue: '525', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 600, description: '600cm', iconValue: '600', ), ], ), ); break; case 'motion_sensitivity_value': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionDetection, operationName: 'Motion Detection Sensitivity', functionValue: taskItem.functionValue, code: 'motion_sensitivity_value', operationalValues: [ SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 1, description: 1.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 2, description: 2.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 3, description: 3.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 4, description: 4.toString(), ), SceneOperationalValue( icon: Assets.assetsSensitivityOperationIcon, value: 5, description: 5.toString(), ), ], ), ); break; case 'motionless_sensitivity': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionlessDetection, operationName: 'Motionless Detection Sensitivity', functionValue: taskItem.functionValue, code: 'motion_sensitivity_value', operationalValues: [ SceneOperationalValue( iconValue: '1', icon: Assets.assetsFarDetectionFunction, value: 1, description: '1', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 2, description: '2', iconValue: '2', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 3, description: '3', iconValue: '3', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 4, description: '4', iconValue: '4', ), SceneOperationalValue( icon: Assets.assetsFarDetectionFunction, value: 5, description: '5', iconValue: '5', ), ], ), ); break; case 'indicator': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsIndicator, operationName: 'Indicator', functionValue: taskItem.functionValue, code: 'indicator', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ), ); break; case 'presence_time': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsNobodyTime, operationName: 'Nobody Time', functionValue: taskItem.functionValue, code: 'presence_time', operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ), ); break; case 'switch_alarm_sound': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsSwitchAlarmSound, operationName: 'Switch Alarm Sound', functionValue: taskItem.functionValue, code: 'switch_alarm_sound', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ), ); break; case 'master_state': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsMasterState, operationName: 'Master State', functionValue: taskItem.functionValue, code: 'master_state', operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "Alarm", value: 'alarm', ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "Normal", value: 'normal', ), ], ), ); break; case 'factory_reset': functions.add( SceneStaticFunction( deviceId: deviceId, deviceName: 'Multi-Mode Gateway Z-W-B', deviceIcon: Assets.assetsIconsGateway, icon: Assets.assetsFactoryReset, operationName: 'Reset Factory', functionValue: taskItem.functionValue, code: 'factory_reset', operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsResetOff, description: "OFF", value: false, ), ], ), ); break; case 'switch_1': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, operationName: 'Light 1 Switch', code: 'switch_1', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: true, ), ], )); break; case 'switch_2': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, operationName: 'Light 2 Switch', code: 'switch_2', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: true, ), ], )); break; case 'switch_3': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsAcPower, operationName: 'Light 3 Switch', code: 'switch_3', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "Reverse Switch", value: true, ), ], )); break; case 'countdown_1': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, operationName: 'Light 1 CountDown', code: 'countdown_1', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], )); break; case 'countdown_2': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, operationName: 'Light 2 CountDown', code: 'countdown_2', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], )); break; case 'countdown_3': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: '3 Gang Button Switch L-L', deviceIcon: Assets.assetsIcons3GangSwitch, icon: Assets.assetsLightCountdown, operationName: 'Light 3 CountDown', code: 'countdown_3', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], )); break; case 'switch': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsAcPower, operationName: 'Power', code: 'switch', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], )); break; case 'temp_set': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsTempreture, operationName: 'Set Temperature', code: 'temp_set', functionValue: taskItem.functionValue != null ? ((taskItem.functionValue / 10) as double).toInt() : null, operationalValues: [ SceneOperationalValue( icon: Assets.assetsCelsiusDegrees, value: 0, description: 'COOL TO', ), ], )); break; case 'mode': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFreezing, operationName: 'Mode', code: 'mode', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcCooling, description: AcValuesEnums.Cooling.name, value: TempModes.cold.name, ), SceneOperationalValue( icon: Assets.assetsAcHeating, description: AcValuesEnums.Heating.name, value: TempModes.hot.name, ), SceneOperationalValue( icon: Assets.assetsFanSpeed, description: AcValuesEnums.Ventilation.name, value: TempModes.wind.name, ), ], )); break; case 'level': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFanSpeed, operationName: 'Fan Speed', code: 'level', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcFanLow, description: ValueACRange.LOW.name, value: FanSpeeds.low.name, ), SceneOperationalValue( icon: Assets.assetsAcFanMiddle, description: ValueACRange.MIDDLE.name, value: FanSpeeds.middle.name, ), SceneOperationalValue( icon: Assets.assetsAcFanHigh, description: ValueACRange.HIGH.name, value: FanSpeeds.high.name, ), SceneOperationalValue( icon: Assets.assetsAcFanAuto, description: ValueACRange.AUTO.name, value: FanSpeeds.auto.name, ), ], )); break; case 'child_lock': functions.add(SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsChildLock, operationName: 'Child Lock', code: 'child_lock', functionValue: taskItem.functionValue, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneChildLock, description: 'Lock', value: true, ), SceneOperationalValue( icon: Assets.assetsSceneChildUnlock, description: 'Unlock', value: false, ), ], )); break; default: } return functions; } }