The best part of having a smart home is the ability to monitor the house remotely. Especially, if you have a little anxiety, like me. ("Did I lock the door?", "What about the windows?", etc. These questions are easy to answer.)
This comes with a requirement though, you need a stable internet connection.
I have a 250 Mbit/s internet at home, which is quite okay for personal use. However, the modem provided by Ziggo is not the best, it goes down from time to time and needs a manual restart.
Imagine you're on your summer holiday, a manual reboot is not really an option. When I try to think a solution for that, the first thing that came into my mind that I can use a smart plug for the modem, and activate/deactivate it if the internet link is down.
I have a couple of smart plugs (IKEA, Heiman, Hue, etc.) that I can use with my Zigbee gateway, Conbee. Since they're controlled in Zigbee protocol, it can be controlled on localhost. I have also a couple of Raspberry Pi's hanging around so I can use one of them to run a Python script which:
- checks if the internet is down
- If it's down, deactivate the plug, wait 60 seconds, activate again.
Using a couple of extra libraries, it was quite easy to implement something like that. Here, is the prototype implementation that I've been experimenting at the moment.
This script can be triggered via a crontab entry in a periodic interval. (I don't want a long-running script to keep things simple and stateless.) I execute it in every hour via CRON.
You have any backup plans for cases like that in your home? "High-availability" on Smart homes should be a thing in the near future. :)