My least favorite engineering problem is the "dusty router" concern.
At some point, you may want to version your apis in a breaking way. You'll spend weeks sketching out a migration plan for all active routers in the field, sell it internally , get a thumbs up, then try to prep customer support. Customer support might tell you that you still need to support some devices which were unplugged on a firmware released 6 months ago. Oops.
When building deployed firmware, you always need to include a reliable fallback that allows you to bump the firmware on that device, even when it can't talk to anything else wirelessly.
At some point, you may want to version your apis in a breaking way. You'll spend weeks sketching out a migration plan for all active routers in the field, sell it internally , get a thumbs up, then try to prep customer support. Customer support might tell you that you still need to support some devices which were unplugged on a firmware released 6 months ago. Oops.
When building deployed firmware, you always need to include a reliable fallback that allows you to bump the firmware on that device, even when it can't talk to anything else wirelessly.