7static const char *
const TAG =
"mitsubishi_cn105.climate";
9static constexpr std::array MODE_MAP{
17static constexpr std::array FAN_MODE_MAP{
26template<
typename A,
typename B, std::
size_t N>
27static bool map_lookup(
const std::array<std::pair<A, B>, N> &map, A key, B &out) {
28 for (
const auto &[from, to] : map) {
37template<
typename Left,
typename Right, std::
size_t N>
38static constexpr std::optional<Left> reverse_map_lookup(
const std::array<std::pair<Left, Right>, N> &map, Right key) {
39 for (
const auto &entry : map) {
40 if (entry.second == key) {
47template<
typename Left,
typename Right, std::
size_t N>
48static constexpr std::optional<Left> reverse_map_lookup(
const std::array<std::pair<Left, Right>, N> &map,
49 const std::optional<Right> &key) {
50 return key.has_value() ? reverse_map_lookup(map, *key) : std::nullopt;
54 LOG_CLIMATE(
"",
"Mitsubishi CN105 Climate",
this);
56 ESP_LOGCONFIG(TAG,
" Current temperature min interval: %" PRIu32
" ms",
59 ESP_LOGCONFIG(TAG,
" Current temperature: DISABLED");
62 " Update interval: %" PRIu32
" ms\n"
63 " UART: baud_rate=%" PRIu32
" data_bits=%u parity=%s stop_bits=%u",
65 LOG_STR_ARG(parity_to_str(this->
parent_->
get_parity())), this->parent_->get_stop_bits());
79 for (
const auto &p : MODE_MAP) {
83 for (
const auto &p : FAN_MODE_MAP) {
109 }
else if (
const auto mapped = reverse_map_lookup(MODE_MAP, *
mode)) {
115 if (
const auto fan_mode = reverse_map_lookup(FAN_MODE_MAP,
call.get_fan_mode())) {
165 if (!map_lookup(MODE_MAP,
status.mode, this->mode)) {
166 ESP_LOGD(TAG,
"Unable to map mode");
176 ESP_LOGD(TAG,
"Unable to map fan mode");
180 bool vertical_swinging =
false;
181 bool horizontal_swinging =
false;
185 vertical_swinging =
true;
193 horizontal_swinging =
true;
199 if (vertical_swinging && horizontal_swinging) {
201 }
else if (vertical_swinging) {
203 }
else if (horizontal_swinging) {
BedjetMode mode
BedJet operating mode.
constexpr size_t count(ValueType value) const
Check if the set contains a specific value (std::set compatibility) Returns 1 if present,...
constexpr void clear()
Clear all values from the set.
constexpr void insert(ValueType value)
Add a single value to the set (std::set compatibility)
constexpr bool empty() const
Check if the set is empty.
This class is used to encode all control actions on a climate device.
const optional< ClimateSwingMode > & get_swing_mode() const
const optional< ClimateMode > & get_mode() const
ClimateMode mode
The active mode of the climate device.
optional< ClimateFanMode > fan_mode
The active fan mode of the climate device.
float target_temperature
The target temperature of the climate device.
ClimateSwingMode swing_mode
The active swing mode of the climate device.
float current_temperature
The current temperature of the climate device, as reported from the integration.
void publish_state()
Publish the state of the climate device, to be called from integrations.
void set_visual_max_temperature(float visual_max_temperature)
void add_feature_flags(uint32_t feature_flags)
void add_supported_fan_mode(ClimateFanMode mode)
void set_visual_temperature_step(float temperature_step)
void set_supported_swing_modes(ClimateSwingModeMask modes)
void set_visual_min_temperature(float visual_min_temperature)
void set_visual_current_temperature_step(float temperature_step)
void add_supported_mode(ClimateMode mode)
MitsubishiCN105::WideVaneMode last_non_swing_wide_vane_mode_
void control(const climate::ClimateCall &call) override
void dump_config() override
MitsubishiCN105::VaneMode last_non_swing_vane_mode_
climate::ClimateSwingModeMask supported_swing_modes_
climate::ClimateTraits traits() override
void set_supported_swing_mode(climate::ClimateSwingMode mode)
uint32_t get_update_interval() const
bool is_status_initialized() const
void set_power(bool power_on)
uint32_t get_room_temperature_min_interval() const
void set_wide_vane_mode(WideVaneMode mode)
void set_target_temperature(float target_temperature)
const Status & status() const
void set_fan_mode(FanMode fan_mode)
bool is_room_temperature_enabled() const
void set_vane_mode(VaneMode vane_mode)
UARTParityOptions get_parity() const
@ CLIMATE_SUPPORTS_CURRENT_TEMPERATURE
ClimateSwingMode
Enum for all modes a climate swing can be in NOTE: If adding values, update ClimateSwingModeMask in c...
@ CLIMATE_SWING_OFF
The swing mode is set to Off.
@ CLIMATE_SWING_HORIZONTAL
The fan mode is set to Horizontal.
@ CLIMATE_SWING_VERTICAL
The fan mode is set to Vertical.
@ CLIMATE_SWING_BOTH
The fan mode is set to Both.
@ CLIMATE_MODE_DRY
The climate device is set to dry/humidity mode.
@ CLIMATE_MODE_FAN_ONLY
The climate device only has the fan enabled, no heating or cooling is taking place.
@ CLIMATE_MODE_HEAT
The climate device is set to heat to reach the target temperature.
@ CLIMATE_MODE_COOL
The climate device is set to cool to reach the target temperature.
@ CLIMATE_MODE_HEAT_COOL
The climate device is set to heat/cool to reach the target temperature.
@ CLIMATE_MODE_OFF
The climate device is off.
ClimateFanMode
NOTE: If adding values, update ClimateFanModeMask in climate_traits.h to use the new last value.
@ CLIMATE_FAN_MEDIUM
The fan mode is set to Medium.
@ CLIMATE_FAN_AUTO
The fan mode is set to Auto.
@ CLIMATE_FAN_LOW
The fan mode is set to Low.
@ CLIMATE_FAN_MIDDLE
The fan mode is set to Middle.
@ CLIMATE_FAN_QUIET
The fan mode is set to Quiet.
@ CLIMATE_FAN_HIGH
The fan mode is set to High.