mirror of
https://github.com/esphome/esphome.git
synced 2025-03-15 07:08:20 +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);
|
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
|
||||||
|
|
||||||
|
@ -63,11 +63,18 @@ class DieselHeaterBLE : public Component, public ble_client::BLEClientNode {
|
|||||||
void set_temp_unit(sensor::Sensor *sensor) { temp_unit_ = sensor; }
|
void set_temp_unit(sensor::Sensor *sensor) { temp_unit_ = sensor; }
|
||||||
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_power_level_action(float value);
|
||||||
|
|
||||||
void set_set_temp_number(number::Number *number) { set_temp_number_ = number; }
|
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_;
|
||||||
|
@ -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,11 +14,8 @@ 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());
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class SetTempNumber : public number::Number, public Parented<DieselHeaterBLE> {
|
class SetTempNumber : public number::Number, public Parented<DieselHeaterBLE> {
|
||||||
@ -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());
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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());
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user