void timeTick() {
  timeClient.update();
  if (timeTimer.isReady()) {
    byte thisDay = timeClient.getDay();
    if (thisDay == 0) thisDay = 7;  // воскресенье это 0
    thisDay--;
    thisTime = timeClient.getHours() * 60 + timeClient.getMinutes();

    // проверка рассвета
    if (alarm[thisDay].state &&                                       // день будильника
        thisTime >= (alarm[thisDay].time - dawnOffsets[dawnMode]) &&  // позже начала
        thisTime < (alarm[thisDay].time + DAWN_TIMEOUT) ) {                      // раньше конца + минута
      if (!manualOff) {
        // величина рассвета 0-255
        int dawnPosition = 255 * ((float)(thisTime - (alarm[thisDay].time - dawnOffsets[dawnMode])) / dawnOffsets[dawnMode]);
        dawnPosition = constrain(dawnPosition, 0, 255);
        CHSV dawnColor = CHSV(map(dawnPosition, 0, 255, 10, 35),
                              map(dawnPosition, 0, 255, 255, 170),
                              map(dawnPosition, 0, 255, 10, DAWN_BRIGHT));
        fill_solid(leds, NUM_LEDS, dawnColor);
        FastLED.setBrightness(255);
        FastLED.show();
        dawnFlag = true;
      }
    } else {
      if (dawnFlag) {
        dawnFlag = false;
        manualOff = false;
        FastLED.setBrightness(modes[currentMode].brightness);
      }
    }

  }
}
