Added custom classes vor sensor, binary_sensor and text_sensor. Added dump_config function to number, select and switch classes.

This commit is contained in:
ElVit 2025-02-08 21:12:19 +01:00
parent c25b2a4281
commit 7df9370631
19 changed files with 362 additions and 288 deletions

View File

@ -4,7 +4,7 @@ from esphome.components import binary_sensor
from esphome.const import (
DEVICE_CLASS_RUNNING,
)
from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID
from .. import CONF_PANASONIC_HEATPUMP_ID, PanasonicHeatpumpComponent, panasonic_heatpump_ns
CONF_TOP0 = "top0" # Heatpump State
@ -57,68 +57,99 @@ TYPES = [
CONF_TOP133,
]
CONFIG_SCHEMA = cv.All(
cv.Schema(
{
PanasonicHeatpumpBinarySensor = panasonic_heatpump_ns.class_("PanasonicHeatpumpBinarySensor", binary_sensor.BinarySensor, cg.Component)
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent),
cv.Optional(CONF_TOP0): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP2): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP3): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP13): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP26): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP60): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP61): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP68): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP69): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP99): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP100): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP108): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP109): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
device_class = DEVICE_CLASS_RUNNING,
),
cv.Optional(CONF_TOP110): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP119): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP120): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP121): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP122): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP123): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP124): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP129): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP132): binary_sensor.binary_sensor_schema(),
cv.Optional(CONF_TOP133): binary_sensor.binary_sensor_schema(),
}
).extend(cv.COMPONENT_SCHEMA)
)
cv.Optional(CONF_TOP119): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP120): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP121): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP122): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP123): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP124): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP129): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP132): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
cv.Optional(CONF_TOP133): binary_sensor.binary_sensor_schema(
PanasonicHeatpumpBinarySensor,
),
}
).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID])
for key in TYPES:
await setup_conf(config, key, hub)
async def setup_conf(parent_config, key, hub):
if child_config := parent_config.get(key):
var = await binary_sensor.new_binary_sensor(child_config)
cg.add(getattr(hub, f"set_{key}_binary_sensor")(var))
if child_config := config.get(key):
var = await binary_sensor.new_binary_sensor(child_config)
await cg.register_component(var, child_config)
await cg.register_parented(var, config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_binary_sensor")(var))

View File

@ -0,0 +1,16 @@
#include "panasonic_heatpump_binary_sensor.h"
#include "esphome/core/log.h"
namespace esphome
{
namespace panasonic_heatpump
{
static const char *const TAG = "panasonic_heatpump.binary_sensor";
void PanasonicHeatpumpBinarySensor::dump_config()
{
LOG_BINARY_SENSOR("", "Panasonic Heatpump Binary Sensor", this);
}
} // namespace panasonic_heatpump
} // namespace esphome

View File

@ -0,0 +1,19 @@
#pragma once
#include "esphome/components/binary_sensor/binary_sensor.h"
#include "esphome/core/component.h"
#include "../panasonic_heatpump.h"
namespace esphome
{
namespace panasonic_heatpump
{
class PanasonicHeatpumpComponent;
class PanasonicHeatpumpBinarySensor : public binary_sensor::BinarySensor, public Component, public Parented<PanasonicHeatpumpComponent>
{
public:
PanasonicHeatpumpBinarySensor() = default;
void dump_config() override;
};
} // namespace panasonic_heatpump
} // namespace esphome

View File

@ -117,7 +117,7 @@ CONF_NUMBERS = [
[ -15, 35, 1, ],
]
PanasonicHeatpumpNumber = panasonic_heatpump_ns.class_("PanasonicHeatpumpNumber", number.Number)
PanasonicHeatpumpNumber = panasonic_heatpump_ns.class_("PanasonicHeatpumpNumber", number.Number, cg.Component)
CONFIG_SCHEMA = cv.Schema(
{
@ -271,15 +271,13 @@ CONFIG_SCHEMA = cv.Schema(
unit_of_measurement=UNIT_CELSIUS,
),
}
)
).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID])
for index, key in enumerate(TYPES):
await setup_conf(config, key, index, hub)
async def setup_conf(parent_config, key, index, hub):
if child_config := parent_config.get(key):
var = await number.new_number(child_config, min_value=CONF_NUMBERS[index][0], max_value=CONF_NUMBERS[index][1], step=CONF_NUMBERS[index][2])
await cg.register_parented(var, parent_config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_number")(var))
if child_config := config.get(key):
var = await number.new_number(child_config, min_value=CONF_NUMBERS[index][0], max_value=CONF_NUMBERS[index][1], step=CONF_NUMBERS[index][2])
await cg.register_component(var, child_config)
await cg.register_parented(var, config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_number")(var))

View File

@ -1,10 +1,18 @@
#include "panasonic_heatpump_number.h"
#include "esphome/core/log.h"
namespace esphome
{
namespace panasonic_heatpump
{
static const char *const TAG = "panasonic_heatpump.number";
void PanasonicHeatpumpNumber::dump_config()
{
LOG_NUMBER("", "Panasonic Heatpump Number", this);
}
void PanasonicHeatpumpNumber::control(float value)
{
this->publish_state(value);

View File

@ -1,5 +1,6 @@
#pragma once
#include "esphome/components/number/number.h"
#include "esphome/core/component.h"
#include "../panasonic_heatpump.h"
@ -7,10 +8,11 @@ namespace esphome
{
namespace panasonic_heatpump
{
class PanasonicHeatpumpNumber : public number::Number, public Parented<PanasonicHeatpumpComponent>
class PanasonicHeatpumpNumber : public number::Number, public Component, public Parented<PanasonicHeatpumpComponent>
{
public:
PanasonicHeatpumpNumber() = default;
void dump_config() override;
protected:
void control(float value) override;

View File

@ -10,210 +10,6 @@ namespace esphome
void PanasonicHeatpumpComponent::dump_config()
{
ESP_LOGCONFIG(TAG, "Panasonic Heatpump");
#ifdef USE_SENSOR
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top1_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top5_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top6_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top7_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top8_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top9_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top10_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top11_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top12_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top14_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top15_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top16_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top21_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top22_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top23_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top24_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top25_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top27_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top28_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top29_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top30_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top31_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top32_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top33_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top34_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top35_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top36_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top37_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top38_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top39_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top40_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top41_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top42_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top43_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top45_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top46_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top47_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top48_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top49_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top50_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top51_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top52_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top53_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top54_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top55_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top56_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top57_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top62_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top63_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top64_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top65_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top66_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top67_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top70_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top71_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top72_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top73_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top74_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top75_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top77_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top78_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top79_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top80_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top82_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top83_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top84_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top85_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top86_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top87_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top88_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top89_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top90_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top91_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top93_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top95_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top96_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top97_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top98_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top102_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top103_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top104_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top105_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top113_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top115_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top116_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top117_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top118_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top127_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top128_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top131_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top134_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top135_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top136_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top137_sensor_);
LOG_SENSOR("", "Panasonic Heatpump Sensor", this->top138_sensor_);
#endif
#ifdef USE_BINARY_SENSOR
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top0_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top2_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top3_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top13_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top26_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top60_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top61_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top68_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top69_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top99_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top100_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top108_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top109_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top110_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top119_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top120_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top121_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top122_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top123_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top124_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top129_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top132_binary_sensor_);
LOG_BINARY_SENSOR("", "Panasonic Heatpump BinarySensor", this->top133_binary_sensor_);
#endif
#ifdef USE_TEXT_SENSOR
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top4_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top17_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top18_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top19_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top20_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top44_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top58_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top59_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top76_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top81_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top92_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top94_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top101_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top106_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top107_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top111_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top112_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top114_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top125_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top126_text_sensor_);
LOG_TEXT_SENSOR("", "Panasonic Heatpump TextSensor", this->top130_text_sensor_);
#endif
#ifdef USE_NUMBER
LOG_NUMBER("", "Panasonic Heatpump Number", this->set5_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set6_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set7_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set8_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set11_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set15_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_1_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_2_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_3_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_4_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_5_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_6_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_7_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_8_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_9_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_10_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_11_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_12_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_13_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_14_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_15_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set16_16_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set18_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set19_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set20_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set21_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set22_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set23_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set27_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set29_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set36_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set37_number_);
LOG_NUMBER("", "Panasonic Heatpump Number", this->set38_number_);
#endif
#ifdef USE_SELECT
LOG_SELECT("", "Panasonic Heatpump Select", this->set2_select_);
LOG_SELECT("", "Panasonic Heatpump Select", this->set3_select_);
LOG_SELECT("", "Panasonic Heatpump Select", this->set4_select_);
LOG_SELECT("", "Panasonic Heatpump Select", this->set9_select_);
LOG_SELECT("", "Panasonic Heatpump Select", this->set17_select_);
LOG_SELECT("", "Panasonic Heatpump Select", this->set26_select_);
LOG_SELECT("", "Panasonic Heatpump Select", this->set35_select_);
#endif
#ifdef USE_SWITCH
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set1_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set10_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set12_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set13_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set14_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set24_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set25_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set28_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set30_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set31_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set32_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set33_switch_);
LOG_SWITCH("", "Panasonic Heatpump Switch", this->set34_switch_);
#endif
}
void PanasonicHeatpumpComponent::setup()

View File

@ -35,7 +35,7 @@ CONF_SELECTS = [
[ "Alternative", "Parallel", "Advanced Parallel" ],
]
PanasonicHeatpumpSelect = panasonic_heatpump_ns.class_("PanasonicHeatpumpSelect", select.Select)
PanasonicHeatpumpSelect = panasonic_heatpump_ns.class_("PanasonicHeatpumpSelect", select.Select, cg.Component)
CONFIG_SCHEMA = cv.Schema(
{
@ -63,15 +63,13 @@ CONFIG_SCHEMA = cv.Schema(
PanasonicHeatpumpSelect,
),
}
)
).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID])
for index, key in enumerate(TYPES):
await setup_conf(config, key, index, hub)
async def setup_conf(parent_config, key, index, hub):
if child_config := parent_config.get(key):
var = await select.new_select(child_config, options=CONF_SELECTS[index])
await cg.register_parented(var, parent_config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_select")(var))
if child_config := config.get(key):
var = await select.new_select(child_config, options=CONF_SELECTS[index])
await cg.register_component(var, child_config)
await cg.register_parented(var, config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_select")(var))

View File

@ -1,10 +1,18 @@
#include "panasonic_heatpump_select.h"
#include "esphome/core/log.h"
namespace esphome
{
namespace panasonic_heatpump
{
static const char *const TAG = "panasonic_heatpump.select";
void PanasonicHeatpumpSelect::dump_config()
{
LOG_SELECT("", "Panasonic Heatpump Select", this);
}
void PanasonicHeatpumpSelect::control(const std::string &value)
{
this->publish_state(value);

View File

@ -1,5 +1,6 @@
#pragma once
#include "esphome/components/select/select.h"
#include "esphome/core/component.h"
#include "../panasonic_heatpump.h"
@ -7,10 +8,11 @@ namespace esphome
{
namespace panasonic_heatpump
{
class PanasonicHeatpumpSelect : public select::Select, public Parented<PanasonicHeatpumpComponent>
class PanasonicHeatpumpSelect : public select::Select, public Component, public Parented<PanasonicHeatpumpComponent>
{
public:
PanasonicHeatpumpSelect() = default;
void dump_config() override;
protected:
void control(const std::string &value) override;

View File

@ -22,7 +22,7 @@ from esphome.const import (
STATE_CLASS_TOTAL_INCREASING,
ICON_COUNTER,
)
from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID
from .. import CONF_PANASONIC_HEATPUMP_ID, PanasonicHeatpumpComponent, panasonic_heatpump_ns
UNIT_LITRE_PER_MINUTE = "L/min"
@ -226,482 +226,577 @@ TYPES = [
CONF_TOP138,
]
CONFIG_SCHEMA = cv.All(
cv.Schema(
{
PanasonicHeatpumpSensor = panasonic_heatpump_ns.class_("PanasonicHeatpumpSensor", sensor.Sensor, cg.Component)
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent),
cv.Optional(CONF_TOP1): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_VOLUME_FLOW_RATE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_LITRE_PER_MINUTE,
),
cv.Optional(CONF_TOP5): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP6): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP7): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP8): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_FREQUENCY,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_HERTZ,
),
cv.Optional(CONF_TOP9): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP10): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP11): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_TOTAL_INCREASING,
unit_of_measurement = UNIT_HOUR,
),
cv.Optional(CONF_TOP12): sensor.sensor_schema(
PanasonicHeatpumpSensor,
unit_of_measurement=UNIT_EMPTY,
icon=ICON_COUNTER,
),
cv.Optional(CONF_TOP14): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP15): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_WATT,
),
cv.Optional(CONF_TOP16): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_WATT,
),
cv.Optional(CONF_TOP21): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP22): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP23): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP24): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP25): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP27): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP28): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP29): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP30): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP31): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP32): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP33): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP34): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP35): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP36): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP37): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP38): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_WATT,
),
cv.Optional(CONF_TOP39): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_WATT,
),
cv.Optional(CONF_TOP40): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_WATT,
),
cv.Optional(CONF_TOP41): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_POWER,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_WATT,
),
cv.Optional(CONF_TOP42): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP43): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP45): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP46): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP47): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP48): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP49): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP50): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP51): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP52): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP53): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP54): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP55): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP56): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP57): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP62): sensor.sensor_schema(
PanasonicHeatpumpSensor,
icon=ICON_FAN_SPEED,
unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE,
),
cv.Optional(CONF_TOP63): sensor.sensor_schema(
PanasonicHeatpumpSensor,
icon=ICON_FAN_SPEED,
unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE,
),
cv.Optional(CONF_TOP64): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_PRESSURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_PRESSURE_KGFCM2,
),
cv.Optional(CONF_TOP65): sensor.sensor_schema(
PanasonicHeatpumpSensor,
unit_of_measurement = UNIT_ROTATIONS_PER_MINUTE,
),
cv.Optional(CONF_TOP66): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_PRESSURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_PRESSURE_KGFCM2,
),
cv.Optional(CONF_TOP67): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_CURRENT,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_AMPERE,
),
cv.Optional(CONF_TOP70): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP71): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_MINUTE,
),
cv.Optional(CONF_TOP72): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP73): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP74): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP75): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP77): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP78): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP79): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP80): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP82): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP83): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP84): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP85): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP86): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP87): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP88): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP89): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP90): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_TOTAL_INCREASING,
unit_of_measurement = UNIT_HOUR,
),
cv.Optional(CONF_TOP91): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_TOTAL_INCREASING,
unit_of_measurement = UNIT_HOUR,
),
cv.Optional(CONF_TOP93): sensor.sensor_schema(),
cv.Optional(CONF_TOP95): sensor.sensor_schema(),
cv.Optional(CONF_TOP93): sensor.sensor_schema(
PanasonicHeatpumpSensor,
),
cv.Optional(CONF_TOP95): sensor.sensor_schema(
PanasonicHeatpumpSensor,
),
cv.Optional(CONF_TOP96): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_MINUTE,
),
cv.Optional(CONF_TOP97): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP98): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP102): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP103): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP104): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP105): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP113): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_KELVIN,
),
cv.Optional(CONF_TOP115): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_PRESSURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_BAR,
),
cv.Optional(CONF_TOP116): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP117): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP118): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP127): sensor.sensor_schema(
PanasonicHeatpumpSensor,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_PERCENT,
),
cv.Optional(CONF_TOP128): sensor.sensor_schema(
PanasonicHeatpumpSensor,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_PERCENT,
),
cv.Optional(CONF_TOP131): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP134): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP135): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_TEMPERATURE,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_CELSIUS,
),
cv.Optional(CONF_TOP136): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_MINUTE,
),
cv.Optional(CONF_TOP137): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_MINUTE,
),
cv.Optional(CONF_TOP138): sensor.sensor_schema(
PanasonicHeatpumpSensor,
device_class=DEVICE_CLASS_DURATION,
state_class=STATE_CLASS_MEASUREMENT,
unit_of_measurement = UNIT_MINUTE,
),
}
).extend(cv.COMPONENT_SCHEMA)
)
}
).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID])
for key in TYPES:
await setup_conf(config, key, hub)
async def setup_conf(parent_config, key, hub):
if child_config := parent_config.get(key):
var = await sensor.new_sensor(child_config)
cg.add(getattr(hub, f"set_{key}_sensor")(var))
if child_config := config.get(key):
var = await sensor.new_sensor(child_config)
await cg.register_component(var, child_config)
await cg.register_parented(var, config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_sensor")(var))

View File

@ -0,0 +1,16 @@
#include "panasonic_heatpump_sensor.h"
#include "esphome/core/log.h"
namespace esphome
{
namespace panasonic_heatpump
{
static const char *const TAG = "panasonic_heatpump.sensor";
void PanasonicHeatpumpSensor::dump_config()
{
LOG_SENSOR("", "Panasonic Heatpump Sensor", this);
}
} // namespace panasonic_heatpump
} // namespace esphome

View File

@ -0,0 +1,19 @@
#pragma once
#include "esphome/components/sensor/sensor.h"
#include "esphome/core/component.h"
#include "../panasonic_heatpump.h"
namespace esphome
{
namespace panasonic_heatpump
{
class PanasonicHeatpumpComponent;
class PanasonicHeatpumpSensor : public sensor::Sensor, public Component, public Parented<PanasonicHeatpumpComponent>
{
public:
PanasonicHeatpumpSensor() = default;
void dump_config() override;
};
} // namespace panasonic_heatpump
} // namespace esphome

View File

@ -37,7 +37,7 @@ TYPES = [
CONF_SET34,
]
PanasonicHeatpumpSwitch = panasonic_heatpump_ns.class_("PanasonicHeatpumpSwitch", switch.Switch)
PanasonicHeatpumpSwitch = panasonic_heatpump_ns.class_("PanasonicHeatpumpSwitch", switch.Switch, cg.Component)
CONFIG_SCHEMA = cv.Schema(
{
@ -83,15 +83,13 @@ CONFIG_SCHEMA = cv.Schema(
PanasonicHeatpumpSwitch,
),
}
)
).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID])
for key in TYPES:
await setup_conf(config, key, hub)
async def setup_conf(parent_config, key, hub):
if child_config := parent_config.get(key):
var = await switch.new_switch(child_config)
await cg.register_parented(var, parent_config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_switch")(var))
if child_config := config.get(key):
var = await switch.new_switch(child_config)
await cg.register_component(var, child_config)
await cg.register_parented(var, config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_switch")(var))

View File

@ -1,10 +1,18 @@
#include "panasonic_heatpump_switch.h"
#include "esphome/core/log.h"
namespace esphome
{
namespace panasonic_heatpump
{
static const char *const TAG = "panasonic_heatpump.switch";
void PanasonicHeatpumpSwitch::dump_config()
{
LOG_SWITCH("", "Panasonic Heatpump Switch", this);
}
void PanasonicHeatpumpSwitch::write_state(bool state)
{
this->publish_state(state);

View File

@ -1,5 +1,6 @@
#pragma once
#include "esphome/components/switch/switch.h"
#include "esphome/core/component.h"
#include "../panasonic_heatpump.h"
@ -7,10 +8,12 @@ namespace esphome
{
namespace panasonic_heatpump
{
class PanasonicHeatpumpSwitch : public switch_::Switch, public Parented<PanasonicHeatpumpComponent>
class PanasonicHeatpumpComponent;
class PanasonicHeatpumpSwitch : public switch_::Switch, public Component, public Parented<PanasonicHeatpumpComponent>
{
public:
PanasonicHeatpumpSwitch() = default;
void dump_config() override;
protected:
void write_state(bool state) override;

View File

@ -4,7 +4,7 @@ from esphome.components import text_sensor
from esphome.const import (
DEVICE_CLASS_HEAT,
)
from . import PanasonicHeatpumpComponent, CONF_PANASONIC_HEATPUMP_ID
from .. import CONF_PANASONIC_HEATPUMP_ID, PanasonicHeatpumpComponent, panasonic_heatpump_ns
ICON_OPERATING_MODE = "mdi:thermostat"
@ -70,78 +70,100 @@ TYPES = [
CONF_TOP130,
]
CONFIG_SCHEMA = cv.All(
cv.Schema(
{
PanasonicHeatpumpTextSensor = panasonic_heatpump_ns.class_("PanasonicHeatpumpTextSensor", text_sensor.TextSensor, cg.Component)
CONFIG_SCHEMA = cv.Schema(
{
cv.GenerateID(CONF_PANASONIC_HEATPUMP_ID): cv.use_id(PanasonicHeatpumpComponent),
cv.Optional(CONF_TOP4): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_OPERATING_MODE,
),
cv.Optional(CONF_TOP17): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_POWERFUL_MODE,
),
cv.Optional(CONF_TOP18): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_QUIET_MODE,
),
cv.Optional(CONF_TOP19): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_HOLIDAY_MODE,
),
cv.Optional(CONF_TOP20): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_VALVE,
),
cv.Optional(CONF_TOP44): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_ERROR,
),
cv.Optional(CONF_TOP58): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_BLOCKED,
),
cv.Optional(CONF_TOP59): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_BLOCKED,
),
cv.Optional(CONF_TOP76): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_HEATING_MODE,
),
cv.Optional(CONF_TOP81): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_COOLING_MODE,
),
cv.Optional(CONF_TOP92): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_MODEL,
),
cv.Optional(CONF_TOP94): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_ZONE,
),
cv.Optional(CONF_TOP101): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_SOLAR_MODE,
),
cv.Optional(CONF_TOP106): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_PUMP,
),
cv.Optional(CONF_TOP107): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_LIQUID,
),
cv.Optional(CONF_TOP111): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TOP112): text_sensor.text_sensor_schema(),
cv.Optional(CONF_TOP111): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
),
cv.Optional(CONF_TOP112): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
),
cv.Optional(CONF_TOP114): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_EXTERNAL_PAD_HEATER,
),
cv.Optional(CONF_TOP125): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_VALVE,
),
cv.Optional(CONF_TOP126): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,
icon=ICON_VALVE,
),
cv.Optional(CONF_TOP130): text_sensor.text_sensor_schema(),
}
).extend(cv.COMPONENT_SCHEMA)
)
cv.Optional(CONF_TOP130): text_sensor.text_sensor_schema(
PanasonicHeatpumpTextSensor,),
}
).extend(cv.COMPONENT_SCHEMA)
async def to_code(config):
hub = await cg.get_variable(config[CONF_PANASONIC_HEATPUMP_ID])
for key in TYPES:
await setup_conf(config, key, hub)
async def setup_conf(parent_config, key, hub):
if child_config := parent_config.get(key):
var = await text_sensor.new_text_sensor(child_config)
cg.add(getattr(hub, f"set_{key}_text_sensor")(var))
if child_config := config.get(key):
var = await text_sensor.new_text_sensor(child_config)
await cg.register_component(var, child_config)
await cg.register_parented(var, config[CONF_PANASONIC_HEATPUMP_ID])
cg.add(getattr(hub, f"set_{key}_text_sensor")(var))

View File

@ -0,0 +1,16 @@
#include "panasonic_heatpump_text_sensor.h"
#include "esphome/core/log.h"
namespace esphome
{
namespace panasonic_heatpump
{
static const char *const TAG = "panasonic_heatpump.text_sensor";
void PanasonicHeatpumpTextSensor::dump_config()
{
LOG_TEXT_SENSOR("", "Panasonic Heatpump Text Sensor", this);
}
} // namespace panasonic_heatpump
} // namespace esphome

View File

@ -0,0 +1,19 @@
#pragma once
#include "esphome/components/text_sensor/text_sensor.h"
#include "esphome/core/component.h"
#include "../panasonic_heatpump.h"
namespace esphome
{
namespace panasonic_heatpump
{
class PanasonicHeatpumpComponent;
class PanasonicHeatpumpTextSensor : public text_sensor::TextSensor, public Component, public Parented<PanasonicHeatpumpComponent>
{
public:
PanasonicHeatpumpTextSensor() = default;
void dump_config() override;
};
} // namespace panasonic_heatpump
} // namespace esphome