ESPHome 2025.5.0
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 {
11namespace mlx90393 {
12
23
24class MLX90393Cls : public PollingComponent, public i2c::I2CDevice, public MLX90393Hal {
25 public:
26 void setup() override;
27 void dump_config() override;
28 float get_setup_priority() const override;
29 void update() override;
30
31 void set_drdy_gpio(GPIOPin *pin) { drdy_pin_ = pin; }
32
33 void set_x_sensor(sensor::Sensor *x_sensor) { x_sensor_ = x_sensor; }
34 void set_y_sensor(sensor::Sensor *y_sensor) { y_sensor_ = y_sensor; }
35 void set_z_sensor(sensor::Sensor *z_sensor) { z_sensor_ = z_sensor; }
36 void set_t_sensor(sensor::Sensor *t_sensor) { t_sensor_ = t_sensor; }
37
38 void set_oversampling(uint8_t osr) { oversampling_ = osr; }
39 void set_t_oversampling(uint8_t osr2) { temperature_oversampling_ = osr2; }
40 void set_resolution(uint8_t xyz, uint8_t res) { resolutions_[xyz] = res; }
41 void set_filter(uint8_t filter) { filter_ = filter; }
42 void set_gain(uint8_t gain_sel) { gain_ = gain_sel; }
43 void set_temperature_compensation(bool temperature_compensation) {
44 temperature_compensation_ = temperature_compensation;
45 }
46 void set_hallconf(uint8_t hallconf) { hallconf_ = hallconf; }
47 // overrides for MLX library
48
49 // disable lint because it keeps suggesting const uint8_t *response.
50 // this->read() writes data into response, so it can't be const
51 bool transceive(const uint8_t *request, size_t request_size, uint8_t *response,
52 size_t response_size) override; // NOLINT
53 bool has_drdy_pin() override;
54 bool read_drdy_pin() override;
55 void sleep_millis(uint32_t millis) override;
56 void sleep_micros(uint32_t micros) override;
57
58 protected:
59 MLX90393 mlx_;
64 uint8_t gain_;
67 uint8_t filter_;
68 uint8_t resolutions_[3]{0};
70 uint8_t hallconf_{0xC};
71 GPIOPin *drdy_pin_{nullptr};
72
74 uint8_t apply_setting_(MLX90393Setting which);
75
78};
79
80} // namespace mlx90393
81} // namespace esphome
This class simplifies creating components that periodically check a state.
Definition component.h:301
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:133
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)
float get_setup_priority() const override
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:57
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint32_t IRAM_ATTR HOT micros()
Definition core.cpp:29
uint32_t IRAM_ATTR HOT millis()
Definition core.cpp:27