114 lines
4.3 KiB
Dart
114 lines
4.3 KiB
Dart
part of '../main.dart';
|
|
|
|
class ClimateEntity extends Entity {
|
|
|
|
@override
|
|
EntityHistoryConfig historyConfig = EntityHistoryConfig(
|
|
chartType: EntityHistoryWidgetType.numericAttributes,
|
|
numericState: false,
|
|
numericAttributesToShow: ["current_temperature"]
|
|
);
|
|
|
|
static const SUPPORT_TARGET_TEMPERATURE = 1;
|
|
static const SUPPORT_TARGET_TEMPERATURE_RANGE = 2;
|
|
static const SUPPORT_TARGET_HUMIDITY = 4;
|
|
static const SUPPORT_FAN_MODE = 8;
|
|
static const SUPPORT_PRESET_MODE = 16;
|
|
static const SUPPORT_SWING_MODE = 32;
|
|
static const SUPPORT_AUX_HEAT = 64;
|
|
|
|
|
|
//static const SUPPORT_OPERATION_MODE = 16;
|
|
//static const SUPPORT_HOLD_MODE = 256;
|
|
//static const SUPPORT_AWAY_MODE = 1024;
|
|
//static const SUPPORT_ON_OFF = 4096;
|
|
|
|
ClimateEntity(Map rawData, String webHost) : super(rawData, webHost);
|
|
|
|
bool get supportTargetTemperature => ((supportedFeatures &
|
|
ClimateEntity.SUPPORT_TARGET_TEMPERATURE) ==
|
|
ClimateEntity.SUPPORT_TARGET_TEMPERATURE);
|
|
bool get supportTargetTemperatureRange => ((supportedFeatures &
|
|
ClimateEntity.SUPPORT_TARGET_TEMPERATURE_RANGE) ==
|
|
ClimateEntity.SUPPORT_TARGET_TEMPERATURE_RANGE);
|
|
bool get supportTargetHumidity => ((supportedFeatures &
|
|
ClimateEntity.SUPPORT_TARGET_HUMIDITY) ==
|
|
ClimateEntity.SUPPORT_TARGET_HUMIDITY);
|
|
bool get supportFanMode =>
|
|
((supportedFeatures & ClimateEntity.SUPPORT_FAN_MODE) ==
|
|
ClimateEntity.SUPPORT_FAN_MODE);
|
|
bool get supportSwingMode =>
|
|
((supportedFeatures & ClimateEntity.SUPPORT_SWING_MODE) ==
|
|
ClimateEntity.SUPPORT_SWING_MODE);
|
|
bool get supportPresetMode =>
|
|
((supportedFeatures & ClimateEntity.SUPPORT_PRESET_MODE) ==
|
|
ClimateEntity.SUPPORT_PRESET_MODE);
|
|
bool get supportAuxHeat =>
|
|
((supportedFeatures & ClimateEntity.SUPPORT_AUX_HEAT) ==
|
|
ClimateEntity.SUPPORT_AUX_HEAT);
|
|
|
|
List<String> get hvacModes => attributes["hvac_modes"] != null
|
|
? (attributes["hvac_modes"] as List).cast<String>()
|
|
: null;
|
|
List<String> get fanModes => attributes["fan_modes"] != null
|
|
? (attributes["fan_modes"] as List).cast<String>()
|
|
: null;
|
|
List<String> get presetModes => attributes["preset_modes"] != null
|
|
? (attributes["preset_modes"] as List).cast<String>()
|
|
: null;
|
|
List<String> get swingModes => attributes["swing_modes"] != null
|
|
? (attributes["swing_modes"] as List).cast<String>()
|
|
: null;
|
|
double get temperature => _getDoubleAttributeValue('temperature');
|
|
double get currentTemperature => _getDoubleAttributeValue('current_temperature');
|
|
double get targetHigh => _getDoubleAttributeValue('target_temp_high');
|
|
double get targetLow => _getDoubleAttributeValue('target_temp_low');
|
|
double get maxTemp => _getDoubleAttributeValue('max_temp') ?? 100.0;
|
|
double get minTemp => _getDoubleAttributeValue('min_temp') ?? -100.0;
|
|
double get targetHumidity => _getDoubleAttributeValue('humidity');
|
|
double get maxHumidity => _getDoubleAttributeValue('max_humidity');
|
|
double get minHumidity => _getDoubleAttributeValue('min_humidity');
|
|
double get temperatureStep => _getDoubleAttributeValue('target_temp_step') ?? 0.5;
|
|
String get hvacAction => attributes['hvac_action'];
|
|
String get fanMode => attributes['fan_mode'];
|
|
String get presetMode => attributes['preset_mode'];
|
|
String get swingMode => attributes['swing_mode'];
|
|
bool get awayMode => attributes['away_mode'] == "on";
|
|
//bool get isOff => state == EntityState.off;
|
|
bool get auxHeat => attributes['aux_heat'] == "on";
|
|
|
|
@override
|
|
void update(Map rawData, String webHost) {
|
|
super.update(rawData, webHost);
|
|
if (supportTargetTemperature) {
|
|
historyConfig.numericAttributesToShow.add("temperature");
|
|
}
|
|
if (supportTargetTemperatureRange) {
|
|
historyConfig.numericAttributesToShow.add("target_temp_high");
|
|
historyConfig.numericAttributesToShow.add("target_temp_low");
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget _buildStatePart(BuildContext context) {
|
|
return ClimateStateWidget();
|
|
}
|
|
|
|
@override
|
|
Widget _buildAdditionalControlsForPage(BuildContext context) {
|
|
return ClimateControlWidget();
|
|
}
|
|
|
|
@override
|
|
double _getDoubleAttributeValue(String attributeName) {
|
|
var temp1 = attributes["$attributeName"];
|
|
if (temp1 is int) {
|
|
return temp1.toDouble();
|
|
} else if (temp1 is double) {
|
|
return temp1;
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
} |