mirror of
https://github.com/esphome/esphome.git
synced 2025-03-15 15:18:16 +00:00
The code has been corrected according to the recommendations.
This commit is contained in:
parent
edd04592b3
commit
14d730bc84
@ -6,6 +6,8 @@
|
|||||||
namespace esphome {
|
namespace esphome {
|
||||||
namespace cm1106 {
|
namespace cm1106 {
|
||||||
|
|
||||||
|
static const char *const TAG = "cm1106";
|
||||||
|
|
||||||
uint8_t cm1106_checksum(const uint8_t *response, size_t len) {
|
uint8_t cm1106_checksum(const uint8_t *response, size_t len) {
|
||||||
uint8_t crc = 0;
|
uint8_t crc = 0;
|
||||||
for (int i = 0; i < len - 1; i++) {
|
for (int i = 0; i < len - 1; i++) {
|
||||||
@ -16,7 +18,8 @@ uint8_t cm1106_checksum(const uint8_t *response, size_t len) {
|
|||||||
|
|
||||||
void CM1106Component::update() {
|
void CM1106Component::update() {
|
||||||
uint8_t response[8] = {0};
|
uint8_t response[8] = {0};
|
||||||
if (!this->cm1106_write_command_(c_m1106_cmd_get_c_o2_, sizeof(c_m1106_cmd_get_c_o2_), response, sizeof(response))) {
|
if (!this->cm1106_write_command_(this->c_m1106_cmd_get_co2_, sizeof(this->c_m1106_cmd_get_co2_), response,
|
||||||
|
sizeof(response))) {
|
||||||
ESP_LOGW(TAG, "Reading data from CM1106 failed!");
|
ESP_LOGW(TAG, "Reading data from CM1106 failed!");
|
||||||
this->status_set_warning();
|
this->status_set_warning();
|
||||||
return;
|
return;
|
||||||
@ -46,7 +49,7 @@ void CM1106Component::update() {
|
|||||||
|
|
||||||
void CM1106Component::calibrate_zero(uint16_t ppm) {
|
void CM1106Component::calibrate_zero(uint16_t ppm) {
|
||||||
uint8_t cmd[6];
|
uint8_t cmd[6];
|
||||||
memcpy(cmd, c_m1106_cmd_set_c_o2_calib_, sizeof(cmd));
|
memcpy(cmd, this->c_m1106_cmd_set_co2_calib_, sizeof(cmd));
|
||||||
cmd[3] = ppm >> 8;
|
cmd[3] = ppm >> 8;
|
||||||
cmd[4] = ppm & 0xFF;
|
cmd[4] = ppm & 0xFF;
|
||||||
uint8_t response[4] = {0};
|
uint8_t response[4] = {0};
|
||||||
@ -58,7 +61,7 @@ void CM1106Component::calibrate_zero(uint16_t ppm) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if correct response received
|
// check if correct response received
|
||||||
if (memcmp(response, c_m1106_cmd_set_c_o2_calib_response_, sizeof(response)) != 0) {
|
if (memcmp(response, this->c_m1106_cmd_set_co2_calib_response_, sizeof(response)) != 0) {
|
||||||
ESP_LOGW(TAG, "Got wrong UART response from CM1106: %02X %02X %02X %02X", response[0], response[1], response[2],
|
ESP_LOGW(TAG, "Got wrong UART response from CM1106: %02X %02X %02X %02X", response[0], response[1], response[2],
|
||||||
response[3]);
|
response[3]);
|
||||||
this->status_set_warning();
|
this->status_set_warning();
|
||||||
|
@ -8,8 +8,6 @@
|
|||||||
namespace esphome {
|
namespace esphome {
|
||||||
namespace cm1106 {
|
namespace cm1106 {
|
||||||
|
|
||||||
static const char *const TAG = "cm1106";
|
|
||||||
|
|
||||||
class CM1106Component : public PollingComponent, public uart::UARTDevice {
|
class CM1106Component : public PollingComponent, public uart::UARTDevice {
|
||||||
public:
|
public:
|
||||||
float get_setup_priority() const override { return esphome::setup_priority::DATA; }
|
float get_setup_priority() const override { return esphome::setup_priority::DATA; }
|
||||||
@ -19,17 +17,16 @@ class CM1106Component : public PollingComponent, public uart::UARTDevice {
|
|||||||
|
|
||||||
void calibrate_zero(uint16_t ppm);
|
void calibrate_zero(uint16_t ppm);
|
||||||
|
|
||||||
void set_co2_sensor(sensor::Sensor *co2_sensor) { co2_sensor_ = co2_sensor; }
|
void set_co2_sensor(sensor::Sensor *co2_sensor) { this->co2_sensor_ = co2_sensor; }
|
||||||
|
|
||||||
private:
|
|
||||||
uint8_t c_m1106_cmd_get_c_o2_[4] = {0x11, 0x01, 0x01, 0xED};
|
|
||||||
uint8_t c_m1106_cmd_set_c_o2_calib_[6] = {0x11, 0x03, 0x03, 0x00, 0x00, 0x00};
|
|
||||||
uint8_t c_m1106_cmd_set_c_o2_calib_response_[4] = {0x16, 0x01, 0x03, 0xE6};
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool cm1106_write_command_(uint8_t *command, size_t command_len, uint8_t *response, size_t response_len);
|
uint8_t c_m1106_cmd_get_co2_[4] = {0x11, 0x01, 0x01, 0xED};
|
||||||
|
uint8_t c_m1106_cmd_set_co2_calib_[6] = {0x11, 0x03, 0x03, 0x00, 0x00, 0x00};
|
||||||
|
uint8_t c_m1106_cmd_set_co2_calib_response_[4] = {0x16, 0x01, 0x03, 0xE6};
|
||||||
|
|
||||||
sensor::Sensor *co2_sensor_{nullptr};
|
sensor::Sensor *co2_sensor_{nullptr};
|
||||||
|
|
||||||
|
bool cm1106_write_command_(uint8_t *command, size_t command_len, uint8_t *response, size_t response_len);
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename... Ts> class CM1106CalibrateZeroAction : public Action<Ts...> {
|
template<typename... Ts> class CM1106CalibrateZeroAction : public Action<Ts...> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user