1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-15 15:18:16 +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); ESP_LOGD(TAG, "Write characteristic failed, status: %d", ret);
return false; return false;
} else { } else {
ESP_LOGD(TAG, "Write characteristic success: %s", format_hex_pretty(std::vector<uint8_t>(data, data + len)).c_str());
} }
return true; return true;
} }
@ -179,10 +178,10 @@ void DieselHeaterBLE::update_sensors(const HeaterState &new_state) {
is_auto_->publish_state(new_state.isauto); is_auto_->publish_state(new_state.isauto);
return; return;
} }
// if (language_ != nullptr && language_->state != new_state.language) { if (language_ != nullptr && language_->state != new_state.language) {
// language_->publish_state(new_state.language); language_->publish_state(new_state.language);
// return; return;
// } }
if (temp_offset_ != nullptr && temp_offset_->state != new_state.tempoffset) { if (temp_offset_ != nullptr && temp_offset_->state != new_state.tempoffset) {
temp_offset_->publish_state(new_state.tempoffset); temp_offset_->publish_state(new_state.tempoffset);
return; 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 diesel_heater_ble
} // namespace esphome } // namespace esphome

View File

@ -64,10 +64,17 @@ class DieselHeaterBLE : public Component, public ble_client::BLEClientNode {
void set_altitude_unit(sensor::Sensor *sensor) { altitude_unit_ = sensor; } void set_altitude_unit(sensor::Sensor *sensor) { altitude_unit_ = sensor; }
void set_automatic_heating(sensor::Sensor *sensor) { automatic_heating_ = 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_number(number::Number *number) { power_level_number_ = number; }
void set_set_temp_number(number::Number *number) { set_temp_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(switch_::Switch *sw) { power_switch_ = sw; }
void set_power_switch_action(bool state);
HeaterState get_state() { HeaterState get_state() {
return this->state_; return this->state_;

View File

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

View File

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