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:
parent
45766a1a32
commit
850e6e0830
@ -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
|
@ -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])
|
@ -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
|
||||
|
||||
|
@ -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_;
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user