ESPHome  2025.4.0
real_time_clock.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <bitset>
4 #include <cstdlib>
7 #include "esphome/core/helpers.h"
8 #include "esphome/core/time.h"
9 
10 namespace esphome {
11 namespace time {
12 
20  public:
21  explicit RealTimeClock();
22 
24  void set_timezone(const std::string &tz) {
25  this->timezone_ = tz;
26  this->apply_timezone_();
27  }
28 
30  std::string get_timezone() { return this->timezone_; }
31 
34 
37 
39  time_t timestamp_now() { return ::time(nullptr); }
40 
41  void add_on_time_sync_callback(std::function<void()> callback) {
42  this->time_sync_callback_.add(std::move(callback));
43  };
44 
45  protected:
47  void synchronize_epoch_(uint32_t epoch);
48 
49  std::string timezone_{};
50  void apply_timezone_();
51 
53 };
54 
55 template<typename... Ts> class TimeHasTimeCondition : public Condition<Ts...> {
56  public:
57  TimeHasTimeCondition(RealTimeClock *parent) : parent_(parent) {}
58  bool check(Ts... x) override { return this->parent_->now().is_valid(); }
59 
60  protected:
62 };
63 
64 } // namespace time
65 } // namespace esphome
ESPTime now()
Get the time in the currently defined timezone.
TimeHasTimeCondition(RealTimeClock *parent)
static ESPTime from_epoch_utc(time_t epoch)
Convert an UTC epoch timestamp to a UTC time ESPTime instance.
Definition: time.h:92
The RealTimeClock class exposes common timekeeping functions via the device&#39;s local real-time clock...
uint16_t x
Definition: tt21100.cpp:17
A more user-friendly version of struct tm from time.h.
Definition: time.h:15
std::string get_timezone()
Get the time zone currently in use.
void add_on_time_sync_callback(std::function< void()> callback)
This class simplifies creating components that periodically check a state.
Definition: component.h:296
void set_timezone(const std::string &tz)
Set the time zone.
CallbackManager< void()> time_sync_callback_
static ESPTime from_epoch_local(time_t epoch)
Convert an UTC epoch timestamp to a local time ESPTime instance.
Definition: time.h:83
Base class for all automation conditions.
Definition: automation.h:74
time_t timestamp_now()
Get the current time as the UTC epoch since January 1st 1970.
ESPTime utcnow()
Get the time without any time zone or DST corrections.
Implementation of SPI Controller mode.
Definition: a01nyub.cpp:7
void synchronize_epoch_(uint32_t epoch)
Report a unix epoch as current time.