|
|
|
|
@@ -160,7 +160,7 @@ void EZOSensor::loop() {
|
|
|
|
|
this->commands_.pop_front();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EZOSensor::add_command_(const char *command, EzoCommandType command_type, uint16_t delay_ms) {
|
|
|
|
|
void EZOSensor::add_command_(const std::string &command, EzoCommandType command_type, uint16_t delay_ms) {
|
|
|
|
|
std::unique_ptr<EzoCommand> ezo_command(new EzoCommand);
|
|
|
|
|
ezo_command->command = command;
|
|
|
|
|
ezo_command->command_type = command_type;
|
|
|
|
|
@@ -169,17 +169,13 @@ void EZOSensor::add_command_(const char *command, EzoCommandType command_type, u
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EZOSensor::set_calibration_point_(EzoCalibrationType type, float value) {
|
|
|
|
|
// max 21: "Cal,"(4) + type(4) + ","(1) + float(11) + null; use 24 for safety
|
|
|
|
|
char payload[24];
|
|
|
|
|
snprintf(payload, sizeof(payload), "Cal,%s,%0.2f", EZO_CALIBRATION_TYPE_STRINGS[type], value);
|
|
|
|
|
std::string payload = str_sprintf("Cal,%s,%0.2f", EZO_CALIBRATION_TYPE_STRINGS[type], value);
|
|
|
|
|
this->add_command_(payload, EzoCommandType::EZO_CALIBRATION, 900);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EZOSensor::set_address(uint8_t address) {
|
|
|
|
|
if (address > 0 && address < 128) {
|
|
|
|
|
// max 8: "I2C,"(4) + uint8(3) + null
|
|
|
|
|
char payload[8];
|
|
|
|
|
snprintf(payload, sizeof(payload), "I2C,%u", address);
|
|
|
|
|
std::string payload = str_sprintf("I2C,%u", address);
|
|
|
|
|
this->new_address_ = address;
|
|
|
|
|
this->add_command_(payload, EzoCommandType::EZO_I2C);
|
|
|
|
|
} else {
|
|
|
|
|
@@ -198,9 +194,7 @@ void EZOSensor::get_slope() { this->add_command_("Slope,?", EzoCommandType::EZO_
|
|
|
|
|
void EZOSensor::get_t() { this->add_command_("T,?", EzoCommandType::EZO_T); }
|
|
|
|
|
|
|
|
|
|
void EZOSensor::set_t(float value) {
|
|
|
|
|
// max 14 bytes: "T,"(2) + float with "%0.2f" (up to 11 chars) + null(1); use 16 for alignment
|
|
|
|
|
char payload[16];
|
|
|
|
|
snprintf(payload, sizeof(payload), "T,%0.2f", value);
|
|
|
|
|
std::string payload = str_sprintf("T,%0.2f", value);
|
|
|
|
|
this->add_command_(payload, EzoCommandType::EZO_T);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -221,9 +215,7 @@ void EZOSensor::set_calibration_point_high(float value) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EZOSensor::set_calibration_generic(float value) {
|
|
|
|
|
// exact 16 bytes: "Cal," (4) + float with "%0.2f" (up to 11 chars, e.g. "-9999999.99") + null (1) = 16
|
|
|
|
|
char payload[16];
|
|
|
|
|
snprintf(payload, sizeof(payload), "Cal,%0.2f", value);
|
|
|
|
|
std::string payload = str_sprintf("Cal,%0.2f", value);
|
|
|
|
|
this->add_command_(payload, EzoCommandType::EZO_CALIBRATION, 900);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -231,11 +223,13 @@ void EZOSensor::clear_calibration() { this->add_command_("Cal,clear", EzoCommand
|
|
|
|
|
|
|
|
|
|
void EZOSensor::get_led_state() { this->add_command_("L,?", EzoCommandType::EZO_LED); }
|
|
|
|
|
|
|
|
|
|
void EZOSensor::set_led_state(bool on) { this->add_command_(on ? "L,1" : "L,0", EzoCommandType::EZO_LED); }
|
|
|
|
|
|
|
|
|
|
void EZOSensor::send_custom(const std::string &to_send) {
|
|
|
|
|
this->add_command_(to_send.c_str(), EzoCommandType::EZO_CUSTOM);
|
|
|
|
|
void EZOSensor::set_led_state(bool on) {
|
|
|
|
|
std::string to_send = "L,";
|
|
|
|
|
to_send += on ? "1" : "0";
|
|
|
|
|
this->add_command_(to_send, EzoCommandType::EZO_LED);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void EZOSensor::send_custom(const std::string &to_send) { this->add_command_(to_send, EzoCommandType::EZO_CUSTOM); }
|
|
|
|
|
|
|
|
|
|
} // namespace ezo
|
|
|
|
|
} // namespace esphome
|
|
|
|
|
|