mirror of
https://github.com/esphome/esphome.git
synced 2026-05-24 18:06:27 +08:00
[mitsubishi_cn105] Add climate component for Mitsubishi A/C units with CN105 connector (Part 1) (#15315)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
This commit is contained in:
@@ -331,6 +331,7 @@ esphome/components/mipi_dsi/* @clydebarrow
|
|||||||
esphome/components/mipi_rgb/* @clydebarrow
|
esphome/components/mipi_rgb/* @clydebarrow
|
||||||
esphome/components/mipi_spi/* @clydebarrow
|
esphome/components/mipi_spi/* @clydebarrow
|
||||||
esphome/components/mitsubishi/* @RubyBailey
|
esphome/components/mitsubishi/* @RubyBailey
|
||||||
|
esphome/components/mitsubishi_cn105/* @crnjan
|
||||||
esphome/components/mixer/speaker/* @kahrendt
|
esphome/components/mixer/speaker/* @kahrendt
|
||||||
esphome/components/mlx90393/* @functionpointer
|
esphome/components/mlx90393/* @functionpointer
|
||||||
esphome/components/mlx90614/* @jesserockz
|
esphome/components/mlx90614/* @jesserockz
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
import esphome.codegen as cg
|
||||||
|
from esphome.components import climate, uart
|
||||||
|
import esphome.config_validation as cv
|
||||||
|
from esphome.const import CONF_UPDATE_INTERVAL
|
||||||
|
from esphome.types import ConfigType
|
||||||
|
|
||||||
|
DEPENDENCIES = ["uart"]
|
||||||
|
AUTO_LOAD = ["climate"]
|
||||||
|
CODEOWNERS = ["@crnjan"]
|
||||||
|
|
||||||
|
mitsubishi_ns = cg.esphome_ns.namespace("mitsubishi_cn105")
|
||||||
|
|
||||||
|
MitsubishiCN105Climate = mitsubishi_ns.class_(
|
||||||
|
"MitsubishiCN105Climate",
|
||||||
|
climate.Climate,
|
||||||
|
cg.Component,
|
||||||
|
uart.UARTDevice,
|
||||||
|
)
|
||||||
|
|
||||||
|
CONFIG_SCHEMA = (
|
||||||
|
climate.climate_schema(MitsubishiCN105Climate)
|
||||||
|
.extend(uart.UART_DEVICE_SCHEMA)
|
||||||
|
.extend({cv.Optional(CONF_UPDATE_INTERVAL, default="1s"): cv.update_interval})
|
||||||
|
)
|
||||||
|
|
||||||
|
FINAL_VALIDATE_SCHEMA = cv.All(
|
||||||
|
uart.final_validate_device_schema(
|
||||||
|
"mitsubishi_cn105",
|
||||||
|
require_rx=True,
|
||||||
|
require_tx=True,
|
||||||
|
data_bits=8,
|
||||||
|
parity="EVEN",
|
||||||
|
stop_bits=1,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
async def to_code(config: ConfigType) -> None:
|
||||||
|
var = await climate.new_climate(config)
|
||||||
|
await cg.register_component(var, config)
|
||||||
|
await uart.register_uart_device(var, config)
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#include "mitsubishi_cn105.h"
|
||||||
|
|
||||||
|
namespace esphome::mitsubishi_cn105 {
|
||||||
|
|
||||||
|
static const char *const TAG = "mitsubishi_cn105.driver";
|
||||||
|
|
||||||
|
} // namespace esphome::mitsubishi_cn105
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "esphome/components/uart/uart.h"
|
||||||
|
|
||||||
|
namespace esphome::mitsubishi_cn105 {
|
||||||
|
|
||||||
|
class MitsubishiCN105 {
|
||||||
|
public:
|
||||||
|
explicit MitsubishiCN105(uart::UARTDevice &device) : device_(device) {}
|
||||||
|
|
||||||
|
uint32_t get_update_interval() const { return this->update_interval_ms_; }
|
||||||
|
void set_update_interval(uint32_t interval_ms) { this->update_interval_ms_ = interval_ms; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
uart::UARTDevice &device_;
|
||||||
|
uint32_t update_interval_ms_{1000};
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace esphome::mitsubishi_cn105
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#include "mitsubishi_cn105_climate.h"
|
||||||
|
#include "esphome/core/log.h"
|
||||||
|
|
||||||
|
namespace esphome::mitsubishi_cn105 {
|
||||||
|
|
||||||
|
static const char *const TAG = "mitsubishi_cn105.climate";
|
||||||
|
|
||||||
|
void MitsubishiCN105Climate::dump_config() {
|
||||||
|
LOG_CLIMATE("", "Mitsubishi CN105 Climate", this);
|
||||||
|
ESP_LOGCONFIG(TAG,
|
||||||
|
" Update interval: %" PRIu32 " ms\n"
|
||||||
|
" UART: baud_rate=%" PRIu32 " data_bits=%u parity=%s stop_bits=%u",
|
||||||
|
this->hp_.get_update_interval(), this->parent_->get_baud_rate(), this->parent_->get_data_bits(),
|
||||||
|
LOG_STR_ARG(parity_to_str(this->parent_->get_parity())), this->parent_->get_stop_bits());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MitsubishiCN105Climate::setup() {}
|
||||||
|
|
||||||
|
void MitsubishiCN105Climate::loop() {}
|
||||||
|
|
||||||
|
climate::ClimateTraits MitsubishiCN105Climate::traits() {
|
||||||
|
climate::ClimateTraits traits;
|
||||||
|
return traits;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MitsubishiCN105Climate::control(const climate::ClimateCall &call) {}
|
||||||
|
|
||||||
|
} // namespace esphome::mitsubishi_cn105
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "esphome/core/component.h"
|
||||||
|
#include "esphome/components/climate/climate.h"
|
||||||
|
#include "esphome/components/uart/uart.h"
|
||||||
|
#include "mitsubishi_cn105.h"
|
||||||
|
|
||||||
|
namespace esphome::mitsubishi_cn105 {
|
||||||
|
|
||||||
|
class MitsubishiCN105Climate : public climate::Climate, public Component, public uart::UARTDevice {
|
||||||
|
public:
|
||||||
|
explicit MitsubishiCN105Climate() : hp_(*this) {}
|
||||||
|
|
||||||
|
void setup() override;
|
||||||
|
void loop() override;
|
||||||
|
void dump_config() override;
|
||||||
|
|
||||||
|
climate::ClimateTraits traits() override;
|
||||||
|
void control(const climate::ClimateCall &call) override;
|
||||||
|
|
||||||
|
void set_update_interval(uint32_t ms) { hp_.set_update_interval(ms); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
MitsubishiCN105 hp_;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace esphome::mitsubishi_cn105
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
climate:
|
||||||
|
- platform: mitsubishi_cn105
|
||||||
|
name: "AC Test"
|
||||||
|
uart_id: uart_bus
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
packages:
|
||||||
|
uart: !include ../../test_build_components/common/uart_9600_even/esp32-idf.yaml
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
packages:
|
||||||
|
uart: !include ../../test_build_components/common/uart_9600_even/esp8266-ard.yaml
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
packages:
|
||||||
|
uart: !include ../../test_build_components/common/uart_9600_even/rp2040-ard.yaml
|
||||||
|
|
||||||
|
<<: !include common.yaml
|
||||||
Reference in New Issue
Block a user