9static const char *
const TAG =
"max31856";
25 LOG_SENSOR(
"",
"MAX31856",
this);
26 LOG_PIN(
" CS Pin: ", this->
cs_);
27 ESP_LOGCONFIG(TAG,
" Mains Filter: %s",
30 ESP_LOGCONFIG(TAG,
" Thermocouple Type: Unknown");
35 LOG_UPDATE_INTERVAL(
this);
39 ESP_LOGVV(TAG,
"update");
54 if (temp24 & 0x800000) {
60 float temp_c = temp24;
63 ESP_LOGD(TAG,
"Got thermocouple temperature: %.2f°C", temp_c);
69 ESP_LOGVV(TAG,
"one_shot_temperature_");
74 t &= ~MAX31856_CR0_AUTOCONVERT;
81 ESP_LOGVV(TAG,
"read_fault_");
85 ESP_LOGV(TAG,
"status_set_warning");
90 ESP_LOGV(TAG,
"status_set_warning");
94 ESP_LOGW(TAG,
"Cold Junction Out-of-Range: '%s'", this->
name_.
c_str());
97 ESP_LOGW(TAG,
"Thermocouple Out-of-Range: '%s'", this->
name_.
c_str());
100 ESP_LOGW(TAG,
"Cold-Junction High Fault: '%s'", this->
name_.
c_str());
103 ESP_LOGW(TAG,
"Cold-Junction Low Fault: '%s'", this->
name_.
c_str());
106 ESP_LOGW(TAG,
"Thermocouple Temperature High Fault: '%s'", this->
name_.
c_str());
109 ESP_LOGW(TAG,
"Thermocouple Temperature Low Fault: '%s'", this->
name_.
c_str());
112 ESP_LOGW(TAG,
"Overvoltage or Undervoltage Input Fault: '%s'", this->
name_.
c_str());
115 ESP_LOGW(TAG,
"Thermocouple Open-Circuit Fault (possibly not connected): '%s'", this->
name_.
c_str());
122 ESP_LOGV(TAG,
"clear_fault_");
138 ESP_LOGCONFIG(TAG,
"set_thermocouple_type_: 0x%02X",
type);
141 t |= (uint8_t)
type & 0x0F;
146 ESP_LOGCONFIG(TAG,
"set_noise_filter_: 0x%02X",
filter_);
150 ESP_LOGCONFIG(TAG,
"set_noise_filter_: 50 Hz, t==0x%02X", t);
153 ESP_LOGCONFIG(TAG,
"set_noise_filter_: 60 Hz, t==0x%02X", t);
159 ESP_LOGVV(TAG,
"write_register_ raw reg=0x%02X value=0x%02X", reg, value);
161 ESP_LOGVV(TAG,
"write_register_ masked reg=0x%02X value=0x%02X", reg, value);
163 ESP_LOGVV(TAG,
"write_byte reg=0x%02X", reg);
165 ESP_LOGVV(TAG,
"write_byte value=0x%02X", value);
168 ESP_LOGV(TAG,
"write_register_ 0x%02X: 0x%02X", reg, value);
172 ESP_LOGVV(TAG,
"read_register_ 0x%02X", reg);
174 ESP_LOGVV(TAG,
"write_byte reg=0x%02X", reg);
177 ESP_LOGVV(TAG,
"read_byte value=0x%02X", value);
179 ESP_LOGV(TAG,
"read_register_ reg=0x%02X: value=0x%02X", reg, value);
184 ESP_LOGVV(TAG,
"read_register_24_ 0x%02X", reg);
186 ESP_LOGVV(TAG,
"write_byte reg=0x%02X", reg);
189 ESP_LOGVV(TAG,
"read_byte msb=0x%02X", msb);
191 ESP_LOGVV(TAG,
"read_byte mid=0x%02X", mid);
193 ESP_LOGVV(TAG,
"read_byte lsb=0x%02X", lsb);
195 const uint32_t value((msb << 16) | (mid << 8) | lsb);
196 ESP_LOGV(TAG,
"read_register_24_ reg=0x%02X: value=0x%06" PRIX32, reg, value);
void status_set_warning(const char *message=nullptr)
void status_clear_warning()
void set_timeout(const std::string &name, uint32_t timeout, std::function< void()> &&f)
Set a timeout function with a unique name.
constexpr const char * c_str() const
void write_register_(uint8_t reg, uint8_t value)
void read_thermocouple_temperature_()
void dump_config() override
float get_setup_priority() const override
MAX31856ConfigFilter filter_
MAX31856ThermocoupleType thermocouple_type_
uint32_t read_register24_(uint8_t reg)
void one_shot_temperature_()
uint8_t read_register_(uint8_t reg)
void set_thermocouple_type_()
void publish_state(float state)
Publish a new state to the front-end.
void spi_setup() override
void write_byte(uint8_t data)
MAX31856ThermocoupleType
Multiple types of thermocouples supported by the chip.
@ MAX31856_CR0_1SHOT
Config 0 one shot convert flag.
@ MAX31856_CR1_REG
Config 1 register.
@ MAX31856_FAULT_TCLOW
Fault status Thermocouple Temperature Low Fault flag.
@ MAX31856_CR0_FAULT
Config 0 fault mode flag.
@ MAX31856_LTCBH_REG
Linearized TC Temperature, Byte 2.
@ MAX31856_FAULT_TCRANGE
Fault status Thermocouple Out-of-Range flag.
@ MAX31856_CR0_REG
Config 0 register.
@ MAX31856_CJTO_REG
Cold-Junction Temperature Offset Register.
@ MAX31856_FAULT_OPEN
Fault status Thermocouple Open-Circuit Fault flag.
@ MAX31856_FAULT_CJHIGH
Fault status Cold-Junction High Fault flag.
@ MAX31856_SR_REG
Fault Status Register.
@ MAX31856_MASK_REG
Fault Mask register.
@ MAX31856_FAULT_CJLOW
Fault status Cold-Junction Low Fault flag.
@ MAX31856_FAULT_OVUV
Fault status Overvoltage or Undervoltage Input Fault flag.
@ MAX31856_CR0_OCFAULT01
Config 0 open circuit fault 01 flag.
@ MAX31856_FAULT_TCHIGH
Fault status Thermocouple Temperature High Fault flag.
@ MAX31856_FAULT_CJRANGE
Fault status Cold Junction Out-of-Range flag.
@ MAX31856_CR0_FAULTCLR
Config 0 fault clear flag.
const float DATA
For components that import data from directly connected sensors like DHT.
Providing packet encoding functions for exchanging data with a remote host.