getThermostatTrait static method

ThermostatTrait getThermostatTrait(
  1. dynamic trait
)

Implementation

static ThermostatTrait getThermostatTrait(trait) {
  try {
    final Set<AvailableFanMode> availableFanMode =
        new Set<AvailableFanMode>.from(trait.properties.availableFanModes);

    final Set<AvailableThermostatMode> availableThermostatModes =
        new Set<AvailableThermostatMode>.from(
            trait.properties.availableThermostatModes);

    return ThermostatTrait(<State>{
      TargetTemperature(trait.state.targetTemperature.reported?.value),
      FanMode(trait.state.fanMode.reported?.value),
      ThermostatMode(trait.state.mode.reported?.value),
      AmbientTemperature(trait.state.ambientTemperature.reported?.value),
    }, {
      AvailableFanModes(availableFanMode),
      AvailableThermostatModes(availableThermostatModes),
      HeatSetPointRange(new TemperatureRange(
          min: trait.properties.heatSetPointRange?.min,
          max: trait.properties.heatSetPointRange?.max)),
      CoolSetPointRange(new TemperatureRange(
          min: trait.properties.coolSetPointRange?.min,
          max: trait.properties.coolSetPointRange?.max)),
    });
  } on NoSuchMethodError {
    throw ArgumentError.value(
        trait, 'ThermostatTrait', 'Invalid ThermostatTrait');
  }
}