mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-11-27 05:44:55 +00:00
Add FunctionType enum and ValueModel class
- Added FunctionType enum with values Boolean, Enum, Integer, Raw, String. - Introduced ValueModel class to handle unit, min, max, scale, and step values for functions in FunctionModel.
This commit is contained in:
@ -1,7 +1,9 @@
|
|||||||
|
import 'package:syncrow_app/utils/resource_manager/constants.dart';
|
||||||
|
|
||||||
class FunctionModel {
|
class FunctionModel {
|
||||||
String? code;
|
String? code;
|
||||||
String? type;
|
FunctionType? type;
|
||||||
String? values;
|
ValueModel? values;
|
||||||
|
|
||||||
FunctionModel({
|
FunctionModel({
|
||||||
required this.code,
|
required this.code,
|
||||||
@ -25,3 +27,41 @@ class FunctionModel {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//"values": "{\"unit\":\"\",\"min\":1,\"max\":10,\"scale\":0,\"step\":1}",
|
||||||
|
|
||||||
|
class ValueModel {
|
||||||
|
String? unit;
|
||||||
|
int? min;
|
||||||
|
int? max;
|
||||||
|
int? scale;
|
||||||
|
int? step;
|
||||||
|
|
||||||
|
ValueModel({
|
||||||
|
required this.unit,
|
||||||
|
required this.min,
|
||||||
|
required this.max,
|
||||||
|
required this.scale,
|
||||||
|
required this.step,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory ValueModel.fromJson(Map<String, dynamic> json) {
|
||||||
|
return ValueModel(
|
||||||
|
unit: json['unit'],
|
||||||
|
min: json['min'],
|
||||||
|
max: json['max'],
|
||||||
|
scale: json['scale'],
|
||||||
|
step: json['step'],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
return {
|
||||||
|
'unit': unit,
|
||||||
|
'min': min,
|
||||||
|
'max': max,
|
||||||
|
'scale': scale,
|
||||||
|
'step': step,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -50,7 +50,15 @@ enum DeviceType {
|
|||||||
// DL awu7anehyu5q1iu8
|
// DL awu7anehyu5q1iu8
|
||||||
// WPS awarhusb
|
// WPS awarhusb
|
||||||
// 3G 1a6vgvyi
|
// 3G 1a6vgvyi
|
||||||
|
enum FunctionType { Boolean, Enum, Integer, Raw, String }
|
||||||
|
|
||||||
|
Map<String, FunctionType> functionTypesMap = {
|
||||||
|
"Boolean": FunctionType.Boolean,
|
||||||
|
"Enum": FunctionType.Enum,
|
||||||
|
"Integer": FunctionType.Integer,
|
||||||
|
"Raw": FunctionType.Raw,
|
||||||
|
"String": FunctionType.String,
|
||||||
|
};
|
||||||
Map<String, DeviceType> devicesTypesMap = {
|
Map<String, DeviceType> devicesTypesMap = {
|
||||||
"wzdcrqh0": DeviceType.AC,
|
"wzdcrqh0": DeviceType.AC,
|
||||||
"wp8ticoo2bhumwgb": DeviceType.Gateway,
|
"wp8ticoo2bhumwgb": DeviceType.Gateway,
|
||||||
@ -61,75 +69,127 @@ Map<String, DeviceType> devicesTypesMap = {
|
|||||||
};
|
};
|
||||||
Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
||||||
DeviceType.AC: [
|
DeviceType.AC: [
|
||||||
FunctionModel(code: 'switch', type: 'Boolean', values: '{}'),
|
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'mode', type: 'Enum', values: '{"range":["cold","hot","wind"]}'),
|
code: 'switch',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'mode',
|
||||||
|
type: functionTypesMap['Enum'],
|
||||||
|
values: ValueModel.fromJson({
|
||||||
|
"range": ["cold", "hot", "wind"]
|
||||||
|
})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'temp_set',
|
code: 'temp_set',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"℃","min":200,"max":300,"scale":1,"step":5}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "℃", "min": 200, "max": 300, "scale": 1, "step": 5})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'level',
|
code: 'level',
|
||||||
type: 'Enum',
|
type: functionTypesMap['Enum'],
|
||||||
values: '{"range":["low","middle","high","auto"]}'),
|
values: ValueModel.fromJson({
|
||||||
FunctionModel(code: 'child_lock', type: 'Boolean', values: '{}'),
|
"range": ["low", "middle", "high", "auto"]
|
||||||
|
})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'child_lock',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
],
|
],
|
||||||
DeviceType.Gateway: [
|
DeviceType.Gateway: [
|
||||||
FunctionModel(code: 'switch_alarm_sound', type: 'Boolean', values: '{}'),
|
FunctionModel(
|
||||||
|
code: 'switch_alarm_sound',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'master_state',
|
code: 'master_state',
|
||||||
type: 'Enum',
|
type: functionTypesMap['Enum'],
|
||||||
values: '{"range":["normal","alarm"]}'),
|
values: ValueModel.fromJson({
|
||||||
FunctionModel(code: 'factory_reset', type: 'Boolean', values: '{}'),
|
"range": ["normal", "alarm"]
|
||||||
|
})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'alarm_active', type: 'String', values: '{"maxlen":255}'),
|
code: 'factory_reset',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'alarm_active',
|
||||||
|
type: functionTypesMap['String'],
|
||||||
|
values: ValueModel.fromJson({"maxlen": 255})),
|
||||||
],
|
],
|
||||||
DeviceType.CeilingSensor: [
|
DeviceType.CeilingSensor: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'sensitivity',
|
code: 'sensitivity',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"","min":1,"max":10,"scale":0,"step":1}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "", "min": 1, "max": 10, "scale": 0, "step": 1})),
|
||||||
],
|
],
|
||||||
DeviceType.DoorLock: [
|
DeviceType.DoorLock: [
|
||||||
FunctionModel(code: 'remote_no_pd_setkey', type: 'Raw', values: '{}'),
|
FunctionModel(
|
||||||
FunctionModel(code: 'remote_no_dp_key', type: 'Raw', values: '{}'),
|
code: 'remote_no_pd_setkey',
|
||||||
FunctionModel(code: 'normal_open_switch', type: 'Boolean', values: '{}'),
|
type: functionTypesMap['Raw'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'remote_no_dp_key',
|
||||||
|
type: functionTypesMap['Raw'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'normal_open_switch',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
],
|
],
|
||||||
DeviceType.WallSensor: [
|
DeviceType.WallSensor: [
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'far_detection',
|
code: 'far_detection',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"cm","min":75,"max":600,"scale":0,"step":75}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "cm", "min": 75, "max": 600, "scale": 0, "step": 75})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'presence_time',
|
code: 'presence_time',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"Min","min":0,"max":65535,"scale":0,"step":1}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "Min", "min": 0, "max": 65535, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'motion_sensitivity_value',
|
code: 'motion_sensitivity_value',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"","min":1,"max":5,"scale":0,"step":1}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "", "min": 1, "max": 5, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'motionless_sensitivity',
|
code: 'motionless_sensitivity',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"","min":1,"max":5,"scale":0,"step":1}'),
|
values: ValueModel.fromJson(
|
||||||
FunctionModel(code: 'indicator', type: 'Boolean', values: '{}'),
|
{"unit": "", "min": 1, "max": 5, "scale": 0, "step": 1})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'indicator',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
],
|
],
|
||||||
DeviceType.ThreeGang: [
|
DeviceType.ThreeGang: [
|
||||||
FunctionModel(code: 'switch_1', type: 'Boolean', values: '{}'),
|
FunctionModel(
|
||||||
FunctionModel(code: 'switch_2', type: 'Boolean', values: '{}'),
|
code: 'switch_1',
|
||||||
FunctionModel(code: 'switch_3', type: 'Boolean', values: '{}'),
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'switch_2',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
|
FunctionModel(
|
||||||
|
code: 'switch_3',
|
||||||
|
type: functionTypesMap['Boolean'],
|
||||||
|
values: ValueModel.fromJson({})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_1',
|
code: 'countdown_1',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"s","min":0,"max":43200,"scale":0,"step":1}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_2',
|
code: 'countdown_2',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"s","min":0,"max":43200,"scale":0,"step":1}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
FunctionModel(
|
FunctionModel(
|
||||||
code: 'countdown_3',
|
code: 'countdown_3',
|
||||||
type: 'Integer',
|
type: functionTypesMap['Integer'],
|
||||||
values: '{"unit":"s","min":0,"max":43200,"scale":0,"step":1}'),
|
values: ValueModel.fromJson(
|
||||||
|
{"unit": "s", "min": 0, "max": 43200, "scale": 0, "step": 1})),
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user