1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-13 22:28:14 +00:00

Refactor diesel heater BLE component: remove button files and streamline power control actions

This commit is contained in:
Mateusz Wójcik 2025-01-04 00:22:26 +01:00
parent 45766a1a32
commit 850e6e0830
6 changed files with 33 additions and 53 deletions

View File

@ -1,12 +0,0 @@
#pragma once
#include "esphome/core/component.h"
#include "heater.h"
#include "messages.h"
namespace esphome {
namespace diesel_heater_ble {
} // namespace diesel_heater_ble
} // namespace esphome

View File

@ -1,24 +0,0 @@
import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.const import (
CONF_POWER,
ICON_POWER,
DEVICE_CLASS_BUTTON
)
from . import DieselHeaterBLE, CONF_HEATER_ID, diesel_heater_ble_ns
CODEOWNERS = ["@warehog"]
DEPENDENCIES = ["diesel_heater_ble"]
CONFIG_SCHEMA = (
cv.Schema(
{
cv.GenerateID(CONF_HEATER_ID): cv.use_id(DieselHeaterBLE),
}
)
.extend(cv.COMPONENT_SCHEMA)
)
async def to_code(config):
parent = await cg.get_variable(config[CONF_HEATER_ID])

View File

@ -70,7 +70,6 @@ bool DieselHeaterBLE::ble_write_chr(esp_gatt_if_t gattc_if, esp_bd_addr_t remote
ESP_LOGD(TAG, "Write characteristic failed, status: %d", ret);
return false;
} else {
ESP_LOGD(TAG, "Write characteristic success: %s", format_hex_pretty(std::vector<uint8_t>(data, data + len)).c_str());
}
return true;
}
@ -179,10 +178,10 @@ void DieselHeaterBLE::update_sensors(const HeaterState &new_state) {
is_auto_->publish_state(new_state.isauto);
return;
}
// if (language_ != nullptr && language_->state != new_state.language) {
// language_->publish_state(new_state.language);
// return;
// }
if (language_ != nullptr && language_->state != new_state.language) {
language_->publish_state(new_state.language);
return;
}
if (temp_offset_ != nullptr && temp_offset_->state != new_state.tempoffset) {
temp_offset_->publish_state(new_state.tempoffset);
return;
@ -213,6 +212,24 @@ void DieselHeaterBLE::update_sensors(const HeaterState &new_state) {
}
}
void DieselHeaterBLE::set_power_level_action(float value) {
if (this->get_state().runningmode == 2) {
this->sent_request(SetRunningModeRequest(1).toBytes());
}
this->sent_request(SetLevelRequest(value + 1).toBytes());
}
void DieselHeaterBLE::set_temp_number_action(float value) {
if (this->get_state().runningmode == 1) {
this->sent_request(SetRunningModeRequest(2).toBytes());
}
this->sent_request(SetTemperatureRequest(value).toBytes());
}
void DieselHeaterBLE::set_power_switch_action(bool state) {
this->sent_request(SetPowerRequest(state).toBytes());
}
} // namespace diesel_heater_ble
} // namespace esphome

View File

@ -63,11 +63,18 @@ class DieselHeaterBLE : public Component, public ble_client::BLEClientNode {
void set_temp_unit(sensor::Sensor *sensor) { temp_unit_ = sensor; }
void set_altitude_unit(sensor::Sensor *sensor) { altitude_unit_ = sensor; }
void set_automatic_heating(sensor::Sensor *sensor) { automatic_heating_ = sensor; }
// Number setters
void set_power_level_number(number::Number *number) { power_level_number_ = number; }
void set_power_level_action(float value);
void set_set_temp_number(number::Number *number) { set_temp_number_ = number; }
void set_temp_number_action(float value);
// Switch setter
void set_power_switch(switch_::Switch *sw) { power_switch_ = sw; }
void set_power_switch_action(bool state);
HeaterState get_state() {
return this->state_;

View File

@ -4,7 +4,6 @@
#include "esphome/core/component.h"
#include "heater.h"
#include "messages.h"
namespace esphome {
namespace diesel_heater_ble {
@ -15,11 +14,8 @@ class PowerLevelNumber : public number::Number, public Parented<DieselHeaterBLE>
protected:
void control(float value) override {
if (this->parent_->get_state().runningmode == 2) {
this->parent_->sent_request(SetRunningModeRequest(1).toBytes());
this->parent_->set_power_level_action(value);
}
this->parent_->sent_request(SetLevelRequest(value + 1).toBytes());
}
};
class SetTempNumber : public number::Number, public Parented<DieselHeaterBLE> {
@ -28,10 +24,7 @@ class SetTempNumber : public number::Number, public Parented<DieselHeaterBLE> {
protected:
void control(float value) override {
if (this->parent_->get_state().runningmode == 1) {
this->parent_->sent_request(SetRunningModeRequest(2).toBytes());
}
this->parent_->sent_request(SetTemperatureRequest(value).toBytes());
this->parent_->set_temp_number_action(value);
}
};

View File

@ -14,8 +14,7 @@ class PowerSwitch : public switch_::Switch, public Parented<DieselHeaterBLE> {
protected:
void write_state(bool state) override {
ESP_LOGD("diesel_heater_ble", "Setting power state to: %d", state);
this->parent_->sent_request(SetPowerRequest(state).toBytes());
this->parent_->set_power_switch_action(state);
}
};