ESPHome 2025.5.0
Loading...
Searching...
No Matches
zyaura.h
Go to the documentation of this file.
1#pragma once
2
4#include "esphome/core/hal.h"
6
7namespace esphome {
8namespace zyaura {
9
10static const uint8_t ZA_MAX_MS = 2;
11static const uint8_t ZA_MSG_LEN = 5;
12static const uint8_t ZA_FRAME_SIZE = 40;
13static const uint8_t ZA_MSG_DELIMETER = 0x0D;
14
15static const uint8_t ZA_BYTE_TYPE = 0;
16static const uint8_t ZA_BYTE_HIGH = 1;
17static const uint8_t ZA_BYTE_LOW = 2;
18static const uint8_t ZA_BYTE_SUM = 3;
19static const uint8_t ZA_BYTE_END = 4;
20
22 HUMIDITY = 0x41,
24 CO2 = 0x50,
25};
26
27struct ZaMessage {
29 uint16_t value;
30};
31
33 public:
34 bool decode(uint32_t ms, bool data);
36
37 protected:
38 uint8_t buffer_[ZA_MSG_LEN];
39 int num_bits_ = 0;
40 uint32_t prev_ms_;
41};
42
44 public:
45 uint16_t co2 = -1;
46 uint16_t temperature = -1;
47 uint16_t humidity = -1;
48
49 void setup(InternalGPIOPin *pin_clock, InternalGPIOPin *pin_data);
50 static void interrupt(ZaSensorStore *arg);
51
52 protected:
56
57 void set_data_(ZaMessage *message);
58};
59
62 public:
65 void set_co2_sensor(sensor::Sensor *co2_sensor) { co2_sensor_ = co2_sensor; }
66 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { temperature_sensor_ = temperature_sensor; }
67 void set_humidity_sensor(sensor::Sensor *humidity_sensor) { humidity_sensor_ = humidity_sensor; }
68
69 void setup() override { this->store_.setup(this->pin_clock_, this->pin_data_); }
70 void dump_config() override;
71 void update() override;
72 float get_setup_priority() const override { return setup_priority::DATA; }
73
74 protected:
81
82 bool publish_state_(ZaDataType data_type, sensor::Sensor *sensor, uint16_t *data_value);
83};
84
85} // namespace zyaura
86} // namespace esphome
Copy of GPIOPin that is safe to use from ISRs (with no virtual functions)
Definition gpio.h:73
This class simplifies creating components that periodically check a state.
Definition component.h:301
Base-class for all sensors.
Definition sensor.h:57
uint8_t buffer_[ZA_MSG_LEN]
Definition zyaura.h:38
bool decode(uint32_t ms, bool data)
Definition zyaura.cpp:9
void set_data_(ZaMessage *message)
Definition zyaura.cpp:57
ZaDataProcessor processor_
Definition zyaura.h:55
ISRInternalGPIOPin pin_data_
Definition zyaura.h:54
void setup(InternalGPIOPin *pin_clock, InternalGPIOPin *pin_data)
Definition zyaura.cpp:40
static void interrupt(ZaSensorStore *arg)
Definition zyaura.cpp:48
ISRInternalGPIOPin pin_clock_
Definition zyaura.h:53
Component for reading temperature/co2/humidity measurements from ZyAura sensors.
Definition zyaura.h:61
void setup() override
Definition zyaura.h:69
void set_pin_clock(InternalGPIOPin *pin)
Definition zyaura.h:63
sensor::Sensor * temperature_sensor_
Definition zyaura.h:79
InternalGPIOPin * pin_clock_
Definition zyaura.h:76
void set_pin_data(InternalGPIOPin *pin)
Definition zyaura.h:64
sensor::Sensor * humidity_sensor_
Definition zyaura.h:80
void set_co2_sensor(sensor::Sensor *co2_sensor)
Definition zyaura.h:65
float get_setup_priority() const override
Definition zyaura.h:72
InternalGPIOPin * pin_data_
Definition zyaura.h:77
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition zyaura.h:66
void dump_config() override
Definition zyaura.cpp:103
bool publish_state_(ZaDataType data_type, sensor::Sensor *sensor, uint16_t *data_value)
Definition zyaura.cpp:71
sensor::Sensor * co2_sensor_
Definition zyaura.h:78
void set_humidity_sensor(sensor::Sensor *humidity_sensor)
Definition zyaura.h:67
void setup()
const float DATA
For components that import data from directly connected sensors like DHT.
Definition component.cpp:19
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7