Added icons and device classes. Added top92.

This commit is contained in:
ElVit 2025-01-28 08:29:48 +01:00
parent 0a786e60a1
commit 5db8924b9d
9 changed files with 177 additions and 97 deletions

View File

@ -2,7 +2,7 @@ import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.components import binary_sensor
from esphome.const import (
DEVICE_CLASS_HEAT,
DEVICE_CLASS_RUNNING,
)
from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID
@ -43,20 +43,44 @@ CONFIG_SCHEMA = cv.All(
{
cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent),
cv.Optional(CONF_BIN_SENS_TOP0): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP2): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP3): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP13): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP26): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP60): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP61): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP68): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP69): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP99): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP100): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP108): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP109): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP110): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_BIN_SENS_TOP0): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP2): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP3): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP13): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP26): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP60): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP61): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP68): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP69): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP99): binary_sensor.binary_sensor_schema(
),
cv.Optional(CONF_BIN_SENS_TOP100): binary_sensor.binary_sensor_schema(
),
cv.Optional(CONF_BIN_SENS_TOP108): binary_sensor.binary_sensor_schema(
),
cv.Optional(CONF_BIN_SENS_TOP109): binary_sensor.binary_sensor_schema(
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_BIN_SENS_TOP110): binary_sensor.binary_sensor_schema(
),
}
).extend(cv.COMPONENT_SCHEMA)
)

View File

