ESPHome 2026.6.0-dev
Loading...
Searching...
No Matches
sensor_mlx90393.h
Go to the documentation of this file.
1#pragma once
2
3#include <MLX90393.h>
4#include <MLX90393Hal.h>
8#include "esphome/core/hal.h"
9
10namespace esphome::mlx90393 {
11
22
23class MLX90393Cls : public PollingComponent, public i2c::I2CDevice, public MLX90393Hal {
24 public:
25 void setup() override;
26 void dump_config() override;
27 void update() override;
28
29 void set_drdy_gpio(GPIOPin *pin) { drdy_pin_ = pin; }
30
31 void set_x_sensor(sensor::Sensor *x_sensor) { x_sensor_ = x_sensor; }
32 void set_y_sensor(sensor::Sensor *y_sensor) { y_sensor_ = y_sensor; }
33 void set_z_sensor(sensor::Sensor *z_sensor) { z_sensor_ = z_sensor; }
34 void set_t_sensor(sensor::Sensor *t_sensor) { t_sensor_ = t_sensor; }
35
36 void set_oversampling(uint8_t osr) { oversampling_ = osr; }
37 void set_t_oversampling(uint8_t osr2) { temperature_oversampling_ = osr2; }
38 void set_resolution(uint8_t xyz, uint8_t res) { resolutions_[xyz] = res; }
39 void set_filter(uint8_t filter) { filter_ = filter; }
40 void set_gain(uint8_t gain_sel) { gain_ = gain_sel; }
41 void set_temperature_compensation(bool temperature_compensation) {
42 temperature_compensation_ = temperature_compensation;
43 }
44 void set_hallconf(uint8_t hallconf) { hallconf_ = hallconf; }
45 // overrides for MLX library
46
47 // disable lint because it keeps suggesting const uint8_t *response.
48 // this->read() writes data into response, so it can't be const
49 bool transceive(const uint8_t *request, size_t request_size, uint8_t *response,
50 size_t response_size) override; // NOLINT
51 bool has_drdy_pin() override;
52 bool read_drdy_pin() override;
53 void sleep_millis(uint32_t millis) override;
54 void sleep_micros(uint32_t micros) override;
55
56 protected:
57 MLX90393 mlx_;
62 uint8_t gain_;
65 uint8_t filter_;
66 uint8_t resolutions_[3]{0};
68 uint8_t hallconf_{0xC};
69 GPIOPin *drdy_pin_{nullptr};
70
72 uint8_t apply_setting_(MLX90393Setting which);
73
76};
77
78} // namespace esphome::mlx90393
This class simplifies creating components that periodically check a state.
Definition component.h:585
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:132
void sleep_micros(uint32_t micros) override
void set_gain(uint8_t gain_sel)
void sleep_millis(uint32_t millis) override
void set_filter(uint8_t filter)
void set_temperature_compensation(bool temperature_compensation)
void set_t_oversampling(uint8_t osr2)
void verify_settings_timeout_(MLX90393Setting stage)
Regularly checks that our settings are still applied.
void set_z_sensor(sensor::Sensor *z_sensor)
bool verify_setting_(MLX90393Setting which)
void set_x_sensor(sensor::Sensor *x_sensor)
void set_hallconf(uint8_t hallconf)
bool transceive(const uint8_t *request, size_t request_size, uint8_t *response, size_t response_size) override
void set_t_sensor(sensor::Sensor *t_sensor)
void set_y_sensor(sensor::Sensor *y_sensor)
uint8_t apply_setting_(MLX90393Setting which)
void set_resolution(uint8_t xyz, uint8_t res)
Base-class for all sensors.
Definition sensor.h:47
uint32_t IRAM_ATTR HOT micros()
Definition hal.cpp:43
uint32_t IRAM_ATTR HOT millis()
Definition hal.cpp:28
static void uint32_t