ESPHome 2025.12.0-dev
Loading...
Searching...
No Matches
real_time_clock.h
Go to the documentation of this file.
1#pragma once
2
3#include <bitset>
4#include <cstdlib>
8#include "esphome/core/time.h"
9
10namespace esphome {
11namespace time {
12
20 public:
21 explicit RealTimeClock();
22
23#ifdef USE_TIME_TIMEZONE
25 void set_timezone(const std::string &tz) {
26 this->timezone_ = tz;
27 this->apply_timezone_();
28 }
29
31 void set_timezone(const char *tz, size_t len) {
32 if (this->timezone_.length() != len || memcmp(this->timezone_.c_str(), tz, len) != 0) {
33 this->timezone_.assign(tz, len);
34 this->apply_timezone_();
35 }
36 }
37
39 std::string get_timezone() { return this->timezone_; }
40#endif
41
44
47
49 time_t timestamp_now() { return ::time(nullptr); }
50
51 void add_on_time_sync_callback(std::function<void()> &&callback) {
52 this->time_sync_callback_.add(std::move(callback));
53 };
54
55 void dump_config() override;
56
57 protected:
59 void synchronize_epoch_(uint32_t epoch);
60
61#ifdef USE_TIME_TIMEZONE
62 std::string timezone_{};
63 void apply_timezone_();
64#endif
65
67};
68
69template<typename... Ts> class TimeHasTimeCondition : public Condition<Ts...> {
70 public:
72 bool check(const Ts &...x) override { return this->parent_->now().is_valid(); }
73
74 protected:
76};
77
78} // namespace time
79} // namespace esphome
Base class for all automation conditions.
Definition automation.h:148
This class simplifies creating components that periodically check a state.
Definition component.h:437
The RealTimeClock class exposes common timekeeping functions via the device's local real-time clock.
CallbackManager< void()> time_sync_callback_
time_t timestamp_now()
Get the current time as the UTC epoch since January 1st 1970.
void add_on_time_sync_callback(std::function< void()> &&callback)
ESPTime now()
Get the time in the currently defined timezone.
ESPTime utcnow()
Get the time without any time zone or DST corrections.
void set_timezone(const std::string &tz)
Set the time zone.
std::string get_timezone()
Get the time zone currently in use.
void synchronize_epoch_(uint32_t epoch)
Report a unix epoch as current time.
void set_timezone(const char *tz, size_t len)
Set the time zone from raw buffer, only if it differs from the current one.
bool check(const Ts &...x) override
TimeHasTimeCondition(RealTimeClock *parent)
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
std::string size_t len
Definition helpers.h:500
A more user-friendly version of struct tm from time.h.
Definition time.h:15
static ESPTime from_epoch_local(time_t epoch)
Convert an UTC epoch timestamp to a local time ESPTime instance.
Definition time.h:85
bool is_valid() const
Check if this ESPTime is valid (all fields in range and year is greater than 2018)
Definition time.h:61
static ESPTime from_epoch_utc(time_t epoch)
Convert an UTC epoch timestamp to a UTC time ESPTime instance.
Definition time.h:97
uint16_t x
Definition tt21100.cpp:5