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/enum/operation_dialog_type.dart'; import 'package:syncrow_app/features/scene/helper/functions_per_device/ac_functions.dart'; import 'package:syncrow_app/features/scene/helper/functions_per_device/door_lock_functions.dart'; import 'package:syncrow_app/features/scene/helper/functions_per_device/gateway_functions.dart'; import 'package:syncrow_app/features/scene/helper/functions_per_device/human_presence_functions.dart'; import 'package:syncrow_app/features/scene/helper/functions_per_device/presence_sensor.dart'; import 'package:syncrow_app/features/scene/helper/functions_per_device/three_gang_functions.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, required bool isAutomation, }) { switch (type) { case DeviceType.LightBulb: return lightBulbFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); case DeviceType.CeilingSensor: return ceilingSensorFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); case DeviceType.WallSensor: return wallSensorFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); case DeviceType.AC: return acFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); case DeviceType.DoorLock: return doorLockFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); case DeviceType.Curtain: return curtainFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); case DeviceType.ThreeGang: return threeGangFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); case DeviceType.Gateway: return gatewayFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); default: return lightBulbFunctions( functions: functions, deviceId: deviceId, deviceName: deviceName, functionValue: null, isAutomation: isAutomation, ); } } 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, required bool isAutomation, }) { if (isAutomation) { return PresenceSensorHelperFunctions.automationPresenceSensorFunctions( deviceId, deviceName, functionValue); } return PresenceSensorHelperFunctions.tabToRunPresenceSensorFunctions( deviceId, deviceName, functionValue); } List curtainFunctions( {required List functions, required String deviceId, required String deviceName, required functionValue, required bool isAutomation}) { return []; } List doorLockFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, required bool isAutomation, }) { if (isAutomation) { return DoorLockHelperFunctions.doorLockAutomationFunctions( deviceId, deviceName, functionValue); } return DoorLockHelperFunctions.doorLockTapToRunFunctions( deviceId, deviceName, functionValue); } List wallSensorFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, required bool isAutomation, }) { if (isAutomation) { return HumanPresenceHelperFunctions.automationHumanPresenceFunctions( deviceId, deviceName, functionValue); } return HumanPresenceHelperFunctions.tabToRunHumanPresenceFunctions( deviceId, deviceName, functionValue); } List lightBulbFunctions( {required List functions, required String deviceId, required String deviceName, required functionValue, required bool isAutomation}) { return []; } List gatewayFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, required bool isAutomation, }) { return GatewayHelperFunctions.tabToRunGatewayFunctions( deviceId, deviceName, functionValue); } List threeGangFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, required bool isAutomation, }) { if (isAutomation) { return ThreeGangHelperFunctions.threeGangAutomationFunctions( deviceId, deviceName, functionValue); } return ThreeGangHelperFunctions.threeGangHelperFunctions( deviceId, deviceName, functionValue); } /// smart ac thermostat List acFunctions({ required List functions, required String deviceId, required String deviceName, required functionValue, required bool isAutomation, }) { if (isAutomation) { return ACFunctionsHelper.automationAcFunctions( deviceId, deviceName, functionValue); } return ACFunctionsHelper.tabToRunAcFunctions( deviceId, deviceName, functionValue); } ///////&************ 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', operationDialogType: OperationDialogType.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, operationDialogType: OperationDialogType.listOfOptions, 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', operationDialogType: OperationDialogType.onOff, 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', operationDialogType: OperationDialogType.listOfOptions, 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', operationDialogType: OperationDialogType.listOfOptions, 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', operationDialogType: OperationDialogType.listOfOptions, 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', operationDialogType: OperationDialogType.onOff, 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', operationDialogType: OperationDialogType.temperature, 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', operationDialogType: OperationDialogType.onOff, 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', operationDialogType: OperationDialogType.listOfOptions, 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', operationDialogType: OperationDialogType.onOff, 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, operationDialogType: OperationDialogType.onOff, 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, operationDialogType: OperationDialogType.onOff, 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, operationDialogType: OperationDialogType.onOff, 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, operationDialogType: OperationDialogType.countdown, 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, operationDialogType: OperationDialogType.countdown, 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, operationDialogType: OperationDialogType.countdown, 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, operationDialogType: OperationDialogType.onOff, 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, operationDialogType: OperationDialogType.temperature, 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, operationDialogType: OperationDialogType.listOfOptions, 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, operationDialogType: OperationDialogType.listOfOptions, 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, operationDialogType: OperationDialogType.onOff, 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 = []; if (deviceId.contains('delay')) { functions.add( SceneStaticFunction( deviceId: taskItem.deviceId, deviceName: 'delay', deviceIcon: Assets.delay, icon: Assets.delay, operationName: 'delay', functionValue: taskItem.functionValue, code: '', operationDialogType: OperationDialogType.delay, operationalValues: [ SceneOperationalValue( icon: '', description: "", value: 0, ), ], ), ); return functions; } switch (taskItem.code) { case 'sensitivity': functions.add( sensitivityFunctionsBasedOnCodeMatch(deviceId, taskItem), ); break; case 'normal_open_switch': functions.add( normalOpenSwitchBasedOnCodeMatch(deviceId, taskItem), ); break; case 'far_detection': functions.add( farDetectionBasedOnCodeMatch(deviceId, taskItem), ); break; case 'motion_sensitivity_value': functions.add( motionSensitivityValueBasedOnCodeMatch(deviceId, taskItem), ); break; case 'motionless_sensitivity': functions.add( motionlessSensitivityBasedOnCodeMatch(deviceId, taskItem), ); break; case 'indicator': functions.add( indicatorBasedOnCodeMatch(deviceId, taskItem), ); break; case 'presence_time': functions.add( presenceTimeBasedOnCodeMatch(deviceId, taskItem), ); break; case 'switch_alarm_sound': functions.add( switchAlarmSoundBasedOnCodeMatch(deviceId, taskItem), ); break; case 'master_state': functions.add( masterStateBasedOnCodeMatch(deviceId, taskItem), ); break; case 'factory_reset': functions.add( factoryResetBasedOnCodeMatch(deviceId, taskItem), ); break; case 'switch_1': functions.add( switch1BasedOnCodeMatch(deviceId, taskItem), ); break; case 'switch_2': functions.add( switch2BasedOnCodeMatch(deviceId, taskItem), ); break; case 'switch_3': functions.add( switch3BasedOnCodeMatch(deviceId, taskItem), ); break; case 'countdown_1': functions.add( countdown1BasedOnCodeMatch(deviceId, taskItem), ); break; case 'countdown_2': functions.add( countdown2BasedOnCodeMatch(deviceId, taskItem), ); break; case 'countdown_3': functions.add( countdown3BasedOnCodeMatch(deviceId, taskItem), ); break; case 'switch': functions.add( switchBasedOnCodeMatch(deviceId, taskItem), ); break; case 'temp_set': functions.add( tempSetBasedOnCodeMatch(deviceId, taskItem), ); break; case 'mode': functions.add( modeBasedOnCodeMatch(deviceId, taskItem), ); break; case 'level': functions.add( levelBasedOnCodeMatch(deviceId, taskItem), ); break; case 'child_lock': functions.add( childLockBasedOnCodeMatch(deviceId, taskItem), ); break; default: } return functions; } SceneStaticFunction childLockBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneChildLock, description: 'Lock', value: true, ), SceneOperationalValue( icon: Assets.assetsSceneChildUnlock, description: 'Unlock', value: false, ), ], ); } SceneStaticFunction levelBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFanSpeed, operationName: 'Fan Speed', code: 'level', functionValue: taskItem.functionValue, operationDialogType: OperationDialogType.listOfOptions, 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 modeBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsFreezing, operationName: 'Mode', code: 'mode', functionValue: taskItem.functionValue, operationDialogType: OperationDialogType.listOfOptions, 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 tempSetBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.temperature, operationalValues: [ SceneOperationalValue( icon: Assets.assetsCelsiusDegrees, value: 0, description: 'COOL TO', ), ], ); } SceneStaticFunction switchBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Smart AC Thermostat - Grey - Model A', deviceIcon: Assets.assetsIconsAC, icon: Assets.assetsAcPower, operationName: 'Power', code: 'switch', functionValue: taskItem.functionValue, operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ); } SceneStaticFunction countdown3BasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.countdown, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ); } SceneStaticFunction countdown2BasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.countdown, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ); } SceneStaticFunction countdown1BasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.countdown, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ); } SceneStaticFunction switch3BasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ); } SceneStaticFunction switch2BasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ); } SceneStaticFunction switch1BasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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, operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ); } SceneStaticFunction factoryResetBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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', operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsSceneRefresh, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsResetOff, description: "OFF", value: false, ), ], ); } SceneStaticFunction masterStateBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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', operationDialogType: OperationDialogType.listOfOptions, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "Alarm", value: 'alarm', ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "Normal", value: 'normal', ), ], ); } SceneStaticFunction switchAlarmSoundBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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', operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true, ), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false), ], ); } SceneStaticFunction presenceTimeBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsNobodyTime, operationName: 'Nobody Time', functionValue: taskItem.functionValue, code: 'presence_time', operationDialogType: OperationDialogType.temperature, operationalValues: [ SceneOperationalValue(icon: '', value: 0), ], ); } SceneStaticFunction indicatorBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsIndicator, operationName: 'Indicator', functionValue: taskItem.functionValue, code: 'indicator', operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ); } SceneStaticFunction motionlessSensitivityBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionlessDetection, operationName: 'Motionless Detection Sensitivity', functionValue: taskItem.functionValue, code: 'motion_sensitivity_value', operationDialogType: OperationDialogType.listOfOptions, 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 motionSensitivityValueBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsMotionDetection, operationName: 'Motion Detection Sensitivity', functionValue: taskItem.functionValue, code: 'motion_sensitivity_value', operationDialogType: OperationDialogType.listOfOptions, 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 farDetectionBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Human Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsFarDetection, operationName: 'Far Detection', functionValue: taskItem.functionValue, code: 'far_detection', operationDialogType: OperationDialogType.listOfOptions, 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 normalOpenSwitchBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return 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', operationDialogType: OperationDialogType.onOff, operationalValues: [ SceneOperationalValue( icon: Assets.assetsAcPower, description: "ON", value: true), SceneOperationalValue( icon: Assets.assetsAcPowerOFF, description: "OFF", value: false, ), ], ); } SceneStaticFunction sensitivityFunctionsBasedOnCodeMatch( String deviceId, SceneStaticFunction taskItem) { return SceneStaticFunction( deviceId: deviceId, deviceName: 'Presence Sensor', deviceIcon: Assets.assetsIconsSensors, icon: Assets.assetsSensitivityFunction, operationName: 'Sensitivity', code: 'sensitivity', functionValue: taskItem.functionValue, operationDialogType: OperationDialogType.listOfOptions, 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(), ), ], ); } }