The first cut of the hardware design and firmware is done. The boards have been ordered and we'll see what comes of it.
The board's firmware is very paranoid about the signaling it receives. The input needs to be asserted for a full second before the power is cycled, and then it has to remain de-asserted for a full hour before a reboot can be reattempted.
The firmware is paranoid because the signaler in this case is going to be a Linux box, and in general my trust of such systems is... measured.
In any event, the two wires from the control input are ground and an arbitrary GPIO pin. If you want to reboot the router, you set the pin to an output and assert it low for 2 seconds then release it (the normal state for GPIO pins is high impedance, which for us is de-asserted).
Having done that, you must not attempt to do so for at least an hour, as any attempts in the meantime will reset the hour hold-off timer, potentially extending it into perpetuity.
So in principle, what's called for here is a cron job. That job should attempt to ping a bunch of Internet places of interest, and if any of them succeed, you're done. If all of them fail, then you hit the history eraser button.