mirror of
https://github.com/esphome/esphome.git
synced 2026-10-14 02:02:51 +00:00
[systa_bus] Use SUB_SENSOR and explicit sub_sensors calls for the sensors (#20610)
This commit is contained in:
@@ -43,7 +43,7 @@ _PUMP_SPEED_SCHEMA = sensor.sensor_schema(
|
||||
state_class=STATE_CLASS_MEASUREMENT,
|
||||
)
|
||||
|
||||
# Sensors per model, keyed by config key; the C++ setter is "set_<key>_sensor"
|
||||
# Sensors per model, keyed by config key
|
||||
MODEL_SENSORS = {
|
||||
CONF_SYSTASOLAR_AQUA: {
|
||||
CONF_TEMPERATURE_TSA: _TEMPERATURE_SCHEMA,
|
||||
@@ -77,10 +77,13 @@ async def to_code(config: ConfigType) -> None:
|
||||
var = cg.new_Pvariable(config[CONF_ID])
|
||||
await cg.register_component(var, config)
|
||||
|
||||
for key in MODEL_SENSORS[config[CONF_MODEL]]:
|
||||
if (conf := config.get(key)) is not None:
|
||||
sens = await sensor.new_sensor(conf)
|
||||
cg.add(getattr(var, f"set_{key}_sensor")(sens))
|
||||
# The schema only lets a model's own keys through, so unconfigured ones are skipped here
|
||||
sensors = sensor.sub_sensors(config)
|
||||
await sensors(CONF_TEMPERATURE_TSA, var.set_temperature_tsa_sensor)
|
||||
await sensors(CONF_TEMPERATURE_TSE, var.set_temperature_tse_sensor)
|
||||
await sensors(CONF_TEMPERATURE_TWU, var.set_temperature_twu_sensor)
|
||||
await sensors(CONF_TEMPERATURE_TW2, var.set_temperature_tw2_sensor)
|
||||
await sensors(CONF_PUMP_SPEED, var.set_pump_speed_sensor)
|
||||
|
||||
systa_bus = await cg.get_variable(config[CONF_SYSTA_BUS_ID])
|
||||
await register_systa_bus_listener(systa_bus, var)
|
||||
|
||||
@@ -8,21 +8,15 @@
|
||||
namespace esphome::systa_bus {
|
||||
|
||||
class SystaSolarAquaSensor : public SystaBusListener, public Component {
|
||||
SUB_SENSOR(temperature_tsa)
|
||||
SUB_SENSOR(temperature_tse)
|
||||
SUB_SENSOR(temperature_twu)
|
||||
SUB_SENSOR(temperature_tw2)
|
||||
SUB_SENSOR(pump_speed)
|
||||
|
||||
public:
|
||||
void dump_config() override;
|
||||
void set_temperature_tsa_sensor(sensor::Sensor *sensor) { this->temperature_tsa_sensor_ = sensor; }
|
||||
void set_temperature_tse_sensor(sensor::Sensor *sensor) { this->temperature_tse_sensor_ = sensor; }
|
||||
void set_temperature_twu_sensor(sensor::Sensor *sensor) { this->temperature_twu_sensor_ = sensor; }
|
||||
void set_temperature_tw2_sensor(sensor::Sensor *sensor) { this->temperature_tw2_sensor_ = sensor; }
|
||||
void set_pump_speed_sensor(sensor::Sensor *sensor) { this->pump_speed_sensor_ = sensor; }
|
||||
void handle_message(std::span<const uint8_t> message) override;
|
||||
|
||||
protected:
|
||||
sensor::Sensor *temperature_tsa_sensor_{nullptr};
|
||||
sensor::Sensor *temperature_tse_sensor_{nullptr};
|
||||
sensor::Sensor *temperature_twu_sensor_{nullptr};
|
||||
sensor::Sensor *temperature_tw2_sensor_{nullptr};
|
||||
sensor::Sensor *pump_speed_sensor_{nullptr};
|
||||
};
|
||||
|
||||
} // namespace esphome::systa_bus
|
||||
|
||||
Reference in New Issue
Block a user