@ -21,6 +21,61 @@ constexpr const char* const PanasonicDecode::ExtPadHeaterType[];
constexpr const char* const PanasonicDecode::Bivalent[];
constexpr const char* const PanasonicDecode::ModelNames[];
// stores the bytes #129 to #138 of known models in the same order as the ModelNames above
static const uint8_t KnownModels[NUMBER_OF_MODELS][10] =
{
0xE2, 0xCF, 0x0B, 0x13, 0x33, 0x32, 0xD1, 0x0C, 0x16, 0x33, //0
0xE2, 0xCF, 0x0B, 0x14, 0x33, 0x42, 0xD1, 0x0B, 0x17, 0x33, //1
0xE2, 0xCF, 0x0D, 0x77, 0x09, 0x12, 0xD0, 0x0B, 0x05, 0x11, //2
0xE2, 0xCF, 0x0C, 0x88, 0x05, 0x12, 0xD0, 0x0B, 0x97, 0x05, //3
0xE2, 0xCF, 0x0D, 0x85, 0x05, 0x12, 0xD0, 0x0C, 0x94, 0x05, //4
0xE2, 0xCF, 0x0D, 0x86, 0x05, 0x12, 0xD0, 0x0C, 0x95, 0x05, //5
0xE2, 0xCF, 0x0D, 0x87, 0x05, 0x12, 0xD0, 0x0C, 0x96, 0x05, //6
0xE2, 0xCE, 0x0D, 0x71, 0x81, 0x72, 0xCE, 0x0C, 0x92, 0x81, //7
0x62, 0xD2, 0x0B, 0x43, 0x54, 0x42, 0xD2, 0x0B, 0x72, 0x66, //8
0xC2, 0xD3, 0x0B, 0x33, 0x65, 0xB2, 0xD3, 0x0B, 0x94, 0x65, //9
0xE2, 0xCF, 0x0B, 0x15, 0x33, 0x42, 0xD1, 0x0B, 0x18, 0x33, //10
0xE2, 0xCF, 0x0B, 0x41, 0x34, 0x82, 0xD1, 0x0B, 0x31, 0x35, //11
0x62, 0xD2, 0x0B, 0x45, 0x54, 0x42, 0xD2, 0x0B, 0x47, 0x55, //12
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0D, 0x95, 0x05, //13
0xE2, 0xCF, 0x0B, 0x82, 0x05, 0x12, 0xD0, 0x0C, 0x91, 0x05, //14
0xE2, 0xCF, 0x0C, 0x55, 0x14, 0x12, 0xD0, 0x0B, 0x15, 0x08, //15
0xE2, 0xCF, 0x0C, 0x43, 0x00, 0x12, 0xD0, 0x0B, 0x15, 0x08, //16
0x62, 0xD2, 0x0B, 0x45, 0x54, 0x32, 0xD2, 0x0C, 0x45, 0x55, //17
0x62, 0xD2, 0x0B, 0x43, 0x54, 0x42, 0xD2, 0x0C, 0x46, 0x55, //18
0xE2, 0xCF, 0x0C, 0x54, 0x14, 0x12, 0xD0, 0x0B, 0x14, 0x08, //19
0xC2, 0xD3, 0x0B, 0x34, 0x65, 0xB2, 0xD3, 0x0B, 0x95, 0x65, //20
0xC2, 0xD3, 0x0B, 0x35, 0x65, 0xB2, 0xD3, 0x0B, 0x96, 0x65, //21
0x62, 0xD2, 0x0B, 0x41, 0x54, 0x32, 0xD2, 0x0C, 0x45, 0x55, //22
0x32, 0xD4, 0x0B, 0x87, 0x84, 0x73, 0x90, 0x0C, 0x84, 0x84, //23
0x32, 0xD4, 0x0B, 0x88, 0x84, 0x73, 0x90, 0x0C, 0x85, 0x84, //24
0xE2, 0xCF, 0x0B, 0x75, 0x09, 0x12, 0xD0, 0x0C, 0x06, 0x11, //25
0x42, 0xD4, 0x0B, 0x83, 0x71, 0x42, 0xD2, 0x0C, 0x46, 0x55, //26
0xC2, 0xD3, 0x0C, 0x34, 0x65, 0xB2, 0xD3, 0x0B, 0x95, 0x65, //27
0xC2, 0xD3, 0x0C, 0x33, 0x65, 0xB2, 0xD3, 0x0B, 0x94, 0x65, //28
0xE2, 0xCF, 0x0B, 0x83, 0x05, 0x12, 0xD0, 0x0D, 0x92, 0x05, //29
0xE2, 0xCF, 0x0C, 0x78, 0x09, 0x12, 0xD0, 0x0B, 0x06, 0x11, //30
0xC2, 0xD3, 0x0C, 0x35, 0x65, 0xB2, 0xD3, 0x0B, 0x96, 0x65, //31
0x32, 0xD4, 0x0B, 0x99, 0x77, 0x62, 0x90, 0x0B, 0x01, 0x78, //32
0x42, 0xD4, 0x0B, 0x15, 0x76, 0x12, 0xD0, 0x0B, 0x10, 0x11, //33
0xE2, 0xD5, 0x0C, 0x29, 0x99, 0x83, 0x92, 0x0C, 0x28, 0x98, //34
0xE2, 0xCF, 0x0D, 0x85, 0x05, 0x12, 0xD0, 0x0E, 0x94, 0x05, //35
0xE2, 0xD5, 0x0D, 0x36, 0x99, 0x02, 0xD6, 0x0F, 0x67, 0x95, //36
0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0E, 0x66, 0x95, //37
0xE2, 0xD5, 0x0B, 0x34, 0x99, 0x83, 0x92, 0x0C, 0x29, 0x98, //38
0xE2, 0xCF, 0x0C, 0x89, 0x05, 0x12, 0xD0, 0x0C, 0x98, 0x05, //39
0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0E, 0x67, 0x95, //40
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0C, 0x96, 0x05, //41
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0E, 0x95, 0x05, //42
0x32, 0xD4, 0x0B, 0x89, 0x84, 0x73, 0x90, 0x0C, 0x86, 0x84, //43
0x32, 0xD4, 0x0B, 0x00, 0x78, 0x62, 0x90, 0x0B, 0x02, 0x78, //44
0xE2, 0xCF, 0x0B, 0x82, 0x05, 0x12, 0xD0, 0x0D, 0x91, 0x05, //45
0xE2, 0xD5, 0x0D, 0x99, 0x94, 0x02, 0xD6, 0x0D, 0x68, 0x95, //46
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0C, 0x95, 0x05, //47
0xE2, 0xD5, 0x0B, 0x34, 0x99, 0x83, 0x92, 0x0C, 0x28, 0x98, //48
0xE2, 0xCF, 0x0D, 0x77, 0x09, 0x12, 0xD0, 0x0C, 0x05, 0x11, //49
0xE2, 0xCF, 0x0D, 0x86, 0x05, 0x12, 0xD0, 0x0E, 0x95, 0x05, //50
};
int PanasonicDecode::getBit1(uint8_t input)
{
@ -177,11 +232,14 @@ int PanasonicDecode::getBivalent(uint8_t input)
// TOP92 //
int PanasonicDecode::getModel(std::vector<uint8_t>& data, uint8_t index)
{
uint8_t model[10] = { data[index], data[index+1], data[index+2], data[index+3], data[index+4], data[index+5], data[index+6], data[index+7], data[index+8], data[index+9] };
int result = -1;
int size = sizeof(KnownModels) / sizeof(KnownModels[0]);
uint8_t model[10] =
{
data[index], data[index+1], data[index+2], data[index+3], data[index+4],
data[index+5], data[index+6], data[index+7], data[index+8], data[index+9]
};
for (unsigned int i = 0 ; i < size; i++)
for (size_t i = 0 ; i < NUMBER_OF_MODELS; i++)
{
if (memcmp(model, KnownModels[i], 10) == 0)
{

View File

@ -66,7 +66,6 @@ public:
static const constexpr char* const LiquidType[] = {"2", "Water", "Glycol"};
static const constexpr char* const ExtPadHeaterType[] = {"3", "Disabled", "Type-A","Type-B"};
static const constexpr char* const Bivalent[] = {"6", "Off", "Alternativ", "A-Off", "Parallel", "P-Off", "Parallel Advanced"};
static const constexpr char* const ModelNames[] =
{
"51", //string representation of number of known models (last model number + 1)
@ -122,60 +121,4 @@ public:
"IDU:WH-SXC09H3E5, ODU:WH-UX09HE5", //49
"IDU:WH-SXC12H9E8, ODU:WH-UX12HE8", //50
};
// stores the bytes #129 to #138 of known models in the same order as the ModelNames above
static constexpr uint8_t KnownModels[NUMBER_OF_MODELS][10] =
{
0xE2, 0xCF, 0x0B, 0x13, 0x33, 0x32, 0xD1, 0x0C, 0x16, 0x33, //0
0xE2, 0xCF, 0x0B, 0x14, 0x33, 0x42, 0xD1, 0x0B, 0x17, 0x33, //1
0xE2, 0xCF, 0x0D, 0x77, 0x09, 0x12, 0xD0, 0x0B, 0x05, 0x11, //2
0xE2, 0xCF, 0x0C, 0x88, 0x05, 0x12, 0xD0, 0x0B, 0x97, 0x05, //3
0xE2, 0xCF, 0x0D, 0x85, 0x05, 0x12, 0xD0, 0x0C, 0x94, 0x05, //4
0xE2, 0xCF, 0x0D, 0x86, 0x05, 0x12, 0xD0, 0x0C, 0x95, 0x05, //5
0xE2, 0xCF, 0x0D, 0x87, 0x05, 0x12, 0xD0, 0x0C, 0x96, 0x05, //6
0xE2, 0xCE, 0x0D, 0x71, 0x81, 0x72, 0xCE, 0x0C, 0x92, 0x81, //7
0x62, 0xD2, 0x0B, 0x43, 0x54, 0x42, 0xD2, 0x0B, 0x72, 0x66, //8
0xC2, 0xD3, 0x0B, 0x33, 0x65, 0xB2, 0xD3, 0x0B, 0x94, 0x65, //9
0xE2, 0xCF, 0x0B, 0x15, 0x33, 0x42, 0xD1, 0x0B, 0x18, 0x33, //10
0xE2, 0xCF, 0x0B, 0x41, 0x34, 0x82, 0xD1, 0x0B, 0x31, 0x35, //11
0x62, 0xD2, 0x0B, 0x45, 0x54, 0x42, 0xD2, 0x0B, 0x47, 0x55, //12
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0D, 0x95, 0x05, //13
0xE2, 0xCF, 0x0B, 0x82, 0x05, 0x12, 0xD0, 0x0C, 0x91, 0x05, //14
0xE2, 0xCF, 0x0C, 0x55, 0x14, 0x12, 0xD0, 0x0B, 0x15, 0x08, //15
0xE2, 0xCF, 0x0C, 0x43, 0x00, 0x12, 0xD0, 0x0B, 0x15, 0x08, //16
0x62, 0xD2, 0x0B, 0x45, 0x54, 0x32, 0xD2, 0x0C, 0x45, 0x55, //17
0x62, 0xD2, 0x0B, 0x43, 0x54, 0x42, 0xD2, 0x0C, 0x46, 0x55, //18
0xE2, 0xCF, 0x0C, 0x54, 0x14, 0x12, 0xD0, 0x0B, 0x14, 0x08, //19
0xC2, 0xD3, 0x0B, 0x34, 0x65, 0xB2, 0xD3, 0x0B, 0x95, 0x65, //20
0xC2, 0xD3, 0x0B, 0x35, 0x65, 0xB2, 0xD3, 0x0B, 0x96, 0x65, //21
0x62, 0xD2, 0x0B, 0x41, 0x54, 0x32, 0xD2, 0x0C, 0x45, 0x55, //22
0x32, 0xD4, 0x0B, 0x87, 0x84, 0x73, 0x90, 0x0C, 0x84, 0x84, //23
0x32, 0xD4, 0x0B, 0x88, 0x84, 0x73, 0x90, 0x0C, 0x85, 0x84, //24
0xE2, 0xCF, 0x0B, 0x75, 0x09, 0x12, 0xD0, 0x0C, 0x06, 0x11, //25
0x42, 0xD4, 0x0B, 0x83, 0x71, 0x42, 0xD2, 0x0C, 0x46, 0x55, //26
0xC2, 0xD3, 0x0C, 0x34, 0x65, 0xB2, 0xD3, 0x0B, 0x95, 0x65, //27
0xC2, 0xD3, 0x0C, 0x33, 0x65, 0xB2, 0xD3, 0x0B, 0x94, 0x65, //28
0xE2, 0xCF, 0x0B, 0x83, 0x05, 0x12, 0xD0, 0x0D, 0x92, 0x05, //29
0xE2, 0xCF, 0x0C, 0x78, 0x09, 0x12, 0xD0, 0x0B, 0x06, 0x11, //30
0xC2, 0xD3, 0x0C, 0x35, 0x65, 0xB2, 0xD3, 0x0B, 0x96, 0x65, //31
0x32, 0xD4, 0x0B, 0x99, 0x77, 0x62, 0x90, 0x0B, 0x01, 0x78, //32
0x42, 0xD4, 0x0B, 0x15, 0x76, 0x12, 0xD0, 0x0B, 0x10, 0x11, //33
0xE2, 0xD5, 0x0C, 0x29, 0x99, 0x83, 0x92, 0x0C, 0x28, 0x98, //34
0xE2, 0xCF, 0x0D, 0x85, 0x05, 0x12, 0xD0, 0x0E, 0x94, 0x05, //35
0xE2, 0xD5, 0x0D, 0x36, 0x99, 0x02, 0xD6, 0x0F, 0x67, 0x95, //36
0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0E, 0x66, 0x95, //37
0xE2, 0xD5, 0x0B, 0x34, 0x99, 0x83, 0x92, 0x0C, 0x29, 0x98, //38
0xE2, 0xCF, 0x0C, 0x89, 0x05, 0x12, 0xD0, 0x0C, 0x98, 0x05, //39
0xE2, 0xD5, 0x0B, 0x08, 0x95, 0x02, 0xD6, 0x0E, 0x67, 0x95, //40
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0C, 0x96, 0x05, //41
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0E, 0x95, 0x05, //42
0x32, 0xD4, 0x0B, 0x89, 0x84, 0x73, 0x90, 0x0C, 0x86, 0x84, //43
0x32, 0xD4, 0x0B, 0x00, 0x78, 0x62, 0x90, 0x0B, 0x02, 0x78, //44
0xE2, 0xCF, 0x0B, 0x82, 0x05, 0x12, 0xD0, 0x0D, 0x91, 0x05, //45
0xE2, 0xD5, 0x0D, 0x99, 0x94, 0x02, 0xD6, 0x0D, 0x68, 0x95, //46
0xE2, 0xCF, 0x0C, 0x74, 0x09, 0x12, 0xD0, 0x0C, 0x95, 0x05, //47
0xE2, 0xD5, 0x0B, 0x34, 0x99, 0x83, 0x92, 0x0C, 0x28, 0x98, //48
0xE2, 0xCF, 0x0D, 0x77, 0x09, 0x12, 0xD0, 0x0C, 0x05, 0x11, //49
0xE2, 0xCF, 0x0D, 0x86, 0x05, 0x12, 0xD0, 0x0E, 0x95, 0x05, //50
};
};

View File

@ -249,7 +249,7 @@ namespace esphome
if (this->top59_text_sensor_) this->top59_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::BlockedFree, PanasonicDecode::getBit7and8(bytes[9])));
if (this->top76_text_sensor_) this->top76_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::HeatCoolModeDesc, PanasonicDecode::getBit7and8(bytes[28])));
if (this->top81_text_sensor_) this->top81_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::HeatCoolModeDesc, PanasonicDecode::getBit5and6(bytes[28])));
// if (this->top92_text_sensor_) this->top92_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::ModelNames, PanasonicDecode::getModel(bytes, 129)));
if (this->top92_text_sensor_) this->top92_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::ModelNames, PanasonicDecode::getModel(bytes, 129)));
if (this->top94_text_sensor_) this->top94_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::ZonesState, PanasonicDecode::getBit1and2(bytes[6])));
if (this->top101_text_sensor_) this->top101_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::SolarModeDesc, PanasonicDecode::getBit3and4(bytes[24])));
if (this->top106_text_sensor_) this->top106_text_sensor_->publish_state(PanasonicDecode::getTextState(PanasonicDecode::PumpFlowRateMode, PanasonicDecode::getBit3and4(bytes[29])));

