mirror of
https://github.com/esphome/esphome.git
synced 2025-03-20 01:28:16 +00:00
52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "esphome/core/component.h"
|
|
#include "esphome/components/sensor/sensor.h"
|
|
#include "esphome/components/i2c/i2c.h"
|
|
|
|
namespace esphome {
|
|
namespace mcp9600 {
|
|
|
|
enum MCP9600ThermocoupleType : uint8_t {
|
|
MCP9600_THERMOCOUPLE_TYPE_K = 0b000,
|
|
MCP9600_THERMOCOUPLE_TYPE_J = 0b001,
|
|
MCP9600_THERMOCOUPLE_TYPE_T = 0b010,
|
|
MCP9600_THERMOCOUPLE_TYPE_N = 0b011,
|
|
MCP9600_THERMOCOUPLE_TYPE_S = 0b100,
|
|
MCP9600_THERMOCOUPLE_TYPE_E = 0b101,
|
|
MCP9600_THERMOCOUPLE_TYPE_B = 0b110,
|
|
MCP9600_THERMOCOUPLE_TYPE_R = 0b111,
|
|
};
|
|
|
|
class MCP9600Component : public PollingComponent, public i2c::I2CDevice {
|
|
public:
|
|
void setup() override;
|
|
void dump_config() override;
|
|
void update() override;
|
|
|
|
float get_setup_priority() const override { return setup_priority::DATA; }
|
|
|
|
void set_hot_junction(sensor::Sensor *hot_junction) { this->hot_junction_sensor_ = hot_junction; }
|
|
void set_cold_junction(sensor::Sensor *cold_junction) { this->cold_junction_sensor_ = cold_junction; }
|
|
void set_thermocouple_type(MCP9600ThermocoupleType thermocouple_type) {
|
|
this->thermocouple_type_ = thermocouple_type;
|
|
};
|
|
|
|
protected:
|
|
uint8_t device_id_{0};
|
|
|
|
sensor::Sensor *hot_junction_sensor_{nullptr};
|
|
sensor::Sensor *cold_junction_sensor_{nullptr};
|
|
|
|
MCP9600ThermocoupleType thermocouple_type_{MCP9600_THERMOCOUPLE_TYPE_K};
|
|
|
|
enum ErrorCode {
|
|
NONE,
|
|
COMMUNICATION_FAILED,
|
|
FAILED_TO_UPDATE_CONFIGURATION,
|
|
} error_code_{NONE};
|
|
};
|
|
|
|
} // namespace mcp9600
|
|
} // namespace esphome
|