As she got better at reading we switched to a clock, and taught her that when the first digit was "8" she could get up:
This worked pretty well, but as she got close to starting kindergarten we needed to move her bedtime and waketime earlier. We did this gradually, about 15min at a time, over the course of a couple weeks. Since she can't tell time yet and was only reading the most significant digit she wasn't going to be able to learn that 7:45, then 7:30, then 7:15, etc meant time to get up. So I did the easy thing, and started setting her clock early. First fifteen minutes fast, then thirty minutes fast, until eventually it was an hour fast.
It's now the first week of school and her clock reads "8:00" at 7am. At this point switching it to the correct time and teaching her she can get up if it is "7:??" would have made sense, but there was enough going on that we didn't get to it.
Now we're a month in, she's gotten faster with her morning routine, and she could be sleeping later. So I've pushed her clock to only be 48 minutes fast instead of an hour, and it reads "8:00" at 7:12am.
All of this is pretty silly: she's pretty close to learning to tell time, and having one clock in the house that doesn't match the others is going to start confusing her. And it already confuses adults sometimes (mostly me) since who expects a clock to be 48min fast?
On the other hand I'm not sure where to go next. I could just leave things alone until she points out that it's weird, at which point she'll know time well enough that I can set it correctly and suggest she not get up before 7:12am. Or I could get a more accurate outlet timer, which would have the benefit of also working for our younger daughter? Not sure yet.
(When we were little we had analog clocks in the house, and my dad made a wooden demonstration clock for us. When the hands on the real clock matched the hands on the wooden clock, it was time to get up. I think this worked well, though I remember one weekend when my youngest sister seemed to sleep a really long time, and it turned out she had slept past her normal waking time of 7am and so was still waiting for the hands to come around again.)