finished AC

This commit is contained in:
ashrafzarkanisala
2024-08-26 19:32:11 +03:00
parent afee0eb5b1
commit 2777dc1a5f
14 changed files with 445 additions and 446 deletions

View File

@ -5,83 +5,114 @@ enum TempModes { hot, cold, wind }
enum FanSpeeds { auto, low, middle, high }
class AcStatusModel {
String uuid;
bool acSwitch;
String modeString;
int tempSet;
int currentTemp;
String fanSpeedsString;
bool childLock;
late TempModes acMode;
late FanSpeeds acFanSpeed;
final String uuid;
final bool acSwitch;
final String modeString;
final int tempSet;
final int currentTemp;
final String fanSpeedsString;
final bool childLock;
final TempModes acMode;
final FanSpeeds acFanSpeed;
AcStatusModel(
{required this.uuid,
required this.acSwitch,
required this.modeString,
required this.tempSet,
required this.currentTemp,
required this.fanSpeedsString,
required this.childLock}) {
acMode = getACMode(modeString);
acFanSpeed = getFanSpeed(fanSpeedsString);
}
AcStatusModel({
required this.uuid,
required this.acSwitch,
required this.modeString,
required this.tempSet,
required this.currentTemp,
required this.fanSpeedsString,
required this.childLock,
}) : acMode = getACMode(modeString),
acFanSpeed = getFanSpeed(fanSpeedsString);
factory AcStatusModel.fromJson(String id, List<Status> jsonList) {
late bool _acSwitch;
late String _mode;
late int _tempSet;
late int _currentTemp;
late String _fanSpeeds;
late bool _childLock;
for (int i = 0; i < jsonList.length; i++) {
if (jsonList[i].code == 'switch') {
_acSwitch = jsonList[i].value ?? false;
} else if (jsonList[i].code == 'mode') {
_mode = jsonList[i].value ?? TempModes.cold;
} else if (jsonList[i].code == 'temp_set') {
_tempSet = jsonList[i].value ?? 210;
} else if (jsonList[i].code == 'temp_current') {
_currentTemp = jsonList[i].value ?? 210;
} else if (jsonList[i].code == 'level') {
_fanSpeeds = jsonList[i].value ?? 210;
} else if (jsonList[i].code == 'child_lock') {
_childLock = jsonList[i].value ?? false;
late bool acSwitch;
late String mode;
late int tempSet;
late int currentTemp;
late String fanSpeeds;
late bool childLock;
for (var status in jsonList) {
switch (status.code) {
case 'switch':
acSwitch = status.value ?? false;
break;
case 'mode':
mode = status.value ?? 'cold'; // default to 'cold' if null
break;
case 'temp_set':
tempSet = status.value ?? 210; // default value if null
break;
case 'temp_current':
currentTemp = status.value ?? 210; // default value if null
break;
case 'level':
fanSpeeds = status.value ?? 'low'; // default value if null
break;
case 'child_lock':
childLock = status.value ?? false;
break;
}
}
return AcStatusModel(
uuid: id,
acSwitch: _acSwitch,
modeString: _mode,
tempSet: _tempSet,
currentTemp: _currentTemp,
fanSpeedsString: _fanSpeeds,
childLock: _childLock);
uuid: id,
acSwitch: acSwitch,
modeString: mode,
tempSet: tempSet,
currentTemp: currentTemp,
fanSpeedsString: fanSpeeds,
childLock: childLock,
);
}
AcStatusModel copyWith({
String? uuid,
bool? acSwitch,
String? modeString,
int? tempSet,
int? currentTemp,
String? fanSpeedsString,
bool? childLock,
}) {
return AcStatusModel(
uuid: uuid ?? this.uuid,
acSwitch: acSwitch ?? this.acSwitch,
modeString: modeString ?? this.modeString,
tempSet: tempSet ?? this.tempSet,
currentTemp: currentTemp ?? this.currentTemp,
fanSpeedsString: fanSpeedsString ?? this.fanSpeedsString,
childLock: childLock ?? this.childLock,
);
}
static TempModes getACMode(String value) {
if (value == 'cold') {
return TempModes.cold;
} else if (value == 'hot') {
return TempModes.hot;
} else if (value == 'wind') {
return TempModes.wind;
} else {
return TempModes.cold;
switch (value) {
case 'cold':
return TempModes.cold;
case 'hot':
return TempModes.hot;
case 'wind':
return TempModes.wind;
default:
return TempModes.cold;
}
}
static FanSpeeds getFanSpeed(String value) {
if (value == 'low') {
return FanSpeeds.low;
} else if (value == 'middle') {
return FanSpeeds.middle;
} else if (value == 'high') {
return FanSpeeds.high;
} else if (value == 'auto') {
return FanSpeeds.auto;
} else {
return FanSpeeds.auto;
switch (value) {
case 'low':
return FanSpeeds.low;
case 'middle':
return FanSpeeds.middle;
case 'high':
return FanSpeeds.high;
case 'auto':
return FanSpeeds.auto;
default:
return FanSpeeds.auto;
}
}
}