ESPHome 2025.5.0
Loading...
Searching...
No Matches
pvvx_display.h
Go to the documentation of this file.
1#pragma once
2
6
7#include <cinttypes>
8
9#ifdef USE_ESP32
10#include <esp_gattc_api.h>
11#ifdef USE_TIME
13#endif
14
15namespace esphome {
16namespace pvvx_mithermometer {
17
18class PVVXDisplay;
19
31
32using pvvx_writer_t = std::function<void(PVVXDisplay &)>;
33
35 public:
36 void set_writer(pvvx_writer_t &&writer) { this->writer_ = writer; }
37 void set_auto_clear(bool auto_clear_enabled) { this->auto_clear_enabled_ = auto_clear_enabled; }
38 void set_disconnect_delay(uint32_t ms) { this->disconnect_delay_ms_ = ms; }
39
40 void dump_config() override;
41
42 float get_setup_priority() const override { return setup_priority::DATA; }
43
44 void update() override;
45
46 void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if,
47 esp_ble_gattc_cb_param_t *param) override;
48
50 void set_validity_period(uint16_t validity_period) { this->validity_period_ = validity_period; }
52 void clear() {
53 this->bignum_ = 0;
54 this->smallnum_ = 0;
55 this->cfg_ = 0;
56 }
63 void print_bignum(float bignum) { this->bignum_ = bignum * 10; }
69 void print_smallnum(float smallnum) { this->smallnum_ = smallnum; }
88 void print_happy(bool happy = true) { this->setcfgbit_(0, happy); }
90 void print_sad(bool sad = true) { this->setcfgbit_(1, sad); }
92 void print_bracket(bool bracket = true) { this->setcfgbit_(2, bracket); }
94 void print_percent(bool percent = true) { this->setcfgbit_(3, percent); }
96 void print_battery(bool battery = true) { this->setcfgbit_(4, battery); }
98 void print_unit(UNIT unit) { this->cfg_ = (this->cfg_ & 0x1F) | ((unit & 0x7) << 5); }
99
100 void display();
101
102#ifdef USE_TIME
103 void set_time(time::RealTimeClock *time) { this->time_ = time; };
104#endif
105
106 protected:
108 uint32_t disconnect_delay_ms_ = 5000;
109 uint16_t validity_period_ = 300;
110 uint16_t bignum_ = 0;
111 uint16_t smallnum_ = 0;
112 uint8_t cfg_ = 0;
113
114 void setcfgbit_(uint8_t bit, bool value);
115 void send_to_setup_char_(uint8_t *blk, size_t size);
116 void delayed_disconnect_();
117#ifdef USE_TIME
118 void sync_time_();
120#endif
121 uint16_t char_handle_ = 0;
123
125 esp32_ble_tracker::ESPBTUUID::from_raw("00001f10-0000-1000-8000-00805f9b34fb");
127 esp32_ble_tracker::ESPBTUUID::from_raw("00001f1f-0000-1000-8000-00805f9b34fb");
128
130};
131
132} // namespace pvvx_mithermometer
133} // namespace esphome
134
135#endif
This class simplifies creating components that periodically check a state.
Definition component.h:301
float get_setup_priority() const override
void send_to_setup_char_(uint8_t *blk, size_t size)
void print_bignum(float bignum)
Print the big number.
void print_bracket(bool bracket=true)
Print round brackets around the face.
void setcfgbit_(uint8_t bit, bool value)
void print_battery(bool battery=true)
Print battery sign.
void set_time(time::RealTimeClock *time)
esp32_ble_tracker::ESPBTUUID service_uuid_
void set_validity_period(uint16_t validity_period)
Set validity period of the display information in seconds (1..65535)
esp32_ble_tracker::ESPBTUUID char_uuid_
void set_auto_clear(bool auto_clear_enabled)
void print_smallnum(float smallnum)
Print the small number.
void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, esp_ble_gattc_cb_param_t *param) override
void print_happy(bool happy=true)
Print a happy face.
void set_writer(pvvx_writer_t &&writer)
void print_percent(bool percent=true)
Print percent sign at small number.
void print_sad(bool sad=true)
Print a sad face.
void print_unit(UNIT unit)
Print unit of big number.
The RealTimeClock class exposes common timekeeping functions via the device's local real-time clock.
std::function< void(PVVXDisplay &)> pvvx_writer_t
UNIT
Possible units for the big number.
@ UNIT_NONE
do not show a unit
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