mirror of
https://github.com/GrKoR/esphome_aux_ac_component.git
synced 2025-12-06 03:26:56 +03:00
1
.gitignore
vendored
1
.gitignore
vendored
@@ -12,6 +12,5 @@
|
|||||||
**/livingroom_ac/
|
**/livingroom_ac/
|
||||||
**/kitchen_ac/
|
**/kitchen_ac/
|
||||||
/examples/*/*.h
|
/examples/*/*.h
|
||||||
**/tests/test_*
|
|
||||||
**/__pycache__
|
**/__pycache__
|
||||||
**/private/
|
**/private/
|
||||||
@@ -36,7 +36,7 @@ The best way to report about your test results is writing a message in the [tele
|
|||||||
For correct component operation, you need hardware and firmware. The hardware description is located [in a separate file](docs/HARDWARE-EN.md).
|
For correct component operation, you need hardware and firmware. The hardware description is located [in a separate file](docs/HARDWARE-EN.md).
|
||||||
|
|
||||||
### Firmware: Integration aux_ac to your configuration ###
|
### Firmware: Integration aux_ac to your configuration ###
|
||||||
You need [ESPHome](https://esphome.io) v.1.18.0 or above. `External_components` have appeared in this version. But it is better to use ESPHome v.1.20.4 or above, cause there were a lot of `external_components` errors corrected before this version.
|
You need [ESPHome](https://esphome.io) v.2025.2.0 or above. You can try esphome before 2025.2.0 but I can't guarantee error-free compilation of the examples.
|
||||||
|
|
||||||
## Installing ##
|
## Installing ##
|
||||||
1. Declare external component. Read [the manual](https://esphome.io/components/external_components.html?highlight=external) for details.
|
1. Declare external component. Read [the manual](https://esphome.io/components/external_components.html?highlight=external) for details.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ AUX - это один из нескольких OEM-производителей
|
|||||||
Для работы с кондиционером понадобится "железо" и прошивка. Описание электроники вынесено [в отдельный файл](docs/HARDWARE.md).
|
Для работы с кондиционером понадобится "железо" и прошивка. Описание электроники вынесено [в отдельный файл](docs/HARDWARE.md).
|
||||||
|
|
||||||
### Прошивка: интеграция aux_ac в вашу конфигурацию ESPHome ###
|
### Прошивка: интеграция aux_ac в вашу конфигурацию ESPHome ###
|
||||||
Для использования требуется [ESPHome](https://esphome.io) версией не ниже 1.18.0. Именно в этой версии появились `external_components`. Но лучше использовать версию 1.20.4 или старше, так как до этой версии массированно исправлялись ошибки в механизме подключения внешних компонентов.<br />
|
Для использования требуется [ESPHome](https://esphome.io) версией не ниже 2025.2.0. Работа с более ранними версиями возможна, но не гарантируется.<br />
|
||||||
|
|
||||||
## Установка ##
|
## Установка ##
|
||||||
1. Подключите компонент.
|
1. Подключите компонент.
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
/// немного переработанная версия старого компонента
|
/// немного переработанная версия старого компонента
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <Arduino.h>
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <cinttypes>
|
||||||
|
|
||||||
#include "esphome.h"
|
#include "esphome.h"
|
||||||
#include "esphome/components/binary_sensor/binary_sensor.h"
|
#include "esphome/components/binary_sensor/binary_sensor.h"
|
||||||
@@ -16,6 +16,11 @@
|
|||||||
#include "esphome/core/component.h"
|
#include "esphome/core/component.h"
|
||||||
#include "esphome/core/helpers.h"
|
#include "esphome/core/helpers.h"
|
||||||
|
|
||||||
|
#ifndef USE_ARDUINO
|
||||||
|
using String = std::string;
|
||||||
|
#define F(string_literal) (string_literal)
|
||||||
|
#endif
|
||||||
|
|
||||||
// весь функционал сохранения пресетов прячу под дефайн
|
// весь функционал сохранения пресетов прячу под дефайн
|
||||||
// #define PRESETS_SAVING
|
// #define PRESETS_SAVING
|
||||||
#ifdef PRESETS_SAVING
|
#ifdef PRESETS_SAVING
|
||||||
@@ -710,16 +715,16 @@ namespace esphome
|
|||||||
{
|
{
|
||||||
AC_COMMAND_BASE;
|
AC_COMMAND_BASE;
|
||||||
ac_health_status health_status;
|
ac_health_status health_status;
|
||||||
float temp_ambient; // внутренняя температура
|
float temp_ambient; // внутренняя температура
|
||||||
int8_t temp_outdoor; // внешняя температура
|
int8_t temp_outdoor; // внешняя температура
|
||||||
int8_t temp_inbound; // температура входящая
|
int8_t temp_inbound; // температура входящая
|
||||||
int8_t temp_outbound; // температура исходящая
|
int8_t temp_outbound; // температура исходящая
|
||||||
int8_t temp_compressor; // температура компрессора
|
int8_t temp_compressor; // температура компрессора
|
||||||
ac_realFan realFanSpeed; // текущая скорость вентилятора
|
ac_realFan realFanSpeed; // текущая скорость вентилятора
|
||||||
uint8_t inverter_power; // мощность инвертора
|
uint8_t inverter_power; // мощность инвертора
|
||||||
bool defrost; // режим разморозки внешнего блока (накопление тепла + прогрев испарителя)
|
bool defrost; // режим разморозки внешнего блока (накопление тепла + прогрев испарителя)
|
||||||
ac_powLim_state power_lim_state; // статус ограничения мощности инвертора
|
ac_powLim_state power_lim_state; // статус ограничения мощности инвертора
|
||||||
uint8_t power_lim_value; // значение ограничения мощности инвертора
|
uint8_t power_lim_value; // значение ограничения мощности инвертора
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef ac_command_t ac_state_t; // текущее состояние параметров кондея можно хранить в таком же формате, как и комманды
|
typedef ac_command_t ac_state_t; // текущее состояние параметров кондея можно хранить в таком же формате, как и комманды
|
||||||
@@ -1520,15 +1525,15 @@ namespace esphome
|
|||||||
stateByte = small_info_body->display_and_mildew & AC_MILDEW_MASK;
|
stateByte = small_info_body->display_and_mildew & AC_MILDEW_MASK;
|
||||||
stateChangedFlag = stateChangedFlag || (_current_ac_state.mildew != (ac_mildew)stateByte);
|
stateChangedFlag = stateChangedFlag || (_current_ac_state.mildew != (ac_mildew)stateByte);
|
||||||
_current_ac_state.mildew = (ac_mildew)stateByte;
|
_current_ac_state.mildew = (ac_mildew)stateByte;
|
||||||
|
|
||||||
stateByte = AC_POWLIMSTAT_ON * small_info_body->inverter_power_limitation_enable;
|
stateByte = AC_POWLIMSTAT_ON * small_info_body->inverter_power_limitation_enable;
|
||||||
stateChangedFlag = stateChangedFlag || (_current_ac_state.power_lim_state != (ac_powLim_state)stateByte);
|
stateChangedFlag = stateChangedFlag || (_current_ac_state.power_lim_state != (ac_powLim_state)stateByte);
|
||||||
_current_ac_state.power_lim_state = (ac_powLim_state)stateByte;
|
_current_ac_state.power_lim_state = (ac_powLim_state)stateByte;
|
||||||
|
|
||||||
stateByte = small_info_body->inverter_power_limitation_value;
|
stateByte = small_info_body->inverter_power_limitation_value;
|
||||||
stateChangedFlag = stateChangedFlag || (_current_ac_state.power_lim_value != stateByte);
|
stateChangedFlag = stateChangedFlag || (_current_ac_state.power_lim_value != stateByte);
|
||||||
_current_ac_state.power_lim_value = stateByte;
|
_current_ac_state.power_lim_value = stateByte;
|
||||||
|
|
||||||
// уведомляем об изменении статуса сплита
|
// уведомляем об изменении статуса сплита
|
||||||
if (stateChangedFlag)
|
if (stateChangedFlag)
|
||||||
stateChanged();
|
stateChanged();
|
||||||
@@ -1710,7 +1715,7 @@ namespace esphome
|
|||||||
|
|
||||||
// заполняем время получения пакета
|
// заполняем время получения пакета
|
||||||
memset(textBuf, 0, 11);
|
memset(textBuf, 0, 11);
|
||||||
sprintf(textBuf, "%010u", packet->msec);
|
sprintf(textBuf, "%010" PRIu32, packet->msec);
|
||||||
st = st + textBuf + ": ";
|
st = st + textBuf + ": ";
|
||||||
|
|
||||||
// формируем преамбулы
|
// формируем преамбулы
|
||||||
@@ -2839,11 +2844,11 @@ namespace esphome
|
|||||||
{
|
{
|
||||||
ESP_LOGCONFIG(TAG, "AUX HVAC:");
|
ESP_LOGCONFIG(TAG, "AUX HVAC:");
|
||||||
ESP_LOGCONFIG(TAG, " [x] Firmware version: %s", Constants::AC_FIRMWARE_VERSION.c_str());
|
ESP_LOGCONFIG(TAG, " [x] Firmware version: %s", Constants::AC_FIRMWARE_VERSION.c_str());
|
||||||
ESP_LOGCONFIG(TAG, " [x] Period: %dms", this->get_period());
|
ESP_LOGCONFIG(TAG, " [x] Period: %" PRIu32 "ms", this->get_period());
|
||||||
ESP_LOGCONFIG(TAG, " [x] Show action: %s", TRUEFALSE(this->get_show_action()));
|
ESP_LOGCONFIG(TAG, " [x] Show action: %s", TRUEFALSE(this->get_show_action()));
|
||||||
ESP_LOGCONFIG(TAG, " [x] Display inverted: %s", TRUEFALSE(this->get_display_inverted()));
|
ESP_LOGCONFIG(TAG, " [x] Display inverted: %s", TRUEFALSE(this->get_display_inverted()));
|
||||||
ESP_LOGCONFIG(TAG, " [x] Optimistic: %s", TRUEFALSE(this->get_optimistic()));
|
ESP_LOGCONFIG(TAG, " [x] Optimistic: %s", TRUEFALSE(this->get_optimistic()));
|
||||||
ESP_LOGCONFIG(TAG, " [x] Packet timeout: %dms", this->get_packet_timeout());
|
ESP_LOGCONFIG(TAG, " [x] Packet timeout: %" PRIu32 "ms", this->get_packet_timeout());
|
||||||
|
|
||||||
#if defined(PRESETS_SAVING)
|
#if defined(PRESETS_SAVING)
|
||||||
ESP_LOGCONFIG(TAG, " [x] Save settings %s", TRUEFALSE(this->get_store_settings()));
|
ESP_LOGCONFIG(TAG, " [x] Save settings %s", TRUEFALSE(this->get_store_settings()));
|
||||||
@@ -3545,7 +3550,7 @@ namespace esphome
|
|||||||
}
|
}
|
||||||
|
|
||||||
// устанавливает ограничение мощности сплита на нужный уровень
|
// устанавливает ограничение мощности сплита на нужный уровень
|
||||||
bool powerLimitationSetSequence(uint8_t power_limit, bool set_on=false)
|
bool powerLimitationSetSequence(uint8_t power_limit, bool set_on = false)
|
||||||
{
|
{
|
||||||
// нет смысла в последовательности, если нет коннекта с кондиционером
|
// нет смысла в последовательности, если нет коннекта с кондиционером
|
||||||
if (!get_has_connection())
|
if (!get_has_connection())
|
||||||
@@ -3560,12 +3565,12 @@ namespace esphome
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(power_limit != this->_power_limitation_value_normalise(power_limit))
|
if (power_limit != this->_power_limitation_value_normalise(power_limit))
|
||||||
{
|
{
|
||||||
_debugMsg(F("powerLimitationSetSequence: incorrect power limit value."), ESPHOME_LOG_LEVEL_WARN, __LINE__);
|
_debugMsg(F("powerLimitationSetSequence: incorrect power limit value."), ESPHOME_LOG_LEVEL_WARN, __LINE__);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// формируем команду
|
// формируем команду
|
||||||
ac_command_t cmd;
|
ac_command_t cmd;
|
||||||
_clearCommand(&cmd); // не забываем очищать, а то будет мусор
|
_clearCommand(&cmd); // не забываем очищать, а то будет мусор
|
||||||
@@ -3577,12 +3582,14 @@ namespace esphome
|
|||||||
// добавляем команду в последовательность
|
// добавляем команду в последовательность
|
||||||
if (!commandSequence(&cmd))
|
if (!commandSequence(&cmd))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (set_on)
|
if (set_on)
|
||||||
{
|
{
|
||||||
_debugMsg(F("powerLimitationSetSequence: loaded (state = %02X, power limit = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, cmd.power_lim_state, power_limit);
|
_debugMsg(F("powerLimitationSetSequence: loaded (state = %02X, power limit = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, cmd.power_lim_state, power_limit);
|
||||||
} else {
|
}
|
||||||
_debugMsg(F("powerLimitationSetSequence: loaded (power limit = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, power_limit);
|
else
|
||||||
|
{
|
||||||
|
_debugMsg(F("powerLimitationSetSequence: loaded (power limit = %02X)"), ESPHOME_LOG_LEVEL_VERBOSE, __LINE__, power_limit);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -3602,14 +3609,17 @@ namespace esphome
|
|||||||
_debugMsg(F("powerLimitationOnSequence: unsupported for noninverter AC."), ESPHOME_LOG_LEVEL_WARN, __LINE__);
|
_debugMsg(F("powerLimitationOnSequence: unsupported for noninverter AC."), ESPHOME_LOG_LEVEL_WARN, __LINE__);
|
||||||
return false; // если кондиционер не инверторный, то выходим
|
return false; // если кондиционер не инверторный, то выходим
|
||||||
}
|
}
|
||||||
|
|
||||||
// формируем команду
|
// формируем команду
|
||||||
ac_command_t cmd;
|
ac_command_t cmd;
|
||||||
_clearCommand(&cmd); // не забываем очищать, а то будет мусор
|
_clearCommand(&cmd); // не забываем очищать, а то будет мусор
|
||||||
if(enable_limit){
|
if (enable_limit)
|
||||||
cmd.power_lim_state = AC_POWLIMSTAT_ON; // включить ограничение мощности
|
{
|
||||||
} else {
|
cmd.power_lim_state = AC_POWLIMSTAT_ON; // включить ограничение мощности
|
||||||
cmd.power_lim_state = AC_POWLIMSTAT_OFF; // отключить ограничение мощности
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cmd.power_lim_state = AC_POWLIMSTAT_OFF; // отключить ограничение мощности
|
||||||
}
|
}
|
||||||
// добавляем команду в последовательность
|
// добавляем команду в последовательность
|
||||||
if (!commandSequence(&cmd))
|
if (!commandSequence(&cmd))
|
||||||
@@ -3622,19 +3632,19 @@ namespace esphome
|
|||||||
// включает ограничение мощности сплита
|
// включает ограничение мощности сплита
|
||||||
bool powerLimitationOnSequence()
|
bool powerLimitationOnSequence()
|
||||||
{
|
{
|
||||||
return powerLimitationOnOffSequence(true);
|
return powerLimitationOnOffSequence(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// включает ограничение мощности сплита на нужный уровень
|
// включает ограничение мощности сплита на нужный уровень
|
||||||
bool powerLimitationOnSequence(uint8_t power_limit)
|
bool powerLimitationOnSequence(uint8_t power_limit)
|
||||||
{
|
{
|
||||||
return powerLimitationSetSequence(power_limit, true);
|
return powerLimitationSetSequence(power_limit, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// выключает ограничение мощности сплита
|
// выключает ограничение мощности сплита
|
||||||
bool powerLimitationOffSequence()
|
bool powerLimitationOffSequence()
|
||||||
{
|
{
|
||||||
return powerLimitationOnOffSequence(false);
|
return powerLimitationOnOffSequence(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// конвертирует состояние жалюзи из кодов сплита в коды для фронтенда
|
// конвертирует состояние жалюзи из кодов сплита в коды для фронтенда
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ from esphome.components.climate import (
|
|||||||
ClimateSwingMode,
|
ClimateSwingMode,
|
||||||
)
|
)
|
||||||
|
|
||||||
AUX_AC_FIRMWARE_VERSION = '0.2.15'
|
AUX_AC_FIRMWARE_VERSION = '0.2.16'
|
||||||
AC_PACKET_TIMEOUT_MIN = 150
|
AC_PACKET_TIMEOUT_MIN = 150
|
||||||
AC_PACKET_TIMEOUT_MAX = 600
|
AC_PACKET_TIMEOUT_MAX = 600
|
||||||
AC_POWER_LIMIT_MIN = 30
|
AC_POWER_LIMIT_MIN = 30
|
||||||
|
|||||||
@@ -2,12 +2,14 @@
|
|||||||
`Aux_ac` has been tested and works successfully with the air conditioners from the list below.<br/>
|
`Aux_ac` has been tested and works successfully with the air conditioners from the list below.<br/>
|
||||||
Кондиционеры из списка ниже протестированы и точно совместимы с `aux_ac`.
|
Кондиционеры из списка ниже протестированы и точно совместимы с `aux_ac`.
|
||||||
|
|
||||||
+ ANDE (models: AND-12/FA+)
|
+ ANDE (models: AND-12/FA+, AND-AMWM-H12(JA) / AND-AM2-H18/4DR3)
|
||||||
+ Argo (models: Greenstyle 9000, Greenstyle 12000, Greenstyle 18000)
|
+ Argo (models: Greenstyle 9000, Greenstyle 12000, Greenstyle 18000)
|
||||||
+ AUX (models: ALLD-H18/4R1C / AL-H18/4R1C(U), ALMD-H48/5DR2 / AL-H48/5DR2(U), AMWM-H07/4R1 multisplit, AMWM-H07/4R2(J) multisplit, AMWM-H12/4R2(J) multisplit, AMWM-H12/4R3 multisplit, ASM-H12LL, ASM-H24LD, ASW-H07A4/DE-R1DI, ASW-H07A4/FP-R1DI, ASW-H07A4/JD-R1, ASW-H09A4/FP-R1DI, ASW-H09A4/LK-700R1, ASW-H09A4/LK-700R1DI, ASW-H09B4/LK-700R1, ASW-H09B7A4, ASW-H12A4/FAR1, ASW-H12A4/HA-R2DI, ASW-H12A4/JD-R2DI, ASW-H12B4/JD-R2DI, ASW-H12C5C4/JER3DI-B8-2, ASW-H12C5C4/JOR3DI-B8, ASW-H12U3/JIR1DI-US, ASW-H18A4/QH-R1DI / AS-H18A4/QH-R1DI, AUX-07JO/I / AUX-M3-21LCLH multisplit, AUX-12JO/I / AUX-M3-21LCLHmultisplit, AUX-18QC/I / AUX-18QC/O, AWM-09G1V4-X, HA-18000BTU, KFR-26GW/BpHRB+3, KFR-26GW/BpQYA2+2R3, KFR-26GW/BpQYD2+2R3, KFR-26GW/BpR3QYA1+1, KFR-26GW/BpR3QYD1+1, KFR-26GW/BpR3QYQ1+1, KFR-26GW/BpR3QYQ2+2, KFR-35GW/BpQYA1+1R3, KFR-35GW/BpQYA2+2R3, KFR-35GW/BpQYD1+1R3, KFR-35GW/BpQYD2+2R3, KFR-35GW/BpR3QYQ1+1, KFR-35GW/BpR3QYQ2+2 (see [issue #71](https://github.com/GrKoR/esphome_aux_ac_component/issues/71) for detais of `Aegean Sea`[爱琴海] AUX family AC connection)
|
+ Arielli (models: ASW-H09B4/FGR3DI-EU)
|
||||||
|
+ AUX (models: ALLD-H18/4R1C / AL-H18/4R1C(U), ALMD-H48/5DR2 / AL-H48/5DR2(U), ALMD-H24/4DR2A / AL-H24/4DR2A(U), AMWM-H07/4R1 multisplit, AMWM-H07/4R2(J) multisplit, AMWM-H12/4R2(J) multisplit, AMWM-H12/4R3 multisplit, ASM-H12LL, ASM-H24LD, ASW-12A3INV/SS, ASW-H07A4/DE-R1DI, ASW-H07A4/FP-R1DI, ASW-H07A4/JD-R1, ASW-H09A4/FP-R1DI, ASW-H09A4/LK-700R1, ASW-H09A4/LK-700R1DI, ASW-H09B4/LK-700R1, ASW-H09B7A4, ASW-H12A4/FAR1, ASW-H12A4/HA-R2DI, ASW-H12A4/JD-R2DI, ASW-H12B4/JD-R2DI, ASW-H12C5C4/JER3DI-B8-2, ASW-H12C5C4/JOR3DI-B8, ASW-H12U3/JIR1DI-US, ASW-H18A4/QH-R1DI / AS-H18A4/QH-R1DI, ASW-H18E3A4, AUX-07JO/I / AUX-M3-21LCLH multisplit, AUX-09CAA/I / ASW-H09A4/CAR3DI-C3, AUX-12JO/I / AUX-M3-21LCLH multisplit, AUX-12F3H, AUX-18QC/I / AUX-18QC/O, AWM-09G1V4-X, HA-18000BTU, KFR-26GW/BpHRB+3, KFR-26GW/BpQYA2+2R3, KFR-26GW/BpQYD2+2R3, KFR-26GW/BpR3QYA1+1, KFR-26GW/BpR3QYD1+1, KFR-26GW/BpR3QYQ1+1, KFR-26GW/BpR3QYQ2+2, KFR-35GW/BpQYA1+1R3, KFR-35GW/BpQYA2+2R3, KFR-35GW/BpQYD1+1R3, KFR-35GW/BpQYD2+2R3, KFR-35GW/BpR3QYQ1+1, KFR-35GW/BpR3QYQ2+2 (see [issue #71](https://github.com/GrKoR/esphome_aux_ac_component/issues/71) for detais of `Aegean Sea`[爱琴海] AUX family AC connection)
|
||||||
+ Ballu (models: BLC_CF/in-60HN1 / BLC_O/out-60HN1, Orbis BPAC-08 OR/N6, BSUI/in-09HN8 / BSUI/out-09HN8, BSUI/in-12HN8 / BSUI/out-12HN8, BSUI/in-18HN8 / BSUI/out-18HN8, BSW/in-09HN1 / BSW/out-09HN1, BSW/in-12HN1 / BSW/out-12HN1, BSW/in-18HN1 / BSW/out-18HN1)
|
+ Ballu (models: BLC_CF/in-60HN1 / BLC_O/out-60HN1, Orbis BPAC-08 OR/N6, BSUI/in-09HN8 / BSUI/out-09HN8, BSUI/in-12HN8 / BSUI/out-12HN8, BSUI/in-18HN8 / BSUI/out-18HN8, BSW/in-09HN1 / BSW/out-09HN1, BSW/in-12HN1 / BSW/out-12HN1, BSW/in-18HN1 / BSW/out-18HN1)
|
||||||
+ Baymak (models: Elegant Plus 12)
|
+ Baymak (models: Elegant Plus 9, Elegant Plus 12)
|
||||||
+ Centek (models: CT-65A09, CT-65A12, CT-65EDC07, CT-65F09, CT-65F12, CT-65FDC07, CT-65FDC09, CT-65J09, CT-65J12, CT-65J24, CT-65K07, CT-65Q09, CT-65Q12, CT-65RDC07, CT-65RDC09, CT-65RDC12, CT-65SDC07, CT-65SDC09, CT-65SDC18, CT-65U13, CT-65U18, CT-65V12, CT-65V24, CT-65X12, CT-65Z10, CT-65Z18)
|
+ Centek (models: CT-65A09, CT-65A12, CT-65EDC07, CT-65F09, CT-65F12, CT-65FDC07, CT-65FDC09, CT-65J09, CT-65J12, CT-65J24, CT-65K07, CT-65Q09, CT-65Q12, CT-65RDC07, CT-65RDC09, CT-65RDC12, CT-65SDC07, CT-65SDC09, CT-65SDC18, CT-65U13, CT-65U18, CT-65V12, CT-65V24, CT-65X12, CT-65Z10, CT-65Z18)
|
||||||
|
+ Costway (models: FP10318US-22WH, FP10524US-22WH)
|
||||||
+ Dimstal (model: SMND-QC-12-J-Smart ECO)
|
+ Dimstal (model: SMND-QC-12-J-Smart ECO)
|
||||||
+ Electrolux (models: EACS/I-07HSK/N3, EACS/I-09HIX-BLACK/N8)
|
+ Electrolux (models: EACS/I-07HSK/N3, EACS/I-09HIX-BLACK/N8)
|
||||||
+ Elgin (models: HIFI09C2WA / HIFE09C2CA, HJFI12C2WB, HWFI09B2IA / HWFE09B2NA)
|
+ Elgin (models: HIFI09C2WA / HIFE09C2CA, HJFI12C2WB, HWFI09B2IA / HWFE09B2NA)
|
||||||
@@ -18,7 +20,7 @@
|
|||||||
+ Idea (models: ISR-12HR-SA7-DN1 ION)
|
+ Idea (models: ISR-12HR-SA7-DN1 ION)
|
||||||
+ IGC (models: RAK-07NH multysplit, RAS-07AX/RAC-07AX, RAS-V09N2X/RAC-V09N2X, RAS-V12NQR/RAC-V12NQR)
|
+ IGC (models: RAK-07NH multysplit, RAS-07AX/RAC-07AX, RAS-V09N2X/RAC-V09N2X, RAS-V12NQR/RAC-V12NQR)
|
||||||
+ IKON (models: ASW-H12C5C4/HCR3DI-B8)
|
+ IKON (models: ASW-H12C5C4/HCR3DI-B8)
|
||||||
+ Ishimatsu (models: AVK-09I)
|
+ Ishimatsu (models: AVK-07I, AVK-09I)
|
||||||
+ Loriot (models: LAC-09AS)
|
+ Loriot (models: LAC-09AS)
|
||||||
+ Mirage (models: EWC121E - CWC121E)
|
+ Mirage (models: EWC121E - CWC121E)
|
||||||
+ Osaka (models: STVP-12HH3)
|
+ Osaka (models: STVP-12HH3)
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ external_components:
|
|||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: $devicename
|
name: $devicename
|
||||||
platform: ESP8266
|
|
||||||
|
esp8266:
|
||||||
board: esp12e
|
board: esp12e
|
||||||
|
|
||||||
wifi:
|
wifi:
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ external_components:
|
|||||||
|
|
||||||
esphome:
|
esphome:
|
||||||
name: aux_air_conditioner
|
name: aux_air_conditioner
|
||||||
platform: ESP8266
|
|
||||||
|
esp8266:
|
||||||
board: esp12e
|
board: esp12e
|
||||||
|
|
||||||
# don't forget to set your's wifi settings!
|
# don't forget to set your's wifi settings!
|
||||||
|
|||||||
10
tests/.gitignore
vendored
10
tests/.gitignore
vendored
@@ -1,10 +0,0 @@
|
|||||||
# Gitignore settings for ESPHome
|
|
||||||
# This is an example and may include too much for your use-case.
|
|
||||||
# You can modify this file to suit your needs.
|
|
||||||
/.esphome/
|
|
||||||
**/.pioenvs/
|
|
||||||
**/.piolibdeps/
|
|
||||||
**/lib/
|
|
||||||
**/src/
|
|
||||||
**/platformio.ini
|
|
||||||
/secrets.yaml
|
|
||||||
@@ -1,191 +0,0 @@
|
|||||||
import time
|
|
||||||
import aioesphomeapi
|
|
||||||
import asyncio
|
|
||||||
import re
|
|
||||||
import sys
|
|
||||||
import argparse
|
|
||||||
from aioesphomeapi.api_pb2 import (LOG_LEVEL_NONE,
|
|
||||||
LOG_LEVEL_ERROR,
|
|
||||||
LOG_LEVEL_WARN,
|
|
||||||
LOG_LEVEL_INFO,
|
|
||||||
LOG_LEVEL_DEBUG,
|
|
||||||
LOG_LEVEL_VERBOSE,
|
|
||||||
LOG_LEVEL_VERY_VERBOSE)
|
|
||||||
|
|
||||||
def createParser ():
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description='''This script is used for collecting logs from ac_aux ESPHome component.
|
|
||||||
For more info, see https://github.com/GrKoR/ac_python_logger''',
|
|
||||||
add_help = False)
|
|
||||||
parent_group = parser.add_argument_group (title='Params')
|
|
||||||
parent_group.add_argument ('--help', '-h', action='help', help='show this help message and exit')
|
|
||||||
parent_group.add_argument ('-i', '--ip', nargs=1, required=True, help='IP address of the esphome device')
|
|
||||||
parent_group.add_argument ('-p', '--pwd', nargs=1, required=True, help='native API password for the esphome device')
|
|
||||||
return parser
|
|
||||||
|
|
||||||
async def main():
|
|
||||||
"""Connect to an ESPHome device and wait for state changes."""
|
|
||||||
api = aioesphomeapi.APIClient(namespace.ip[0], 6053, namespace.pwd[0])
|
|
||||||
|
|
||||||
try:
|
|
||||||
await api.connect(login=True)
|
|
||||||
except aioesphomeapi.InvalidAuthAPIError as e:
|
|
||||||
return print(e)
|
|
||||||
|
|
||||||
print(api.api_version)
|
|
||||||
|
|
||||||
async def display_off():
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def display_on():
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x01, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def ac_enable():
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x87, 0xE0, 0x2F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def ac_disable():
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x87, 0xE0, 0x2F, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def ac_get11_01():
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x02, 0x00, 0x11, 0x01],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def ac_get11_00():
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def ac_set_vlouver(lvr):
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, lvr, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
async def ac_set_hlouver(lvr):
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, lvr, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
# key надо искать в выводе list_entities_services
|
|
||||||
service = aioesphomeapi.UserService(
|
|
||||||
name="send_data",
|
|
||||||
key=311254518,
|
|
||||||
args=[
|
|
||||||
aioesphomeapi.UserServiceArg(name="data_buf", type=aioesphomeapi.UserServiceArgType.INT_ARRAY),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
time.sleep(7)
|
|
||||||
await ac_get11_00()
|
|
||||||
time.sleep(7)
|
|
||||||
await ac_get11_01()
|
|
||||||
|
|
||||||
#await ac_set_vlouver( 0b10010000 ) # swing on
|
|
||||||
#await ac_set_vlouver( 0b10010111 ) # swing off
|
|
||||||
#await ac_set_vlouver( 0b10010001 ) # 1
|
|
||||||
#await ac_set_vlouver( 0b10010010 ) # 2
|
|
||||||
#await ac_set_vlouver( 0b10010011 ) # 3
|
|
||||||
#await ac_set_vlouver( 0b10010100 ) # 4
|
|
||||||
#await ac_set_vlouver( 0b10010101 ) # 5
|
|
||||||
#await ac_set_vlouver( 0b10010110 ) # не работает, сбрасывает на swing on
|
|
||||||
#time.sleep(5)
|
|
||||||
|
|
||||||
#await ac_set_hlouver( 0b00000000 ) # swing on
|
|
||||||
#await ac_set_hlouver( 0b11100000 ) # swing off
|
|
||||||
#await ac_set_hlouver( 0b00100000 ) # не работает, сбрасывает в swing off
|
|
||||||
#await ac_set_hlouver( 0b01000000 ) # не работает, сбрасывает в swing off
|
|
||||||
#await ac_set_hlouver( 0b01100000 ) # не работает, сбрасывает в swing off
|
|
||||||
#await ac_set_hlouver( 0b10000000 ) # не работает, сбрасывает в swing off
|
|
||||||
#await ac_set_hlouver( 0b10100000 ) # не работает, сбрасывает в swing off
|
|
||||||
#await ac_set_hlouver( 0b11000000 ) # не работает, сбрасывает в swing off
|
|
||||||
#time.sleep(5)
|
|
||||||
|
|
||||||
async def test_byte(bt):
|
|
||||||
await api.execute_service(
|
|
||||||
service,
|
|
||||||
data={
|
|
||||||
#display on
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
#"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
#display off
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00],
|
|
||||||
# swing on
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
#"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x90, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
# swing off
|
|
||||||
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
|
||||||
#"data_buf": [0xBB, 0x00, 0x06, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x01, 0x01, 0x97, 0xE0, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00],
|
|
||||||
}
|
|
||||||
)
|
|
||||||
'''
|
|
||||||
не проходит команда, если байт 1 или 7 не 0x00
|
|
||||||
не проходит команда, если байт 3 не 0x80
|
|
||||||
|
|
||||||
проходит и не меняется, если меняю байт 4 или 5
|
|
||||||
'''
|
|
||||||
|
|
||||||
#await test_byte(0b10000110)
|
|
||||||
#await test_byte(0b01000110)
|
|
||||||
#await test_byte(0b00100110)
|
|
||||||
#await test_byte(0b00010110)
|
|
||||||
time.sleep(2)
|
|
||||||
|
|
||||||
|
|
||||||
parser = createParser()
|
|
||||||
namespace = parser.parse_args()
|
|
||||||
print("IP: ", namespace.ip[0])
|
|
||||||
|
|
||||||
|
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
try:
|
|
||||||
#asyncio.ensure_future(main())
|
|
||||||
#loop.run_forever()
|
|
||||||
loop.run_until_complete(main())
|
|
||||||
except aioesphomeapi.InvalidAuthAPIError as e:
|
|
||||||
print(e)
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
pass
|
|
||||||
finally:
|
|
||||||
loop.close()
|
|
||||||
pass
|
|
||||||
@@ -1,122 +0,0 @@
|
|||||||
external_components:
|
|
||||||
- source: github://GrKoR/esphome_aux_ac_component@dev
|
|
||||||
components: [ aux_ac ]
|
|
||||||
refresh: 0s
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
devicename: test_aux_ac_ext_esp32
|
|
||||||
upper_devicename: Test AUX
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: $devicename
|
|
||||||
platform: ESP32
|
|
||||||
board: nodemcu-32s
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_pass
|
|
||||||
manual_ip:
|
|
||||||
static_ip: 192.168.0.151 # Для примера
|
|
||||||
gateway: !secret wifi_gateway
|
|
||||||
subnet: !secret wifi_subnet
|
|
||||||
dns1: 8.8.8.8
|
|
||||||
dns2: 1.1.1.1
|
|
||||||
reboot_timeout: 0s
|
|
||||||
ap:
|
|
||||||
ssid: Test AUX Fallback Hotspot
|
|
||||||
password: !secret wifi_ap_pass
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
baud_rate: 0
|
|
||||||
|
|
||||||
api:
|
|
||||||
password: !secret api_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: !secret ota_pass
|
|
||||||
|
|
||||||
uart:
|
|
||||||
id: ac_uart_bus
|
|
||||||
#tx_pin: GPIO1
|
|
||||||
#rx_pin: GPIO3
|
|
||||||
tx_pin: TX
|
|
||||||
rx_pin: RX
|
|
||||||
baud_rate: 4800
|
|
||||||
data_bits: 8
|
|
||||||
parity: EVEN
|
|
||||||
stop_bits: 1
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: uptime
|
|
||||||
name: Uptime Sensor
|
|
||||||
|
|
||||||
climate:
|
|
||||||
- platform: aux_ac
|
|
||||||
name: $upper_devicename
|
|
||||||
id: aux_id
|
|
||||||
uart_id: ac_uart_bus
|
|
||||||
period: 7s
|
|
||||||
show_action: true
|
|
||||||
display_inverted: true
|
|
||||||
indoor_temperature:
|
|
||||||
name: $upper_devicename Indoor Temperature
|
|
||||||
id: ${devicename}_indoor_temp
|
|
||||||
internal: false
|
|
||||||
display_state:
|
|
||||||
name: $upper_devicename Display State
|
|
||||||
id: ${devicename}_display_state
|
|
||||||
internal: false
|
|
||||||
outdoor_temperature:
|
|
||||||
name: $upper_devicename Outdoor Temperature
|
|
||||||
id: ${devicename}_outdoor_temp
|
|
||||||
internal: false
|
|
||||||
outbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Outbound Temperature
|
|
||||||
id: ${devicename}_outbound_temp
|
|
||||||
internal: false
|
|
||||||
inbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Inbound Temperature
|
|
||||||
id: ${devicename}_inbound_temp
|
|
||||||
internal: false
|
|
||||||
compressor_temperature:
|
|
||||||
name: $upper_devicename Compressor Temperature
|
|
||||||
id: ${devicename}_strange_temp
|
|
||||||
internal: false
|
|
||||||
defrost_state:
|
|
||||||
name: $upper_devicename Defrost State
|
|
||||||
id: ${devicename}_defrost_state
|
|
||||||
internal: false
|
|
||||||
inverter_power:
|
|
||||||
name: $upper_devicename Invertor Power
|
|
||||||
id: ${devicename}_invertor_power
|
|
||||||
internal: false
|
|
||||||
preset_reporter:
|
|
||||||
name: $upper_devicename Preset Reporter
|
|
||||||
id: ${devicename}_preset_reporter
|
|
||||||
internal: false
|
|
||||||
visual:
|
|
||||||
min_temperature: 16
|
|
||||||
max_temperature: 32
|
|
||||||
temperature_step: 0.5
|
|
||||||
supported_modes:
|
|
||||||
- HEAT_COOL
|
|
||||||
- COOL
|
|
||||||
- HEAT
|
|
||||||
- DRY
|
|
||||||
- FAN_ONLY
|
|
||||||
custom_fan_modes:
|
|
||||||
- MUTE
|
|
||||||
- TURBO
|
|
||||||
supported_presets:
|
|
||||||
- SLEEP
|
|
||||||
custom_presets:
|
|
||||||
- CLEAN
|
|
||||||
- HEALTH
|
|
||||||
- ANTIFUNGUS
|
|
||||||
supported_swing_modes:
|
|
||||||
- VERTICAL
|
|
||||||
- HORIZONTAL
|
|
||||||
- BOTH
|
|
||||||
@@ -1,157 +0,0 @@
|
|||||||
external_components:
|
|
||||||
- source: github://GrKoR/esphome_aux_ac_component@dev
|
|
||||||
components: [ aux_ac ]
|
|
||||||
refresh: 0s
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
devicename: test_aux_ac_ext_engeneer
|
|
||||||
upper_devicename: Test AUX
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: $devicename
|
|
||||||
platform: ESP8266
|
|
||||||
board: esp12e
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_pass
|
|
||||||
manual_ip:
|
|
||||||
static_ip: !secret wifi_ip
|
|
||||||
gateway: !secret wifi_gateway
|
|
||||||
subnet: !secret wifi_subnet
|
|
||||||
dns1: 8.8.8.8
|
|
||||||
dns2: 1.1.1.1
|
|
||||||
reboot_timeout: 0s
|
|
||||||
ap:
|
|
||||||
ssid: Test AUX Fallback Hotspot
|
|
||||||
password: !secret wifi_ap_pass
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
baud_rate: 0
|
|
||||||
|
|
||||||
api:
|
|
||||||
password: !secret api_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
services:
|
|
||||||
# этот сервис можно вызвать из Home Assistant или Python. Он отправляет полученные байты в кондиционер
|
|
||||||
- service: send_data
|
|
||||||
variables:
|
|
||||||
data_buf: int[]
|
|
||||||
then:
|
|
||||||
# ВАЖНО! Только для инженеров!
|
|
||||||
# Вызывайте метод aux_ac.send_packet только если понимаете, что делаете! Он не проверяет данные, а передаёт
|
|
||||||
# кондиционеру всё как есть. Какой эффект получится от передачи кондиционеру рандомных байт, никто не знает.
|
|
||||||
# Вы действуете на свой страх и риск.
|
|
||||||
- aux_ac.send_packet:
|
|
||||||
id: aux_id
|
|
||||||
data: !lambda |-
|
|
||||||
std::vector<uint8_t> data{};
|
|
||||||
for (int n : data_buf) {
|
|
||||||
data.push_back( (uint8_t) n );
|
|
||||||
}
|
|
||||||
return data;
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: !secret ota_pass
|
|
||||||
|
|
||||||
web_server:
|
|
||||||
port: 80
|
|
||||||
|
|
||||||
uart:
|
|
||||||
id: ac_uart_bus
|
|
||||||
tx_pin: GPIO1
|
|
||||||
rx_pin: GPIO3
|
|
||||||
baud_rate: 4800
|
|
||||||
data_bits: 8
|
|
||||||
parity: EVEN
|
|
||||||
stop_bits: 1
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: uptime
|
|
||||||
name: Uptime Sensor
|
|
||||||
|
|
||||||
climate:
|
|
||||||
- platform: aux_ac
|
|
||||||
name: $upper_devicename
|
|
||||||
id: aux_id
|
|
||||||
uart_id: ac_uart_bus
|
|
||||||
period: 7s
|
|
||||||
show_action: true
|
|
||||||
display_inverted: true
|
|
||||||
optimistic: true
|
|
||||||
indoor_temperature:
|
|
||||||
name: $upper_devicename Indoor Temperature
|
|
||||||
id: ${devicename}_indoor_temp
|
|
||||||
internal: false
|
|
||||||
display_state:
|
|
||||||
name: $upper_devicename Display State
|
|
||||||
id: ${devicename}_display_state
|
|
||||||
internal: false
|
|
||||||
outdoor_temperature:
|
|
||||||
name: $upper_devicename Outdoor Temperature
|
|
||||||
id: ${devicename}_outdoor_temp
|
|
||||||
internal: false
|
|
||||||
outbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Outbound Temperature
|
|
||||||
id: ${devicename}_outbound_temp
|
|
||||||
internal: false
|
|
||||||
inbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Inbound Temperature
|
|
||||||
id: ${devicename}_inbound_temp
|
|
||||||
internal: false
|
|
||||||
compressor_temperature:
|
|
||||||
name: $upper_devicename Compressor Temperature
|
|
||||||
id: ${devicename}_strange_temp
|
|
||||||
internal: false
|
|
||||||
defrost_state:
|
|
||||||
name: $upper_devicename Defrost State
|
|
||||||
id: ${devicename}_defrost_state
|
|
||||||
internal: false
|
|
||||||
inverter_power:
|
|
||||||
name: $upper_devicename Invertor Power
|
|
||||||
id: ${devicename}_invertor_power
|
|
||||||
internal: false
|
|
||||||
preset_reporter:
|
|
||||||
name: $upper_devicename Preset Reporter
|
|
||||||
id: ${devicename}_preset_reporter
|
|
||||||
internal: false
|
|
||||||
visual:
|
|
||||||
min_temperature: 16
|
|
||||||
max_temperature: 32
|
|
||||||
temperature_step: 0.5
|
|
||||||
supported_modes:
|
|
||||||
- HEAT_COOL
|
|
||||||
- COOL
|
|
||||||
- HEAT
|
|
||||||
- DRY
|
|
||||||
- FAN_ONLY
|
|
||||||
custom_fan_modes:
|
|
||||||
- MUTE
|
|
||||||
- TURBO
|
|
||||||
supported_presets:
|
|
||||||
- SLEEP
|
|
||||||
custom_presets:
|
|
||||||
- CLEAN
|
|
||||||
- HEALTH
|
|
||||||
- ANTIFUNGUS
|
|
||||||
supported_swing_modes:
|
|
||||||
- VERTICAL
|
|
||||||
- HORIZONTAL
|
|
||||||
- BOTH
|
|
||||||
|
|
||||||
|
|
||||||
switch:
|
|
||||||
- platform: template
|
|
||||||
name: AC Display
|
|
||||||
lambda: |-
|
|
||||||
if (id(${devicename}_display_state).state) {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
turn_on_action:
|
|
||||||
- aux_ac.display_on: aux_id
|
|
||||||
turn_off_action:
|
|
||||||
- aux_ac.display_off: aux_id
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
external_components:
|
|
||||||
- source: github://GrKoR/esphome_aux_ac_component@dev
|
|
||||||
components: [ aux_ac ]
|
|
||||||
refresh: 0s
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
devicename: test_ext_power_limitations
|
|
||||||
upper_devicename: Test AUX
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: $devicename
|
|
||||||
platform: ESP8266
|
|
||||||
board: esp12e
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_pass
|
|
||||||
manual_ip:
|
|
||||||
static_ip: !secret wifi_ip
|
|
||||||
gateway: !secret wifi_gateway
|
|
||||||
subnet: !secret wifi_subnet
|
|
||||||
dns1: 8.8.8.8
|
|
||||||
dns2: 1.1.1.1
|
|
||||||
reboot_timeout: 0s
|
|
||||||
ap:
|
|
||||||
ssid: Test AUX Fallback Hotspot
|
|
||||||
password: !secret wifi_ap_pass
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
baud_rate: 0
|
|
||||||
|
|
||||||
api:
|
|
||||||
password: !secret api_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: !secret ota_pass
|
|
||||||
|
|
||||||
web_server:
|
|
||||||
port: 80
|
|
||||||
|
|
||||||
uart:
|
|
||||||
id: ac_uart_bus
|
|
||||||
tx_pin: GPIO1
|
|
||||||
rx_pin: GPIO3
|
|
||||||
baud_rate: 4800
|
|
||||||
data_bits: 8
|
|
||||||
parity: EVEN
|
|
||||||
stop_bits: 1
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: uptime
|
|
||||||
name: Uptime Sensor
|
|
||||||
|
|
||||||
climate:
|
|
||||||
- platform: aux_ac
|
|
||||||
name: $upper_devicename
|
|
||||||
id: aux_id
|
|
||||||
uart_id: ac_uart_bus
|
|
||||||
period: 7s
|
|
||||||
show_action: true
|
|
||||||
display_inverted: true
|
|
||||||
timeout: 150
|
|
||||||
indoor_temperature:
|
|
||||||
name: $upper_devicename Indoor Temperature
|
|
||||||
id: ${devicename}_indoor_temp
|
|
||||||
internal: false
|
|
||||||
display_state:
|
|
||||||
name: $upper_devicename Display State
|
|
||||||
id: ${devicename}_display_state
|
|
||||||
internal: false
|
|
||||||
outdoor_temperature:
|
|
||||||
name: $upper_devicename Outdoor Temperature
|
|
||||||
id: ${devicename}_outdoor_temp
|
|
||||||
internal: false
|
|
||||||
outbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Outbound Temperature
|
|
||||||
id: ${devicename}_outbound_temp
|
|
||||||
internal: false
|
|
||||||
inbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Inbound Temperature
|
|
||||||
id: ${devicename}_inbound_temp
|
|
||||||
internal: false
|
|
||||||
compressor_temperature:
|
|
||||||
name: $upper_devicename Compressor Temperature
|
|
||||||
id: ${devicename}_strange_temp
|
|
||||||
internal: false
|
|
||||||
defrost_state:
|
|
||||||
name: $upper_devicename Defrost State
|
|
||||||
id: ${devicename}_defrost_state
|
|
||||||
internal: false
|
|
||||||
inverter_power:
|
|
||||||
name: $upper_devicename Inverter Power
|
|
||||||
id: ${devicename}_invertor_power
|
|
||||||
internal: false
|
|
||||||
preset_reporter:
|
|
||||||
name: $upper_devicename Preset Reporter
|
|
||||||
id: ${devicename}_preset_reporter
|
|
||||||
internal: false
|
|
||||||
inverter_power_limit_value:
|
|
||||||
name: $upper_devicename Inverter Power Limit Value
|
|
||||||
id: ${devicename}_inverter_power_limit_value
|
|
||||||
internal: false
|
|
||||||
inverter_power_limit_state:
|
|
||||||
name: $upper_devicename Inverter Power Limit State
|
|
||||||
id: ${devicename}_inverter_power_limit_state
|
|
||||||
internal: false
|
|
||||||
visual:
|
|
||||||
min_temperature: 16
|
|
||||||
max_temperature: 32
|
|
||||||
temperature_step: 0.5
|
|
||||||
supported_modes:
|
|
||||||
- HEAT_COOL
|
|
||||||
- COOL
|
|
||||||
- HEAT
|
|
||||||
- DRY
|
|
||||||
- FAN_ONLY
|
|
||||||
custom_fan_modes:
|
|
||||||
- MUTE
|
|
||||||
- TURBO
|
|
||||||
supported_presets:
|
|
||||||
- SLEEP
|
|
||||||
custom_presets:
|
|
||||||
- CLEAN
|
|
||||||
- HEALTH
|
|
||||||
- ANTIFUNGUS
|
|
||||||
supported_swing_modes:
|
|
||||||
- VERTICAL
|
|
||||||
- HORIZONTAL
|
|
||||||
- BOTH
|
|
||||||
|
|
||||||
|
|
||||||
button:
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} IPower Limit Off
|
|
||||||
icon: "mdi:power-plug-off-outline"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.power_limit_off: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} IPower Limit On Half
|
|
||||||
icon: "mdi:fraction-one-half"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.power_limit_on:
|
|
||||||
id: aux_id
|
|
||||||
limit: 50
|
|
||||||
|
|
||||||
number:
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} IPower Limit Value
|
|
||||||
id: ${devicename}_ipower_limit_value
|
|
||||||
icon: "mdi:battery-unknown"
|
|
||||||
mode: "slider"
|
|
||||||
min_value: 30
|
|
||||||
max_value: 100
|
|
||||||
step: 1
|
|
||||||
set_action:
|
|
||||||
then:
|
|
||||||
- lambda: !lambda |-
|
|
||||||
id(aux_id).powerLimitationOnSequence( x );
|
|
||||||
|
|
||||||
@@ -1,126 +0,0 @@
|
|||||||
external_components:
|
|
||||||
- source:
|
|
||||||
type: local
|
|
||||||
path: ../components
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
devicename: test_local_airflow_dir
|
|
||||||
upper_devicename: Test AUX
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: $devicename
|
|
||||||
platform: ESP8266
|
|
||||||
board: esp12e
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_pass
|
|
||||||
manual_ip:
|
|
||||||
static_ip: !secret wifi_ip
|
|
||||||
gateway: !secret wifi_gateway
|
|
||||||
subnet: !secret wifi_subnet
|
|
||||||
dns1: 8.8.8.8
|
|
||||||
dns2: 1.1.1.1
|
|
||||||
reboot_timeout: 0s
|
|
||||||
ap:
|
|
||||||
ssid: $upper_devicename Fallback Hotspot
|
|
||||||
password: !secret wifi_ap_pass
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
baud_rate: 0
|
|
||||||
|
|
||||||
api:
|
|
||||||
password: !secret api_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: !secret ota_pass
|
|
||||||
|
|
||||||
web_server:
|
|
||||||
port: 80
|
|
||||||
|
|
||||||
uart:
|
|
||||||
id: ac_uart_bus
|
|
||||||
tx_pin: GPIO1
|
|
||||||
rx_pin: GPIO3
|
|
||||||
baud_rate: 4800
|
|
||||||
data_bits: 8
|
|
||||||
parity: EVEN
|
|
||||||
stop_bits: 1
|
|
||||||
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: uptime
|
|
||||||
name: Uptime Sensor
|
|
||||||
|
|
||||||
|
|
||||||
climate:
|
|
||||||
- platform: aux_ac
|
|
||||||
name: $upper_devicename
|
|
||||||
id: aux_id
|
|
||||||
uart_id: ac_uart_bus
|
|
||||||
period: 7s
|
|
||||||
show_action: true
|
|
||||||
display_inverted: true
|
|
||||||
|
|
||||||
|
|
||||||
button:
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} VLouver Stop
|
|
||||||
icon: "mdi:circle-small"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.vlouver_stop: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} VLouver Swing
|
|
||||||
icon: "mdi:pan-vertical"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.vlouver_swing: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} VLouver Top
|
|
||||||
icon: "mdi:pan-up"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.vlouver_top: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} VLouver Middle Above
|
|
||||||
icon: "mdi:pan-top-left"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.vlouver_middle_above: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} VLouver Middle
|
|
||||||
icon: "mdi:pan-left"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.vlouver_middle: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} VLouver Middle Below
|
|
||||||
icon: "mdi:pan-bottom-left"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.vlouver_middle_below: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} VLouver Bottom
|
|
||||||
icon: "mdi:pan-down"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.vlouver_bottom: aux_id
|
|
||||||
|
|
||||||
|
|
||||||
number:
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} Vertical Louver
|
|
||||||
id: ${devicename}_vlouver
|
|
||||||
icon: "mdi:circle-small"
|
|
||||||
mode: "slider"
|
|
||||||
min_value: 0
|
|
||||||
max_value: 6
|
|
||||||
step: 1
|
|
||||||
set_action:
|
|
||||||
then:
|
|
||||||
- lambda: !lambda |-
|
|
||||||
if (x == 6) x = 7; // делаем так, чтобы выключение отрабатывать корректно
|
|
||||||
id(aux_id).setVLouverSequence( static_cast<esphome::aux_ac::ac_louver_V>(x) );
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
external_components:
|
|
||||||
- source:
|
|
||||||
type: local
|
|
||||||
path: ../components
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
devicename: test_local_power_limitations
|
|
||||||
upper_devicename: Test AUX
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: $devicename
|
|
||||||
platform: ESP8266
|
|
||||||
board: esp12e
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_pass
|
|
||||||
manual_ip:
|
|
||||||
static_ip: !secret wifi_ip
|
|
||||||
gateway: !secret wifi_gateway
|
|
||||||
subnet: !secret wifi_subnet
|
|
||||||
dns1: 8.8.8.8
|
|
||||||
dns2: 1.1.1.1
|
|
||||||
reboot_timeout: 0s
|
|
||||||
ap:
|
|
||||||
ssid: Test AUX Fallback Hotspot
|
|
||||||
password: !secret wifi_ap_pass
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
baud_rate: 0
|
|
||||||
|
|
||||||
api:
|
|
||||||
password: !secret api_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: !secret ota_pass
|
|
||||||
|
|
||||||
web_server:
|
|
||||||
port: 80
|
|
||||||
|
|
||||||
uart:
|
|
||||||
id: ac_uart_bus
|
|
||||||
tx_pin: GPIO1
|
|
||||||
rx_pin: GPIO3
|
|
||||||
baud_rate: 4800
|
|
||||||
data_bits: 8
|
|
||||||
parity: EVEN
|
|
||||||
stop_bits: 1
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: uptime
|
|
||||||
name: Uptime Sensor
|
|
||||||
|
|
||||||
climate:
|
|
||||||
- platform: aux_ac
|
|
||||||
name: $upper_devicename
|
|
||||||
id: aux_id
|
|
||||||
uart_id: ac_uart_bus
|
|
||||||
period: 7s
|
|
||||||
show_action: true
|
|
||||||
display_inverted: true
|
|
||||||
timeout: 150
|
|
||||||
indoor_temperature:
|
|
||||||
name: $upper_devicename Indoor Temperature
|
|
||||||
id: ${devicename}_indoor_temp
|
|
||||||
internal: false
|
|
||||||
display_state:
|
|
||||||
name: $upper_devicename Display State
|
|
||||||
id: ${devicename}_display_state
|
|
||||||
internal: false
|
|
||||||
outdoor_temperature:
|
|
||||||
name: $upper_devicename Outdoor Temperature
|
|
||||||
id: ${devicename}_outdoor_temp
|
|
||||||
internal: false
|
|
||||||
outbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Outbound Temperature
|
|
||||||
id: ${devicename}_outbound_temp
|
|
||||||
internal: false
|
|
||||||
inbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Inbound Temperature
|
|
||||||
id: ${devicename}_inbound_temp
|
|
||||||
internal: false
|
|
||||||
compressor_temperature:
|
|
||||||
name: $upper_devicename Compressor Temperature
|
|
||||||
id: ${devicename}_strange_temp
|
|
||||||
internal: false
|
|
||||||
defrost_state:
|
|
||||||
name: $upper_devicename Defrost State
|
|
||||||
id: ${devicename}_defrost_state
|
|
||||||
internal: false
|
|
||||||
inverter_power:
|
|
||||||
name: $upper_devicename Inverter Power
|
|
||||||
id: ${devicename}_invertor_power
|
|
||||||
internal: false
|
|
||||||
preset_reporter:
|
|
||||||
name: $upper_devicename Preset Reporter
|
|
||||||
id: ${devicename}_preset_reporter
|
|
||||||
internal: false
|
|
||||||
inverter_power_limit_value:
|
|
||||||
name: $upper_devicename Inverter Power Limit Value
|
|
||||||
id: ${devicename}_inverter_power_limit_value
|
|
||||||
internal: false
|
|
||||||
inverter_power_limit_state:
|
|
||||||
name: $upper_devicename Inverter Power Limit State
|
|
||||||
id: ${devicename}_inverter_power_limit_state
|
|
||||||
internal: false
|
|
||||||
visual:
|
|
||||||
min_temperature: 16
|
|
||||||
max_temperature: 32
|
|
||||||
temperature_step: 0.5
|
|
||||||
supported_modes:
|
|
||||||
- HEAT_COOL
|
|
||||||
- COOL
|
|
||||||
- HEAT
|
|
||||||
- DRY
|
|
||||||
- FAN_ONLY
|
|
||||||
custom_fan_modes:
|
|
||||||
- MUTE
|
|
||||||
- TURBO
|
|
||||||
supported_presets:
|
|
||||||
- SLEEP
|
|
||||||
custom_presets:
|
|
||||||
- CLEAN
|
|
||||||
- HEALTH
|
|
||||||
- ANTIFUNGUS
|
|
||||||
supported_swing_modes:
|
|
||||||
- VERTICAL
|
|
||||||
- HORIZONTAL
|
|
||||||
- BOTH
|
|
||||||
|
|
||||||
|
|
||||||
button:
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} IPower Limit Off
|
|
||||||
icon: "mdi:power-plug-off-outline"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.power_limit_off: aux_id
|
|
||||||
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} IPower Limit On Half
|
|
||||||
icon: "mdi:fraction-one-half"
|
|
||||||
on_press:
|
|
||||||
- aux_ac.power_limit_on:
|
|
||||||
id: aux_id
|
|
||||||
limit: 50
|
|
||||||
|
|
||||||
number:
|
|
||||||
- platform: template
|
|
||||||
name: ${upper_devicename} IPower Limit Value
|
|
||||||
id: ${devicename}_ipower_limit_value
|
|
||||||
icon: "mdi:battery-unknown"
|
|
||||||
mode: "slider"
|
|
||||||
min_value: 30
|
|
||||||
max_value: 100
|
|
||||||
step: 1
|
|
||||||
set_action:
|
|
||||||
then:
|
|
||||||
- lambda: !lambda |-
|
|
||||||
id(aux_id).powerLimitationOnSequence( x );
|
|
||||||
|
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
external_components:
|
|
||||||
- source:
|
|
||||||
type: local
|
|
||||||
path: ../components
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
devicename: test_local_airflow_dir
|
|
||||||
upper_devicename: Test AUX
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: $devicename
|
|
||||||
platform: ESP8266
|
|
||||||
board: esp12e
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_pass
|
|
||||||
manual_ip:
|
|
||||||
static_ip: !secret wifi_ip
|
|
||||||
gateway: !secret wifi_gateway
|
|
||||||
subnet: !secret wifi_subnet
|
|
||||||
dns1: 8.8.8.8
|
|
||||||
dns2: 1.1.1.1
|
|
||||||
reboot_timeout: 0s
|
|
||||||
ap:
|
|
||||||
ssid: Test AUX Fallback Hotspot
|
|
||||||
password: !secret wifi_ap_pass
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
baud_rate: 0
|
|
||||||
|
|
||||||
api:
|
|
||||||
password: !secret api_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: !secret ota_pass
|
|
||||||
|
|
||||||
web_server:
|
|
||||||
port: 80
|
|
||||||
|
|
||||||
uart:
|
|
||||||
id: ac_uart_bus
|
|
||||||
tx_pin: GPIO1
|
|
||||||
rx_pin: GPIO3
|
|
||||||
baud_rate: 4800
|
|
||||||
data_bits: 8
|
|
||||||
parity: EVEN
|
|
||||||
stop_bits: 1
|
|
||||||
|
|
||||||
sensor:
|
|
||||||
- platform: uptime
|
|
||||||
name: Uptime Sensor
|
|
||||||
|
|
||||||
climate:
|
|
||||||
- platform: aux_ac
|
|
||||||
name: $upper_devicename
|
|
||||||
id: aux_id
|
|
||||||
uart_id: ac_uart_bus
|
|
||||||
period: 7s
|
|
||||||
show_action: true
|
|
||||||
display_inverted: true
|
|
||||||
optimistic: true
|
|
||||||
indoor_temperature:
|
|
||||||
name: $upper_devicename Indoor Temperature
|
|
||||||
id: ${devicename}_indoor_temp
|
|
||||||
internal: false
|
|
||||||
display_state:
|
|
||||||
name: $upper_devicename Display State
|
|
||||||
id: ${devicename}_display_state
|
|
||||||
internal: false
|
|
||||||
outdoor_temperature:
|
|
||||||
name: $upper_devicename Outdoor Temperature
|
|
||||||
id: ${devicename}_outdoor_temp
|
|
||||||
internal: false
|
|
||||||
outbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Outbound Temperature
|
|
||||||
id: ${devicename}_outbound_temp
|
|
||||||
internal: false
|
|
||||||
inbound_temperature:
|
|
||||||
name: $upper_devicename Coolant Inbound Temperature
|
|
||||||
id: ${devicename}_inbound_temp
|
|
||||||
internal: false
|
|
||||||
compressor_temperature:
|
|
||||||
name: $upper_devicename Compressor Temperature
|
|
||||||
id: ${devicename}_strange_temp
|
|
||||||
internal: false
|
|
||||||
defrost_state:
|
|
||||||
name: $upper_devicename Defrost State
|
|
||||||
id: ${devicename}_defrost_state
|
|
||||||
internal: false
|
|
||||||
inverter_power:
|
|
||||||
name: $upper_devicename Invertor Power
|
|
||||||
id: ${devicename}_invertor_power
|
|
||||||
internal: false
|
|
||||||
preset_reporter:
|
|
||||||
name: $upper_devicename Preset Reporter
|
|
||||||
id: ${devicename}_preset_reporter
|
|
||||||
internal: false
|
|
||||||
visual:
|
|
||||||
min_temperature: 16
|
|
||||||
max_temperature: 32
|
|
||||||
temperature_step: 0.5
|
|
||||||
supported_modes:
|
|
||||||
- HEAT_COOL
|
|
||||||
- COOL
|
|
||||||
- HEAT
|
|
||||||
- DRY
|
|
||||||
- FAN_ONLY
|
|
||||||
custom_fan_modes:
|
|
||||||
- MUTE
|
|
||||||
- TURBO
|
|
||||||
supported_presets:
|
|
||||||
- SLEEP
|
|
||||||
custom_presets:
|
|
||||||
- CLEAN
|
|
||||||
- HEALTH
|
|
||||||
- ANTIFUNGUS
|
|
||||||
supported_swing_modes:
|
|
||||||
- VERTICAL
|
|
||||||
- HORIZONTAL
|
|
||||||
- BOTH
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
external_components:
|
|
||||||
- source:
|
|
||||||
type: local
|
|
||||||
path: ../components
|
|
||||||
#- source: github://GrKoR/esphome_aux_ac_component@dev
|
|
||||||
#components: [ aux_ac ]
|
|
||||||
#refresh: 0s
|
|
||||||
|
|
||||||
substitutions:
|
|
||||||
devicename: test_local_minimal
|
|
||||||
upper_devicename: Test AUX
|
|
||||||
|
|
||||||
esphome:
|
|
||||||
name: $devicename
|
|
||||||
platform: ESP8266
|
|
||||||
board: esp12e
|
|
||||||
|
|
||||||
wifi:
|
|
||||||
ssid: !secret wifi_ssid
|
|
||||||
password: !secret wifi_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
ap:
|
|
||||||
ssid: $upper_devicename Fallback Hotspot
|
|
||||||
password: !secret wifi_ap_pass
|
|
||||||
|
|
||||||
logger:
|
|
||||||
level: DEBUG
|
|
||||||
baud_rate: 0
|
|
||||||
|
|
||||||
api:
|
|
||||||
password: !secret api_pass
|
|
||||||
reboot_timeout: 0s
|
|
||||||
|
|
||||||
ota:
|
|
||||||
- platform: esphome
|
|
||||||
password: !secret ota_pass
|
|
||||||
|
|
||||||
uart:
|
|
||||||
id: ac_uart_bus
|
|
||||||
tx_pin: GPIO1
|
|
||||||
rx_pin: GPIO3
|
|
||||||
baud_rate: 4800
|
|
||||||
data_bits: 8
|
|
||||||
parity: EVEN
|
|
||||||
stop_bits: 1
|
|
||||||
|
|
||||||
climate:
|
|
||||||
- platform: aux_ac
|
|
||||||
name: $upper_devicename
|
|
||||||
Reference in New Issue
Block a user