mirror of
https://github.com/GrKoR/esphome_aux_ac_component.git
synced 2025-12-09 13:06:58 +03:00
+
This commit is contained in:
@@ -14,39 +14,18 @@
|
||||
#include "esphome/components/binary_sensor/binary_sensor.h"
|
||||
#include "esphome/core/helpers.h"
|
||||
|
||||
/* TODO: Помечаю, чтобы не забыть.
|
||||
|
||||
GK:
|
||||
Не понятно пока, зачем сохранять настройки в энергонезависимую память.
|
||||
Вроде бы компоненту это не требуется - он отражает текущее состояние кондея.
|
||||
А кондей при включении после пропадания питания сам переходит в последний включенный режим.
|
||||
В общем, пока не понятно. Ждём пояснений =)
|
||||
|
||||
Brokly: У меня пульт выставляет свои настройки в завасимости от режима. У нагрева свои градусы со шторками ,
|
||||
у охлаждения свои градусы со своими шторками
|
||||
|
||||
GK: ну то есть ты сохраняешь в памяти эти настройки, чтобы в умном доме вместо отправки указания
|
||||
"выстави нагрев до 24 градусов + шторки так-то", отправлять просто команду "выстави нагрев",
|
||||
а уже есп будет подтягивать температуру и шторки из памяти. Так? или я не понял?
|
||||
|
||||
Brokly: Да. А что эта функция чему то мешает ?
|
||||
|
||||
GK: фича не мешает, но наверное может вести к проблемам. Типа износа ячеек памяти... а может и не привести...
|
||||
пока не уверен, что эту фичу надо в мастер кидать.
|
||||
плюс исходники компонента вбирают в себя дополнительный функционал, который можно реализовать иначе.
|
||||
Как минимум, старт с определенного пресета можно выполнить настройками в yaml (через глобальные переменные).
|
||||
Не факт, что это будет проще и\или оптимальнее. Но зато фичи компонента будут соответствовать принципам атомарности,
|
||||
в нем не будет дополнительного кода, который может в компоненте не быть.
|
||||
в общем, надо будет взвесить все за и против
|
||||
*/
|
||||
#if defined(ESP32)
|
||||
#define PRESETS_SAVING
|
||||
#include "esphome/core/preferences.h"
|
||||
#else
|
||||
#warning "Saving presets does not work with ESP8266"
|
||||
// весь функционал сохранения пресетов прячу под дефайн
|
||||
//#define PRESETS_SAVING
|
||||
#ifdef PRESETS_SAVING
|
||||
#ifdef ESP32
|
||||
#include "esphome/core/preferences.h"
|
||||
#else
|
||||
#warning "Saving presets does not work with ESP8266"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
//#define HOLMS 19 // раскоментируй ключ для вывода лога под Эксель, значение ключа - размер пакетов которые будут видны
|
||||
// раскоментируй ключ HOLMS для вывода лога под Эксель, значение ключа - размер пакетов которые будут видны
|
||||
//#define HOLMS 19
|
||||
|
||||
|
||||
namespace esphome {
|
||||
@@ -86,8 +65,8 @@ public:
|
||||
|
||||
const std::string Constants::AC_FIRMWARE_VERSION = "0.2.4";
|
||||
const char *const Constants::TAG = "AirCon";
|
||||
const std::string Constants::MUTE = "Mute";
|
||||
const std::string Constants::TURBO = "Turbo";
|
||||
const std::string Constants::MUTE = "mute";
|
||||
const std::string Constants::TURBO = "turbo";
|
||||
const std::string Constants::CLEAN = "Clean";
|
||||
const std::string Constants::FEEL = "Feel";
|
||||
const std::string Constants::HEALTH = "Health";
|
||||
@@ -2451,7 +2430,7 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
// User requested mode change
|
||||
if (call.get_mode().has_value()) {
|
||||
ClimateMode mode = *call.get_mode();
|
||||
// Send mode to hardware
|
||||
|
||||
switch (mode) {
|
||||
case climate::CLIMATE_MODE_OFF:
|
||||
hasCommand = true;
|
||||
@@ -2461,7 +2440,6 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
load_preset(&cmd, POS_MODE_OFF);
|
||||
#endif
|
||||
|
||||
cmd.temp_target = _current_ac_state.temp_ambient; // TODO: не нужно же
|
||||
this->mode = mode;
|
||||
break;
|
||||
|
||||
@@ -2547,7 +2525,7 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
// User requested fan_mode change
|
||||
if (call.get_fan_mode().has_value()) {
|
||||
ClimateFanMode fanmode = *call.get_fan_mode();
|
||||
// Send fan mode to hardware
|
||||
|
||||
switch (fanmode) {
|
||||
case climate::CLIMATE_FAN_AUTO:
|
||||
hasCommand = true;
|
||||
@@ -2596,23 +2574,25 @@ class AirCon : public esphome::Component, public esphome::climate::Climate {
|
||||
|
||||
} else if (call.get_custom_fan_mode().has_value()) {
|
||||
std::string customfanmode = *call.get_custom_fan_mode();
|
||||
// Send fan mode to hardware
|
||||
|
||||
if (customfanmode == Constants::TURBO) {
|
||||
// TURBO fan mode is suitable in COOL and HEAT modes for Rovex air conditioners.
|
||||
// TURBO fan mode is suitable in COOL and HEAT modes.
|
||||
// Other modes don't accept TURBO fan mode.
|
||||
// May be other AUX-based air conditioners do the same.
|
||||
/*
|
||||
if ( cmd.mode == AC_MODE_COOL
|
||||
or cmd.mode == AC_MODE_HEAT
|
||||
or _current_ac_state.mode == AC_MODE_COOL
|
||||
or _current_ac_state.mode == AC_MODE_HEAT) {
|
||||
|
||||
*/
|
||||
hasCommand = true;
|
||||
cmd.fanTurbo = AC_FANTURBO_ON;
|
||||
cmd.fanMute = AC_FANMUTE_OFF; // зависимость от fanturbo
|
||||
this->custom_fan_mode = customfanmode;
|
||||
/*
|
||||
} else {
|
||||
_debugMsg(F("TURBO fan mode is suitable in COOL and HEAT modes only."), ESPHOME_LOG_LEVEL_WARN, __LINE__);
|
||||
}
|
||||
*/
|
||||
|
||||
} else if (customfanmode == Constants::MUTE) {
|
||||
// MUTE fan mode is suitable in FAN mode only for Rovex air conditioner.
|
||||
|
||||
Reference in New Issue
Block a user