| SUPERCYCLE # | REAL DAY | LIGHT ON | LIGHT OFF |
|---|---|---|---|
| #1 | Day 1 | 17:00 | 09:00 (+1) |
| #2 | Day 2 | 19:00 | 11:00 (+1) |
| #3 | Day 3 | 21:00 | 13:00 (+1) |
| #4 | Day 4 | 23:00 | 15:00 (+1) |
| #5 | Day 5 | 01:00 | 17:00 |
| #6 | Day 6 | 03:00 | 19:00 |
| #7 | Day 7 | 05:00 | 21:00 |
| #8 | Day 8 | 07:00 | 23:00 |
| #9 | Day 9 | 09:00 | 01:00 (+1) |
| #10 | Day 10 | 11:00 | 03:00 (+1) |
| #11 | Day 11 | 13:00 | 05:00 (+1) |
| #12 | Day 12 | 15:00 | 07:00 (+1) |
| #13 | Day 14 | 17:00 | 09:00 (+1) |
| #14 | Day 15 | 19:00 | 11:00 (+1) |
| #15 | Day 16 | 21:00 | 13:00 (+1) |
| #16 | Day 17 | 23:00 | 15:00 (+1) |
| #17 | Day 18 | 01:00 | 17:00 |
| #18 | Day 19 | 03:00 | 19:00 |
| #19 | Day 20 | 05:00 | 21:00 |
| #20 | Day 21 | 07:00 | 23:00 |
| #21 | Day 22 | 09:00 | 01:00 (+1) |
| #22 | Day 23 | 11:00 | 03:00 (+1) |
| #23 | Day 24 | 13:00 | 05:00 (+1) |
| #24 | Day 25 | 15:00 | 07:00 (+1) |
| #25 | Day 27 | 17:00 | 09:00 (+1) |
| #26 | Day 28 | 19:00 | 11:00 (+1) |
| #27 | Day 29 | 21:00 | 13:00 (+1) |
| #28 | Day 30 | 23:00 | 15:00 (+1) |
| #29 | Day 31 | 01:00 | 17:00 |
| #30 | Day 32 | 03:00 | 19:00 |
| #31 | Day 33 | 05:00 | 21:00 |
| #32 | Day 34 | 07:00 | 23:00 |
| #33 | Day 35 | 09:00 | 01:00 (+1) |
| #34 | Day 36 | 11:00 | 03:00 (+1) |
| #35 | Day 37 | 13:00 | 05:00 (+1) |
| #36 | Day 38 | 15:00 | 07:00 (+1) |
| #37 | Day 40 | 17:00 | 09:00 (+1) |
| #38 | Day 41 | 19:00 | 11:00 (+1) |
| #39 | Day 42 | 21:00 | 13:00 (+1) |
| #40 | Day 43 | 23:00 | 15:00 (+1) |
| #41 | Day 44 | 01:00 | 17:00 |
| #42 | Day 45 | 03:00 | 19:00 |
| #43 | Day 46 | 05:00 | 21:00 |
| #44 | Day 47 | 07:00 | 23:00 |
| #45 | Day 48 | 09:00 | 01:00 (+1) |
| #46 | Day 49 | 11:00 | 03:00 (+1) |
| #47 | Day 50 | 13:00 | 05:00 (+1) |
| #48 | Day 51 | 15:00 | 07:00 (+1) |
| #49 | Day 53 | 17:00 | 09:00 (+1) |
| #50 | Day 54 | 19:00 | 11:00 (+1) |
| #51 | Day 55 | 21:00 | 13:00 (+1) |
| #52 | Day 56 | 23:00 | 15:00 (+1) |
| #53 | Day 57 | 01:00 | 17:00 |
| #54 | Day 58 | 03:00 | 19:00 |
| #55 | Day 59 | 05:00 | 21:00 |
| #56 | Day 60 | 07:00 | 23:00 |
| #57 | Day 61 | 09:00 | 01:00 (+1) |
| #58 | Day 62 | 11:00 | 03:00 (+1) |
| #59 | Day 63 | 13:00 | 05:00 (+1) |
| #60 | Day 64 | 15:00 | 07:00 (+1) |
| #61 | Day 66 | 17:00 | 09:00 (+1) |
| #62 | Day 67 | 19:00 | 11:00 (+1) |
| #63 | Day 68 | 21:00 | 13:00 (+1) |
| #64 | Day 69 | 23:00 | 15:00 (+1) |
| #65 | Day 70 | 01:00 | 17:00 |
| #66 | Day 71 | 03:00 | 19:00 |
| #67 | Day 72 | 05:00 | 21:00 |
| #68 | Day 73 | 07:00 | 23:00 |
| #69 | Day 74 | 09:00 | 01:00 (+1) |
| #70 | Day 75 | 11:00 | 03:00 (+1) |
| #71 | Day 76 | 13:00 | 05:00 (+1) |
| #72 | Day 77 | 15:00 | 07:00 (+1) |
| #73 | Day 79 | 17:00 | 09:00 (+1) |
| #74 | Day 80 | 19:00 | 11:00 (+1) |
| #75 | Day 81 | 21:00 | 13:00 (+1) |
| #76 | Day 82 | 23:00 | 15:00 (+1) |
| #77 | Day 83 | 01:00 | 17:00 |
| #78 | Day 84 | 03:00 | 19:00 |
| #79 | Day 85 | 05:00 | 21:00 |
| #80 | Day 86 | 07:00 | 23:00 |
| #81 | Day 87 | 09:00 | 01:00 (+1) |
| #82 | Day 88 | 11:00 | 03:00 (+1) |
| #83 | Day 89 | 13:00 | 05:00 (+1) |
| #84 | Day 90 | 15:00 | 07:00 (+1) |
| #85 | Day 92 | 17:00 | 09:00 (+1) |
| #86 | Day 93 | 19:00 | 11:00 (+1) |
| #87 | Day 94 | 21:00 | 13:00 (+1) |
| #88 | Day 95 | 23:00 | 15:00 (+1) |
| #89 | Day 96 | 01:00 | 17:00 |
| #90 | Day 97 | 03:00 | 19:00 |
| #91 | Day 98 | 05:00 | 21:00 |
| #92 | Day 99 | 07:00 | 23:00 |
| #93 | Day 100 | 09:00 | 01:00 (+1) |
| #94 | Day 101 | 11:00 | 03:00 (+1) |
| #95 | Day 102 | 13:00 | 05:00 (+1) |
| #96 | Day 103 | 15:00 | 07:00 (+1) |
| #97 | Day 105 | 17:00 | 09:00 (+1) |
| #98 | Day 106 | 19:00 | 11:00 (+1) |
| #99 | Day 107 | 21:00 | 13:00 (+1) |
| #100 | Day 108 | 23:00 | 15:00 (+1) |
An ordinary timer cannot hold the schedule you just built. A timer repeats every 24 hours by definition. A cycle that does not add up to 24 shifts a little every calendar day, so somebody has to re-arm it at every transition, at a different hour each time. Supercycler does that on its own, and keeps the record of the transition it actually confirmed — which is the part that makes a run reproducible instead of anecdotal.
The app computes every transition, sends it to the device and writes down the one that came back confirmed. Nothing depends on the phone staying awake: the schedule lives on the server.
Shelly · Sonoff / eWeLink · Tuya · AC Infinity · Mars Hydro · Spider Farmer · VIVOSUN · TrolMaster · Home Assistant · Ecowitt · ESP32
A schedule saved into a Shelly or a Sonoff repeats every 24 hours. A 26 h cycle does not fit in it. You can force it with a one-shot timer re-armed at every transition — which is exactly the work the app takes off your hands.
The blackout. Shelly and Sonoff switch locally, so if the internet drops the pending transition still fires. That is why Supercycler prefers them and sends the timer glued to the command instead of trusting the connection to be there later.
It works, and it is how the first supercycles were run: this very table, printed, and somebody re-programming the timer. It is worth knowing, and it is worth knowing where it breaks.
The controlled trial running since 1 September 2026 compares four periods — 24, 26, 27 and 28 h — with clones paired across the arms. What lets anyone check that each room really ran its period is not a promise: it is the log of expected against confirmed transitions. That is the same log any replication needs, which is why the tooling stopped being optional.
SEE THE TRIALThis page is the project's original calculator, from when a supercycle was programmed by hand. It stays because the dial explains the idea better than a paragraph does. The execution lives in Supercycler.