Wemos D1 Mini Frimware zur Steuerung einer RGBW-LED-Lampe
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * TimerManager.cpp
  3. *
  4. * Created on: 12.07.2026
  5. * Author: FSmilari
  6. */
  7. #include "TimerManager.h"
  8. #include "ConfigManager.h"
  9. TimerManager::TimerManager(ConfigManager &configManager) : configManager(configManager) {
  10. }
  11. TimerManager::~TimerManager() {
  12. }
  13. void TimerManager::onTimerIntervalChange(String timerIntervalName, const char *timerInterval) {
  14. TimeInterval interval;
  15. parseTimeInterval(timerInterval, interval);
  16. saveTimerInterval(timerIntervalName, interval.start, interval.end);
  17. }
  18. void TimerManager::saveTimerInterval(String timerIntervalName, uint32_t start, uint32_t end) {
  19. Config cfg = configManager.getConfig();
  20. if (timerIntervalName.equals("timeInterval1")) {
  21. cfg.timeInterval1.start = start;
  22. cfg.timeInterval1.end = end;
  23. } else if (timerIntervalName.equals("timeInterval2")) {
  24. cfg.timeInterval2.start = start;
  25. cfg.timeInterval2.end = end;
  26. }
  27. configManager.saveConfig(cfg);
  28. }
  29. uint32_t TimerManager::timeToSeconds(uint8_t hour, uint8_t minute, uint8_t second) {
  30. return (uint32_t) hour * 3600UL +
  31. (uint32_t) minute * 60UL +
  32. second;
  33. }
  34. bool TimerManager::parseTimeInterval(const char *str, TimeInterval &interval) {
  35. unsigned int sh, sm, ss;
  36. unsigned int eh, em, es;
  37. if (sscanf(str,
  38. "%u:%u:%u - %u:%u:%u",
  39. &sh, &sm, &ss,
  40. &eh, &em, &es) != 6) {
  41. return false;
  42. }
  43. // Bereich prüfen
  44. if (sh > 23 || eh > 23 ||
  45. sm > 59 || em > 59 ||
  46. ss > 59 || es > 59) {
  47. return false;
  48. }
  49. interval.start = timeToSeconds(sh, sm, ss);
  50. interval.end = timeToSeconds(eh, em, es);
  51. return true;
  52. }