ESPHome 2025.9.0
Loading...
Searching...
No Matches
qmp6988.h
Go to the documentation of this file.
1#pragma once
2
6#include "esphome/core/hal.h"
8#include "esphome/core/log.h"
9
10namespace esphome {
11namespace qmp6988 {
12
13/* oversampling */
24
25/* filter */
34
35using qmp6988_cali_data_t = struct Qmp6988CaliData {
36 int32_t COE_a0;
37 int16_t COE_a1;
38 int16_t COE_a2;
39 int32_t COE_b00;
40 int16_t COE_bt1;
41 int16_t COE_bt2;
42 int16_t COE_bp1;
43 int16_t COE_b11;
44 int16_t COE_bp2;
45 int16_t COE_b12;
46 int16_t COE_b21;
47 int16_t COE_bp3;
48};
49
50using qmp6988_fk_data_t = struct Qmp6988FkData {
51 float a0, b00;
52 float a1, a2, bt1, bt2, bp1, b11, bp2, b12, b21, bp3;
53};
54
55using qmp6988_ik_data_t = struct Qmp6988IkData {
56 int32_t a0, b00;
57 int32_t a1, a2;
58 int64_t bt1, bt2, bp1, b11, bp2, b12, b21, bp3;
59};
60
61using qmp6988_data_t = struct Qmp6988Data {
62 uint8_t chip_id;
63 uint8_t power_mode;
64 float temperature;
65 float pressure;
66 float altitude;
67 qmp6988_cali_data_t qmp6988_cali;
69};
70
72 public:
73 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { this->temperature_sensor_ = temperature_sensor; }
74 void set_pressure_sensor(sensor::Sensor *pressure_sensor) { this->pressure_sensor_ = pressure_sensor; }
75
76 void setup() override;
77 void dump_config() override;
78 void update() override;
79
80 void set_iir_filter(QMP6988IIRFilter iirfilter) { this->iir_filter_ = iirfilter; }
82 this->temperature_oversampling_ = oversampling_t;
83 }
84 void set_pressure_oversampling(QMP6988Oversampling oversampling_p) { this->pressure_oversampling_ = oversampling_p; }
85
86 protected:
90
94
95 void software_reset_();
97 bool device_check_();
98 void set_power_mode_(uint8_t power_mode);
101 void write_filter_(QMP6988IIRFilter filter);
102 void calculate_pressure_();
103 void calculate_altitude_(float pressure, float temp);
104
105 int32_t get_compensated_pressure_(qmp6988_ik_data_t *ik, int32_t dp, int16_t tx);
106 int16_t get_compensated_temperature_(qmp6988_ik_data_t *ik, int32_t dt);
107};
108
109} // namespace qmp6988
110} // namespace esphome
This class simplifies creating components that periodically check a state.
Definition component.h:429
This Class provides the methods to read/write bytes from/to an i2c device.
Definition i2c.h:133
void write_filter_(QMP6988IIRFilter filter)
Definition qmp6988.cpp:250
sensor::Sensor * temperature_sensor_
Definition qmp6988.h:88
void calculate_altitude_(float pressure, float temp)
Definition qmp6988.cpp:278
int32_t get_compensated_pressure_(qmp6988_ik_data_t *ik, int32_t dp, int16_t tx)
Definition qmp6988.cpp:177
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition qmp6988.h:73
QMP6988Oversampling pressure_oversampling_
Definition qmp6988.h:92
void write_oversampling_pressure_(QMP6988Oversampling oversampling_p)
Definition qmp6988.cpp:258
sensor::Sensor * pressure_sensor_
Definition qmp6988.h:89
QMP6988Oversampling temperature_oversampling_
Definition qmp6988.h:91
void set_iir_filter(QMP6988IIRFilter iirfilter)
Definition qmp6988.h:80
void set_temperature_oversampling(QMP6988Oversampling oversampling_t)
Definition qmp6988.h:81
int16_t get_compensated_temperature_(qmp6988_ik_data_t *ik, int32_t dt)
Definition qmp6988.cpp:164
void set_power_mode_(uint8_t power_mode)
Definition qmp6988.cpp:228
void set_pressure_sensor(sensor::Sensor *pressure_sensor)
Definition qmp6988.h:74
void set_pressure_oversampling(QMP6988Oversampling oversampling_p)
Definition qmp6988.h:84
void write_oversampling_temperature_(QMP6988Oversampling oversampling_t)
Definition qmp6988.cpp:268
Base-class for all sensors.
Definition sensor.h:42
PowerMode power_mode
Definition msa3xx.h:3
struct Qmp6988IkData { int32_t a0, b00; int32_t a1, a2; int64_t bt1, bt2, bp1, b11, bp2, b12, b21, bp3;} qmp6988_ik_data_t
Definition qmp6988.h:55
struct Qmp6988FkData { float a0, b00; float a1, a2, bt1, bt2, bp1, b11, bp2, b12, b21, bp3;} qmp6988_fk_data_t
Definition qmp6988.h:50
struct Qmp6988Data { uint8_t chip_id; uint8_t power_mode; float temperature; float pressure; float altitude; qmp6988_cali_data_t qmp6988_cali; qmp6988_ik_data_t ik;} qmp6988_data_t
Definition qmp6988.h:61
@ QMP6988_OVERSAMPLING_8X
Definition qmp6988.h:19
@ QMP6988_OVERSAMPLING_SKIPPED
Definition qmp6988.h:15
@ QMP6988_OVERSAMPLING_16X
Definition qmp6988.h:20
@ QMP6988_OVERSAMPLING_32X
Definition qmp6988.h:21
@ QMP6988_OVERSAMPLING_2X
Definition qmp6988.h:17
@ QMP6988_OVERSAMPLING_64X
Definition qmp6988.h:22
@ QMP6988_OVERSAMPLING_1X
Definition qmp6988.h:16
@ QMP6988_OVERSAMPLING_4X
Definition qmp6988.h:18
@ QMP6988_IIR_FILTER_2X
Definition qmp6988.h:28
@ QMP6988_IIR_FILTER_4X
Definition qmp6988.h:29
@ QMP6988_IIR_FILTER_16X
Definition qmp6988.h:31
@ QMP6988_IIR_FILTER_8X
Definition qmp6988.h:30
@ QMP6988_IIR_FILTER_32X
Definition qmp6988.h:32
@ QMP6988_IIR_FILTER_OFF
Definition qmp6988.h:27
struct Qmp6988CaliData { int32_t COE_a0; int16_t COE_a1; int16_t COE_a2; int32_t COE_b00; int16_t COE_bt1; int16_t COE_bt2; int16_t COE_bp1; int16_t COE_b11; int16_t COE_bp2; int16_t COE_b12; int16_t COE_b21; int16_t COE_bp3;} qmp6988_cali_data_t
Definition qmp6988.h:35
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
uint16_t temperature
Definition sun_gtil2.cpp:12
uint8_t pressure
Definition tt21100.cpp:7