Added option log_uart_msg to maidsite_desk

This commit is contained in:
ElVit 2025-02-02 15:38:41 +01:00
parent 1e604ec119
commit f64fc9925f
3 changed files with 29 additions and 16 deletions

View File

@ -9,6 +9,7 @@ MULTICONF = True
DEPENDENCIES = ['uart']
CONF_MAIDSITE_DESK_ID = "maidsite_desk"
CONF_LOG_UART_MSG = "log_uart_msg"
maidsite_desk_ns = cg.esphome_ns.namespace('maidsite_desk')
MaidsiteDeskComponent = maidsite_desk_ns.class_('MaidsiteDeskComponent', cg.Component, uart.UARTDevice)
@ -17,6 +18,8 @@ CONFIG_SCHEMA = (
cv.Schema(
{
cv.GenerateID(): cv.declare_id(MaidsiteDeskComponent),
cv.Optional(CONF_LOG_UART_MSG, default=False): cv.boolean,
}
)
.extend(uart.UART_DEVICE_SCHEMA)
@ -27,3 +30,4 @@ async def to_code(config):
var = cg.new_Pvariable(config[CONF_ID])
await cg.register_component(var, config)
await uart.register_uart_device(var, config)
cg.add(var.set_log_uart_msg(config[CONF_LOG_UART_MSG]))

View File

@ -118,6 +118,8 @@ namespace esphome
void MaidsiteDeskComponent::log_uart_hex(std::string prefix, std::vector<uint8_t> bytes, uint8_t separator)
{
if (this->log_uart_msg_ == false) return;
std::string logStr;
char buffer[5];
size_t chunkSize = 90;
@ -130,7 +132,7 @@ namespace esphome
}
for (size_t i = 0; i < logStr.length(); i += chunkSize)
{
ESP_LOGD(TAG, "%s %s", prefix.c_str(), logStr.substr(i, chunkSize).c_str());
ESP_LOGI(TAG, "%s %s", prefix.c_str(), logStr.substr(i, chunkSize).c_str());
delay(10);
}
}
@ -142,7 +144,7 @@ namespace esphome
switch (message[2])
{
case 0x01:
ESP_LOGD(TAG, "Set height to 0x%0X%0X", message[4], message[5]);
ESP_LOGI(TAG, "Set height to 0x%0X%0X", message[4], message[5]);
delay(10);
float new_height;
@ -162,7 +164,7 @@ namespace esphome
break;
case 0x20:
ESP_LOGD(TAG, "Set limits to 0x%0X max=%i min=%i", message[4], (message[5] & 1), (message[4] >> 4));
ESP_LOGI(TAG, "Set limits to 0x%0X max=%i min=%i", message[4], (message[5] & 1), (message[4] >> 4));
delay(10);
if ((message[4] & 1) == 0)
@ -184,7 +186,7 @@ namespace esphome
break;
case 0x07:
ESP_LOGD(TAG, "Set physical limits to min=0x%02X%02X max=0x%02X%02X", message[4], message[5], message[6], message[7]);
ESP_LOGI(TAG, "Set physical limits to min=0x%02X%02X max=0x%02X%02X", message[4], message[5], message[6], message[7]);
delay(10);
this->physical_max_ = this->byte2float(message[4], message[5]);
@ -192,7 +194,7 @@ namespace esphome
break;
case 0x21:
ESP_LOGD(TAG, "Set max. height to 0x%02X%02X", message[4], message[5]);
ESP_LOGI(TAG, "Set max. height to 0x%02X%02X", message[4], message[5]);
delay(10);
this->limit_max_ = this->byte2float(message[4], message[5]);
@ -203,7 +205,7 @@ namespace esphome
break;
case 0x22:
ESP_LOGD(TAG, "Set min. height to 0x%02X%02X", message[4], message[5]);
ESP_LOGI(TAG, "Set min. height to 0x%02X%02X", message[4], message[5]);
delay(10);
this->limit_min_ = this->byte2float(message[4], message[5]);
@ -214,7 +216,7 @@ namespace esphome
break;
case 0x25:
ESP_LOGD(TAG, "Set position m1 to 0x%02X%02X", message[4], message[5]);
ESP_LOGI(TAG, "Set position m1 to 0x%02X%02X", message[4], message[5]);
delay(10);
if (this->position_m1_sensor_ != nullptr)
@ -222,7 +224,7 @@ namespace esphome
break;
case 0x26:
ESP_LOGD(TAG, "Set position m2 to 0x%02X%02X", message[4], message[5]);
ESP_LOGI(TAG, "Set position m2 to 0x%02X%02X", message[4], message[5]);
delay(10);
if (this->position_m2_sensor_ != nullptr)
@ -230,7 +232,7 @@ namespace esphome
break;
case 0x27:
ESP_LOGD(TAG, "Set position m3 to 0x%02X%02X", message[4], message[5]);
ESP_LOGI(TAG, "Set position m3 to 0x%02X%02X", message[4], message[5]);
delay(10);
if (this->position_m3_sensor_ != nullptr)
@ -238,7 +240,7 @@ namespace esphome
break;
case 0x28:
ESP_LOGD(TAG, "Set position m4 to 0x%02X%02X", message[4], message[5]);
ESP_LOGI(TAG, "Set position m4 to 0x%02X%02X", message[4], message[5]);
delay(10);
if (this->position_m4_sensor_ != nullptr)
@ -246,13 +248,13 @@ namespace esphome
break;
// case 0x0E:
// ESP_LOGD(TAG, "units 0x%02X", message[4]);
// ESP_LOGI(TAG, "units 0x%02X", message[4]);
// if (units != nullptr)
// units->publish_state(byte2float(message[4], message[5]));
// break;
default:
ESP_LOGD(TAG, "Received unknown message");
ESP_LOGI(TAG, "Received unknown message");
delay(10);
}
}
@ -378,6 +380,7 @@ namespace esphome
this->request_move_to();
}
#ifdef USE_BUTTON
void MaidsiteDeskComponent::button_press_action(button::Button* object)
{
if (object == step_up_button_)
@ -419,7 +422,8 @@ namespace esphome
this->request_settings();
}
}
#endif
#ifdef USE_NUMBER
void MaidsiteDeskComponent::number_control(number::Number* object, float value)
{
if (object == height_abs_number_)
@ -428,5 +432,6 @@ namespace esphome
if (limit_max_ > 0 && limit_max_ > limit_min_)
this->goto_height((limit_max_ - limit_min_) * value / 100 + limit_min_);
}
#endif
} // namespace maidsite_desk
} // namespace esphome

View File

@ -50,10 +50,14 @@ namespace esphome
SUB_BUTTON(save_m2);
SUB_BUTTON(save_m3);
SUB_BUTTON(save_m4);
void button_press_action(button::Button* object);
#endif
#ifdef USE_NUMBER
SUB_NUMBER(height_abs);
SUB_NUMBER(height_pct);
void number_control(number::Number* object, float value);
#endif
MaidsiteDeskComponent() = default;
@ -62,14 +66,12 @@ namespace esphome
void setup() override;
void loop() override;
void button_press_action(button::Button* object);
void number_control(number::Number* object, float value);
void set_log_uart_msg(bool enable) { this->log_uart_msg_ = enable; }
void request_physical_limits();
void request_limits();
void request_settings();
void request_move_to();
void step_up();
void step_down();
void stop();
@ -87,6 +89,8 @@ namespace esphome
void log_uart_hex(std::string prefix, std::vector<uint8_t> bytes, uint8_t separator);
private:
bool log_uart_msg_{false};
std::vector<uint8_t> response_message_;
std::vector<uint8_t> request_message_;
uint8_t response_payload_length_;