Files
syncrow-app/lib/features/scene/helper/scene_operations_data_helper.dart
2024-07-16 22:30:12 +03:00

1632 lines
54 KiB
Dart

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<SceneStaticFunction> getFunctionsWithIcons({
DeviceType? type,
required List<FunctionModel> 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<SceneStaticFunction> ceilingSensorFunctions({
required List<FunctionModel> 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<SceneStaticFunction> curtainFunctions(
{required List<FunctionModel> functions,
required String deviceId,
required String deviceName,
required functionValue,
required bool isAutomation}) {
return [];
}
List<SceneStaticFunction> doorLockFunctions({
required List<FunctionModel> 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<SceneStaticFunction> wallSensorFunctions({
required List<FunctionModel> 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<SceneStaticFunction> lightBulbFunctions(
{required List<FunctionModel> functions,
required String deviceId,
required String deviceName,
required functionValue,
required bool isAutomation}) {
return [];
}
List<SceneStaticFunction> gatewayFunctions({
required List<FunctionModel> functions,
required String deviceId,
required String deviceName,
required functionValue,
required bool isAutomation,
}) {
return GatewayHelperFunctions.tabToRunGatewayFunctions(
deviceId, deviceName, functionValue);
}
List<SceneStaticFunction> threeGangFunctions({
required List<FunctionModel> 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<SceneStaticFunction> acFunctions({
required List<FunctionModel> 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<SceneStaticFunction> getTaskListFunctionsFromApi({
required List<Action> actions,
}) {
List<SceneStaticFunction> 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<SceneStaticFunction> getOperationsForOneFunction({
required String deviceId,
required SceneStaticFunction taskItem,
}) {
List<SceneStaticFunction> 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(),
),
],
);
}
}