6 namespace grove_gas_mc_v2 {
8 static const char *
const TAG =
"grove_gas_mc_v2";
13 static const uint8_t GROVE_GAS_MC_V2_HEAT_ON = 0xFE;
14 static const uint8_t GROVE_GAS_MC_V2_HEAT_OFF = 0xFF;
15 static const uint8_t GROVE_GAS_MC_V2_READ_GM102B = 0x01;
16 static const uint8_t GROVE_GAS_MC_V2_READ_GM302B = 0x03;
17 static const uint8_t GROVE_GAS_MC_V2_READ_GM502B = 0x05;
18 static const uint8_t GROVE_GAS_MC_V2_READ_GM702B = 0x07;
21 if (sensor ==
nullptr) {
25 if (!this->
read_bytes(address, (uint8_t *) &value, 4)) {
26 ESP_LOGW(TAG,
"Reading Grove Gas Sensor data failed!");
36 ESP_LOGCONFIG(TAG,
"Setting up Grove Multichannel Gas Sensor V2...");
39 if (!(this->
write_bytes(GROVE_GAS_MC_V2_HEAT_ON, {}))) {
45 void GroveGasMultichannelV2Component::update() {
47 if (!this->
read_sensor_(GROVE_GAS_MC_V2_READ_GM102B, this->nitrogen_dioxide_sensor_))
49 if (!this->
read_sensor_(GROVE_GAS_MC_V2_READ_GM302B, this->ethanol_sensor_))
51 if (!this->
read_sensor_(GROVE_GAS_MC_V2_READ_GM502B, this->tvoc_sensor_))
53 if (!this->
read_sensor_(GROVE_GAS_MC_V2_READ_GM702B, this->carbon_monoxide_sensor_))
59 void GroveGasMultichannelV2Component::dump_config() {
60 ESP_LOGCONFIG(TAG,
"Grove Multichannel Gas Sensor V2");
62 LOG_UPDATE_INTERVAL(
this)
63 LOG_SENSOR(
" ",
"Nitrogen Dioxide", this->nitrogen_dioxide_sensor_)
64 LOG_SENSOR(
" ",
"Ethanol", this->ethanol_sensor_)
65 LOG_SENSOR(
" ",
"Carbon Monoxide", this->carbon_monoxide_sensor_)
66 LOG_SENSOR(
" ",
"TVOC", this->tvoc_sensor_)
69 switch (this->error_code_) {
71 ESP_LOGW(TAG,
"Communication failed! Is the sensor connected?");
74 ESP_LOGW(TAG,
"Sensor reported invalid APP installed.");
77 ESP_LOGW(TAG,
"Sensor reported APP start failed.");
81 ESP_LOGW(TAG,
"Unknown setup error!");
void status_set_warning(const char *message="unspecified")
bool read_bytes(uint8_t a_register, uint8_t *data, uint8_t len)
Compat APIs All methods below have been added for compatibility reasons.
virtual void setup()
Where the component's initialization should happen.
bool read_sensor_(uint8_t address, sensor::Sensor *sensor)
void status_clear_warning()
void publish_state(float state)
Publish a new state to the front-end.
enum esphome::grove_gas_mc_v2::GroveGasMultichannelV2Component::ErrorCode UNKNOWN
virtual void mark_failed()
Mark this component as failed.
Implementation of SPI Controller mode.
Base-class for all sensors.
esphome::sensor::Sensor * sensor
bool write_bytes(uint8_t a_register, const uint8_t *data, uint8_t len, bool stop=true)