1
0
mirror of https://github.com/esphome/esphome.git synced 2025-04-14 23:00:29 +01:00

36 lines
1022 B
C++

#pragma once
#include "esphome/core/component.h"
#include "esphome/components/sensor/sensor.h"
#include "esphome/components/i2c/i2c.h"
// ref:
// https://github.com/DFRobot/DFRobot_OzoneSensor
namespace esphome {
namespace sen0321_sensor {
// Sensor Mode
// While passive is supposedly supported, it does not appear to work reliably.
static const uint8_t SENSOR_MODE_REGISTER = 0x03;
static const uint8_t SENSOR_MODE_AUTO = 0x00;
static const uint8_t SENSOR_MODE_PASSIVE = 0x01;
static const uint8_t SET_REGISTER = 0x04;
// Each register is 2 wide, so 0x07-0x08 for passive, or 0x09-0x0A for auto
// First register is high bits, next low.
static const uint8_t SENSOR_PASS_READ_REG = 0x07;
static const uint8_t SENSOR_AUTO_READ_REG = 0x09;
class Sen0321Sensor : public sensor::Sensor, public PollingComponent, public i2c::I2CDevice {
public:
void update() override;
void dump_config() override;
void setup() override;
protected:
void read_data_();
};
} // namespace sen0321_sensor
} // namespace esphome