View File

@ -151,7 +151,7 @@ namespace esphome
SUB_TEXT_SENSOR(top59);
SUB_TEXT_SENSOR(top76);
SUB_TEXT_SENSOR(top81);
// SUB_TEXT_SENSOR(top92);
SUB_TEXT_SENSOR(top92);
SUB_TEXT_SENSOR(top94);
SUB_TEXT_SENSOR(top101);
SUB_TEXT_SENSOR(top106);

View File

@ -16,17 +16,20 @@ from esphome.const import (
DEVICE_CLASS_POWER,
DEVICE_CLASS_PRESSURE,
DEVICE_CLASS_CURRENT,
DEVICE_CLASS_VOLUME_FLOW_RATE,
STATE_CLASS_MEASUREMENT,
STATE_CLASS_TOTAL_INCREASING,
ICON_COUNTER,
)
from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID
UNIT_LITRE_PER_MINUTE = "l/min"
UNIT_LITRE_PER_MINUTE = "L/min"
UNIT_ROTATIONS_PER_MINUTE = "r/min"
UNIT_PRESSURE_KGFCM2 = "kgf/cm²"
UNIT_BAR = "bar"
ICON_FAN_SPEED = "mdi:fan"
CONF_SENS_TOP1 = "top1"
CONF_SENS_TOP5 = "top5"
CONF_SENS_TOP6 = "top6"
@ -225,6 +228,8 @@ CONFIG_SCHEMA = cv.All(
cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent),
cv.Optional(CONF_SENS_TOP1): sensor.sensor_schema(
device_class=DEVICE_CLASS_VOLUME_FLOW_RATE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_LITRE_PER_MINUTE,
),
cv.Optional(CONF_SENS_TOP5): sensor.sensor_schema(
@ -457,9 +462,11 @@ CONFIG_SCHEMA = cv.All(
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_SENS_TOP62): sensor.sensor_schema(
icon=ICON_FAN_SPEED,
unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE,
),
cv.Optional(CONF_SENS_TOP63): sensor.sensor_schema(
icon=ICON_FAN_SPEED,
unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE,
),
cv.Optional(CONF_SENS_TOP64): sensor.sensor_schema(

View File

@ -6,6 +6,22 @@ from esphome.const import (
)
from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID
ICON_OPERATING_MODE = "mdi:thermostat"
ICON_POWERFUL_MODE = "mdi:arm-flex"
ICON_QUIET_MODE = "mdi:sleep"
ICON_HOLIDAY_MODE = "mdi:palm-tree"
ICON_ERROR = "mdi:close-circle"
ICON_BLOCKED = "mdi:cancel"
ICON_HEATING_MODE = "mdi:fire"
ICON_COOLING_MODE = "mdi:snowflake"
ICON_ZONE = "mdi:texture-box"
ICON_MODEL = "mdi:heat-pump"
ICON_SOLAR_MODE = "mdi:solar-power-variant"
ICON_LIQUID = "mdi:water"
ICON_VALVE = "mdi:pipe-valve"
ICON_PUMP = "mdi:pump"
ICON_EXTERNAL_PAD_HEATER = "mdi:radiator"
CONF_TEXT_SENS_TOP4 = "top4"
CONF_TEXT_SENS_TOP17 = "top17"
CONF_TEXT_SENS_TOP18 = "top18"
@ -53,24 +69,56 @@ CONFIG_SCHEMA = cv.All(
{
cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent),
cv.Optional(CONF_TEXT_SENS_TOP4): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP17): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP18): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP19): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP20): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP44): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP58): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP59): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP76): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP81): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP92): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP94): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP101): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP106): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP107): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP4): text_sensor.text_sensor_schema(
icon=ICON_OPERATING_MODE,
),
cv.Optional(CONF_TEXT_SENS_TOP17): text_sensor.text_sensor_schema(
icon=ICON_POWERFUL_MODE,
),
cv.Optional(CONF_TEXT_SENS_TOP18): text_sensor.text_sensor_schema(
icon=ICON_QUIET_MODE,
),
cv.Optional(CONF_TEXT_SENS_TOP19): text_sensor.text_sensor_schema(
icon=ICON_HOLIDAY_MODE,
),
cv.Optional(CONF_TEXT_SENS_TOP20): text_sensor.text_sensor_schema(
icon=ICON_VALVE,
),
cv.Optional(CONF_TEXT_SENS_TOP44): text_sensor.text_sensor_schema(
icon=ICON_ERROR,
),
cv.Optional(CONF_TEXT_SENS_TOP58): text_sensor.text_sensor_schema(
icon=ICON_BLOCKED,
),
cv.Optional(CONF_TEXT_SENS_TOP59): text_sensor.text_sensor_schema(
icon=ICON_BLOCKED,
),
cv.Optional(CONF_TEXT_SENS_TOP76): text_sensor.text_sensor_schema(
icon=ICON_HEATING_MODE,
),
cv.Optional(CONF_TEXT_SENS_TOP81): text_sensor.text_sensor_schema(
icon=ICON_COOLING_MODE,
),
cv.Optional(CONF_TEXT_SENS_TOP92): text_sensor.text_sensor_schema(
icon=ICON_MODEL,
),
cv.Optional(CONF_TEXT_SENS_TOP94): text_sensor.text_sensor_schema(
icon=ICON_ZONE,
),
cv.Optional(CONF_TEXT_SENS_TOP101): text_sensor.text_sensor_schema(
icon=ICON_SOLAR_MODE,
),
cv.Optional(CONF_TEXT_SENS_TOP106): text_sensor.text_sensor_schema(
icon=ICON_PUMP,
),
cv.Optional(CONF_TEXT_SENS_TOP107): text_sensor.text_sensor_schema(
icon=ICON_LIQUID,
),
cv.Optional(CONF_TEXT_SENS_TOP111): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP112): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP114): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TEXT_SENS_TOP114): text_sensor.text_sensor_schema(
icon=ICON_EXTERNAL_PAD_HEATER,
),
cv.Optional(CONF_TEXT_SENS_TOP124): text_sensor.text_sensor_schema(),
}
).extend(cv.COMPONENT_SCHEMA)

View File

@ -322,8 +322,8 @@ text_sensor:
name: "Heating Mode"
top81:
name: "Cooling Mode"
#top92:
#name: "Heat Pump Model"
top92:
name: "Heat Pump Model"
top94:
name: "Zones State"
top101: