mirror of
https://github.com/esphome/esphome.git
synced 2025-11-14 13:55:45 +00:00
Compare commits
3 Commits
integratio
...
sntp_safer
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40c8292e91 | ||
|
|
67524e14ee | ||
|
|
2290eb0dd2 |
@@ -52,8 +52,10 @@ static void log_invalid_parameter(const char *name, const LogString *message) {
|
||||
}
|
||||
|
||||
static const LogString *color_mode_to_human(ColorMode color_mode) {
|
||||
if (color_mode == ColorMode::UNKNOWN)
|
||||
return LOG_STR("Unknown");
|
||||
if (color_mode == ColorMode::ON_OFF)
|
||||
return LOG_STR("On/Off");
|
||||
if (color_mode == ColorMode::BRIGHTNESS)
|
||||
return LOG_STR("Brightness");
|
||||
if (color_mode == ColorMode::WHITE)
|
||||
return LOG_STR("White");
|
||||
if (color_mode == ColorMode::COLOR_TEMPERATURE)
|
||||
@@ -68,7 +70,7 @@ static const LogString *color_mode_to_human(ColorMode color_mode) {
|
||||
return LOG_STR("RGB + cold/warm white");
|
||||
if (color_mode == ColorMode::RGB_COLOR_TEMPERATURE)
|
||||
return LOG_STR("RGB + color temperature");
|
||||
return LOG_STR("");
|
||||
return LOG_STR("Unknown");
|
||||
}
|
||||
|
||||
// Helper to log percentage values
|
||||
|
||||
@@ -2,14 +2,11 @@
|
||||
|
||||
#include "esphome/core/component.h"
|
||||
#include "esphome/components/time/real_time_clock.h"
|
||||
#include <array>
|
||||
#include "esphome/core/helpers.h"
|
||||
|
||||
namespace esphome {
|
||||
namespace sntp {
|
||||
|
||||
// Server count is calculated at compile time by Python codegen
|
||||
// SNTP_SERVER_COUNT will always be defined
|
||||
|
||||
/// The SNTP component allows you to configure local timekeeping via Simple Network Time Protocol.
|
||||
///
|
||||
/// \note
|
||||
@@ -18,7 +15,7 @@ namespace sntp {
|
||||
/// \see https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
|
||||
class SNTPComponent : public time::RealTimeClock {
|
||||
public:
|
||||
SNTPComponent(const std::array<const char *, SNTP_SERVER_COUNT> &servers) : servers_(servers) {}
|
||||
SNTPComponent(std::initializer_list<const char *> servers) : servers_(servers) {}
|
||||
|
||||
void setup() override;
|
||||
void dump_config() override;
|
||||
@@ -30,10 +27,11 @@ class SNTPComponent : public time::RealTimeClock {
|
||||
void time_synced();
|
||||
|
||||
protected:
|
||||
// Store const char pointers to string literals
|
||||
// Store const char pointers to string literals (max 3 servers)
|
||||
// Uses FixedVector to avoid heap allocation but support runtime sizing
|
||||
// ESP8266: strings in rodata (RAM), but avoids std::string overhead (~24 bytes each)
|
||||
// Other platforms: strings in flash
|
||||
std::array<const char *, SNTP_SERVER_COUNT> servers_;
|
||||
FixedVector<const char *> servers_;
|
||||
bool has_time_{false};
|
||||
|
||||
#if defined(USE_ESP32)
|
||||
|
||||
@@ -44,9 +44,6 @@ CONFIG_SCHEMA = cv.All(
|
||||
async def to_code(config):
|
||||
servers = config[CONF_SERVERS]
|
||||
|
||||
# Define server count at compile time
|
||||
cg.add_define("SNTP_SERVER_COUNT", len(servers))
|
||||
|
||||
# Pass string literals to constructor - stored in flash/rodata by compiler
|
||||
var = cg.new_Pvariable(config[CONF_ID], servers)
|
||||
|
||||
|
||||
@@ -89,7 +89,6 @@
|
||||
#define USE_MDNS_STORE_SERVICES
|
||||
#define MDNS_SERVICE_COUNT 3
|
||||
#define MDNS_DYNAMIC_TXT_COUNT 3
|
||||
#define SNTP_SERVER_COUNT 3
|
||||
#define USE_MEDIA_PLAYER
|
||||
#define USE_NEXTION_TFT_UPLOAD
|
||||
#define USE_NUMBER
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
pylint==4.0.2
|
||||
pylint==4.0.3
|
||||
flake8==7.3.0 # also change in .pre-commit-config.yaml when updating
|
||||
ruff==0.14.4 # also change in .pre-commit-config.yaml when updating
|
||||
pyupgrade==3.21.1 # also change in .pre-commit-config.yaml when updating
|
||||
|
||||
Reference in New Issue
Block a user