ESPHome 2026.5.1
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::zyaura {
8
9static const uint8_t ZA_MAX_MS = 2;
10static const uint8_t ZA_MSG_LEN = 5;
11static const uint8_t ZA_FRAME_SIZE = 40;
12static const uint8_t ZA_MSG_DELIMETER = 0x0D;
13
14static const uint8_t ZA_BYTE_TYPE = 0;
15static const uint8_t ZA_BYTE_HIGH = 1;
16static const uint8_t ZA_BYTE_LOW = 2;
17static const uint8_t ZA_BYTE_SUM = 3;
18static const uint8_t ZA_BYTE_END = 4;
19
21 HUMIDITY = 0x41,
23 CO2 = 0x50,
24};
25
26struct ZaMessage {
28 uint16_t value;
29};
30
32 public:
33 bool decode(uint32_t ms, bool data);
35
36 protected:
37 uint8_t buffer_[ZA_MSG_LEN];
38 int num_bits_ = 0;
40};
41
43 public:
44 uint16_t co2 = -1;
45 uint16_t temperature = -1;
46 uint16_t humidity = -1;
47
48 void setup(InternalGPIOPin *pin_clock, InternalGPIOPin *pin_data);
49 static void interrupt(ZaSensorStore *arg);
50
51 protected:
55
57};
58
61 public:
64 void set_co2_sensor(sensor::Sensor *co2_sensor) { co2_sensor_ = co2_sensor; }
65 void set_temperature_sensor(sensor::Sensor *temperature_sensor) { temperature_sensor_ = temperature_sensor; }
66 void set_humidity_sensor(sensor::Sensor *humidity_sensor) { humidity_sensor_ = humidity_sensor; }
67
68 void setup() override { this->store_.setup(this->pin_clock_, this->pin_data_); }
69 void dump_config() override;
70 void update() override;
71
72 protected:
79
80 bool publish_state_(ZaDataType data_type, sensor::Sensor *sensor, uint16_t *data_value);
81};
82
83} // namespace esphome::zyaura
Copy of GPIOPin that is safe to use from ISRs (with no virtual functions)
Definition gpio.h:92
This class simplifies creating components that periodically check a state.
Definition component.h:602
Base-class for all sensors.
Definition sensor.h:47
uint8_t buffer_[ZA_MSG_LEN]
Definition zyaura.h:37
bool decode(uint32_t ms, bool data)
Definition zyaura.cpp:8
void set_data_(ZaMessage *message)
Definition zyaura.cpp:56
ZaDataProcessor processor_
Definition zyaura.h:54
ISRInternalGPIOPin pin_data_
Definition zyaura.h:53
void setup(InternalGPIOPin *pin_clock, InternalGPIOPin *pin_data)
Definition zyaura.cpp:39
static void interrupt(ZaSensorStore *arg)
Definition zyaura.cpp:47
ISRInternalGPIOPin pin_clock_
Definition zyaura.h:52
Component for reading temperature/co2/humidity measurements from ZyAura sensors.
Definition zyaura.h:60
void setup() override
Definition zyaura.h:68
void set_pin_clock(InternalGPIOPin *pin)
Definition zyaura.h:62
sensor::Sensor * temperature_sensor_
Definition zyaura.h:77
InternalGPIOPin * pin_clock_
Definition zyaura.h:74
void set_pin_data(InternalGPIOPin *pin)
Definition zyaura.h:63
sensor::Sensor * humidity_sensor_
Definition zyaura.h:78
void set_co2_sensor(sensor::Sensor *co2_sensor)
Definition zyaura.h:64
InternalGPIOPin * pin_data_
Definition zyaura.h:75
void set_temperature_sensor(sensor::Sensor *temperature_sensor)
Definition zyaura.h:65
void dump_config() override
Definition zyaura.cpp:102
bool publish_state_(ZaDataType data_type, sensor::Sensor *sensor, uint16_t *data_value)
Definition zyaura.cpp:70
sensor::Sensor * co2_sensor_
Definition zyaura.h:76
void set_humidity_sensor(sensor::Sensor *humidity_sensor)
Definition zyaura.h:66
const char * message
Definition component.cpp:35
void setup()
static void uint32_t