Remote Cable Modem Reset Plug

I have no experience with the Zooz plug auto-on, but I do have a ZEN16 MultiRelay that has the same function. Yes, it works, I tested it, but decided to go a Rule Machine route because I needed more complex control. So, it would seem that Zooz auto-on would work for your cable modem power cycle, IF you can get to it from the WAN through VPN.

That said, though, there seems to be an oversight in your setup. If, as you say, the real weakness is your cable modem, which needs to be power cycled to fix it, don’t you need some sort of a deadman switch on the plug/switch for the cable modem, such that, if you don’t get an endpoint ping from the WAN for, say, 1/2 hour (or whatever), or if your hub can’t reach an internet endpoint for, say, 1/2 hour (probably the better way to set it up), then you assume that the cable modem has malfunctioned and needs to be power cycled.

1 Like

They make (or did) a device that if it lost ping to the internet, would reboot the modem. That is probably more failsafe, but more expensive than doing it the way you outline here.

1 Like

I have a ResetPlug setup on my cable modem. When the internet goes out for more than 5 minutes it reboots the modem. It actually works pretty well as I see it kick in every now and then when my provider does some kind of change that requires the modem to be rebooted while I'm sleeping.

The basic features is free but then have some extra cloud features that you subscribe to that may be worth it.


I have a node-red sequence that restarts my cable modem (by cycling a zigbee plug) if pings to my ISP's gateway fail for 5 minutes.


Thanks for the suggestions, and appreciate the notes on a 'reboot on loss of internet.' I checked the Reset Plug, it doesn't appear to be available. While I can pull up the website, I'm not able to select any items or click on any links. I checked Amazon and there are a couple of similar plugs (Keep Connect and WiFi Restarter) with mixed reviews.

In my case I haven't had a problem with the modem dropping internet connectivity, only that I lose access to the admin web interface, however I see the benefit of a reset device. I'll probably consider some combination of both options. I see the paid version of the ResetPlug offers both auto and manual reset which would work. Also

I saw the comment on the ZEN16. I have a ZEN16 but haven't used it yet. When I have a chance to test the Zooz double-plug I'll provide an update.

1 Like

you could use something like this to trigger a smart plug to turn off then turn back on like 10 seconds later


Tasmota plug + Monit.

1 Like

i have a separate att access pt at each house with its own wifi (extra 20 per month if on family plan)
and then a kasa/tplink wifi plug on it that i can remotely reboot the main cable modem/switches.

on the att access pt i have another kasa plug this time on the main cable wifi router so i can reboot that as well.

they are one of the few plugs that remember last state for a power outage.. in addition i have schedules on each that will turn on every few hours, just in case they somehow get turned off.

1 Like

The Zooz double-plug looks very promising. I enabled the auto-turn on and set the turn-on timer to 1 min (the minimum timer setting) and approx 1 minute later the plug turned on. Each time I turned it off, it came back on without any external polling or prompting. As an additional bonus, both sides can be set / controlled independently for auto turn on (or auto-off). Also as stated, the draw back is you need to turn it off manually, and need either auto code or internet access to Hubitat to first turn it off. Working that detail (below).

A method to ping/check internet access is required for a full backup solution. The various wifi reset plugs will do this completely independent of a network connection or any RM/HE app, I'm also intrigued by @bptworld's Web Pinger code @dadarkgtprince referenced appears very promising, I will probably try that option.

@kahn-hubitat - agree a separate access point provides the best backup, Even better if you have two separate service providers. Most of the plugs I've seen will remember last state, and most also have an auto-off feature which is normally disabled. The Zooz double-plug was one of the only ones I've seen that included auto-on. I have a monoprice single plug with USB similar to the Zooz single plug, but that does not include the auto-on feature.

I haven't settled on a wifi reset plug, but if I order and try any I'll provide results here. Appreciate all the info!

Do you have a RPi or any other always-on computer with a ping utility on your network? You can ping using that, and then MakerAPI end-point(s) to turn off/on the plugs of your choice.

any plug zooz or other on your hub does not solve the problem if your main internet is down or needs to be rebooted and your house is empty.. that is why i have wifi plugs on a separate internet connection..

1 Like

No always on computer - the main remote location I'm currently working is a rental home going through renovation. The network is just the cable modem, HE, a FireWalla VPN box, a couple of Ring cameras and the z-wave network switches/locks. This setup allows me to monitor contractor access to the property while they are doing the work, we're about 2 hrs away.

The issue I was having is the VPN box and HE kept changing IPs (even though I set reserved IPs) which required me to reset my port forwarding to get into the network. The cable modem firmware doesn't seem to be the most stable (Motorola MG7540 dual band 16x4 AC WiFi router). I just have 25MB basic internet service which is sufficient for camera streaming and monitoring the property. The modem is fine for the most part, except the DHCP reserved IP doesn't seem to be setting the same reserve IP assignment, and the web interface locks up. Hubitat's latest network static IP firmware has been a great addition! Resetting the modem allows me to get back into the admin setup.

The modem has provided reliable internet, so web pinging hasn't been a real issue. I would resort to either a wifi reset plug (which has built-in pinging to a DNS address or address of your choice) or the Web Pinger monitor app.

Not familiar with the MakerAPI end-point reference.

My other properties have RPi VPN boxes running WireGuard VPN. Cheaper than the FireWalla solution with a bit more setup. All detailed in the VPN forum.

newer firmware allows you to set static IP :slight_smile:

1 Like

I'm just jumping in because I came to the forum looking for this exact thing. Unifi makes an outlet that reboots your modem/router if it detects the internet is out (normally my cable internet is fixed by a simple power cycle) but that looks like a rabbit hole. I would rather do it with the Zigbee outlet I have sitting on my desk and Hubitat.

there's no manual control, and depending on how long it takes your modem to boot back up, the outlet could re-poll and restart again. i saw a couple stories on their forums when it first came out and i stayed clear of the device since then. not sure if they have fixed it since then, but i would not recommend it

Oh, I don't want it. There is also conflicting info on if you need a Dream Machine or just a controller. I want to do something with Hubitat.

Tracking - a great addition! my RPi VPNs are the same, I can set those at will. Firewalla VPN is designed to be too much plug and play, but pulling up the admin page on my modem, with remote access enabled I could reset the port forwarding if necessary.

I would check out the web pinger app noted above, it looks like what you are looking for. I intend to, just haven't had time yet.

I checked out the web pinger app by @bptworld . Works by linking the app to a real or virtual switch, many options to include a switch for manually checking, linking to a switch to disable the app, and may be set to switch on or switch off a device, or both may be used with separate devices. Polling periodicity and revisit time (before reporting) may be set within the app. Child apps are created for each individual website you want to poll or each device you want to control. Polling must be done through a web address, IP based local network polling did not work in my case.

I also checked out two device drivers by @jwetzel1492.
joelwetzel (Joel Wetzel) · GitHub

Joel has two device drivers, one for HTTP web requests, the 2nd is IP based and listed as a iPhone presence sensor. Both these devices are set to poll 1 time per minute. I created a fork which uses the same code and adds options to choose a desired number of polling events per hour. I haven't fully tested the app for all types of local IP devices, however it worked fine with test polling of the HE hub. It did not work for polling google's DNS IP

Virtual devices created with these device drivers generate events each time the web or IP address is sensed as present or not present. Times can be set for a minimum number of minutes before reporting a loss of internet, or in the case of my fork, minimum number of tries.

Either of these methods will work fine for testing internet connectivity and controlling a plug or device to reset a modem / access point. I'm considering the local IP polling for more focused device checking and reset options within the local network.

With the addition of PING in RM 5.1 (under, I successfully built a set of rules which checks my internet connection on a periodic basis, and if down, cycles an AEOTEC smart switch 7 OFF. I mention the switch, only because that particular switch has an Auto-On setting which you can set a timer (1 minute is the shortest) to automatically cycle the switch ON when turned off. This makes it a very effective reset option.

I broke the rule into 4 separate rules, primarily for ease of development and testing. I also have several virtual switches and strings (with connectors) which allow you to both test the rule actions, and to manually trigger portions of the rule separately. I've detailed everything in the section below for anyone interested.


Hub Variables

CronPingRate - a String to set a variable Period trigger (minutes) using Cron. Added in .140, still not fully implemented and requires a little extra code to pick up when the string is changed. Sample shows a Period of 1 minute, I start with 10 or 15 when the network is up, and go to 1 when it is down.

DownRate - A number with connector to allow you to change the Network Test rate (Cron) when the network is down. I use 1 (1 minute) by default.

UpRate - A number with connector to change the Network Test rate (Cron) when the network is up. I use 15 minutes by default.

InternetTest; ModemTest - strings with connectors to set IPs for Ping test locations. This just allows you to easily change the Ping IP from a dashboard vice going into the RM code itself. The routines ping both an external internet IP, and an internal Modem IP (explained in the Network Test code).

PingLoss - a number to capture the %value% result of the Ping.

PingRate - a number to set the current testing frequency - the starting point to change the CronPingRate.

PingText - a text to capture the %text% result of the Ping.

Virtual Switches. The following virtual switches are used:

Auto Reset - Used as a predicate to suspend the rules when auto-action is not desired.

Cable Modem Reset - Used as a manual trigger to reset the modem (cycles the power plug).

CronReset - Virtual switch with 2 sec auto-on to reset the Cron routine when PingRate and CronPingRate (Cron Period) are changed. Used as a work-around, explained further in Cron Update / Cron Trigger routines.

Internet Down / Modem Down - Two virtual switches to indicate the respective Pings was unsuccessful and trigger the reset routine.

Internet Ping - Virtual switch with 1 sec auto-off to trigger the Network Test routine. Used both manually, and by the Cron Trigger routine.

Network Down Simulator - simulates a loss of Internet as an added conditional in the Network Test routine, also disables the Cable Modem Reset routine through a predicate condition to avoid power cycling the modem. Used for testing.

Cron Update
Captures a change in rate (UpRate, DownRate, or PingRate). Applies the change to PingRate if applicable, updates the Cron String CronPingRate, then triggers the CronReset switch to restart Cron Trigger with the new rate (period).

Cron Trigger

The primary timer routine using a Cron period timer. This triggers Network Test through the virtual switch Internet Ping. The Test Trigger is just another virtual switch I used in testing (500ms auto off) and just haven't removed.

The CronReset Predicate resets the Cron timer when the Cron String is updated through a virtual switch with 2 second auto-off. This is a current work-around as updates to the Cron String otherwise are not captured by the timer.

Network Test

Primary Network Test rule:

PREDICATE: Auto Reset is a virtual switch which controls all the Network Test / Reset apps.

TRIGGER: Triggered by a virtual switch INTERNET PING with a 1 sec auto-off. This allows the routine to easily be triggered manually or by other apps.


Two separate tests are included - an Internet Test (currently using DNS lookup IP address), and an internet network MODEM test using the Modem IP. While a single Internet test would be sufficient, I've had issues where my particular modem HTML admin script was not responding, even though the internet connection was working fine. Therefore this test routine checks both.

Both checks are similar:

PING the address using a string variable, the variable just allows me to set a different IP address without changing the app itself.

Capture the %text% and %value% responses in Hub Variables and log them. I noticed that the responses weren't logged otherwise and I wasn't sure if the Ping was initially working. You can skip the hub variable and just log %text% %value% directly, added when I was building the routines and didn't end up using them anywhere else.

I've been getting PingLoss responses (%value% of 0 or 100). 3 pings, either all go through (0) or none (100).

If 100% loss, then turn ON INTERNET DOWN virtual switch which triggers the network reset routines. Also set PingRate to DownRate which is increased testing (set to every minute currently) when the network is down until it comes back up. Also sends a notification to my phone which understandably will not get through with the network down.

ALSO a second conditional virtual switch 'Network Down Simulator' also triggers the routine and allows me to test the routines remotely without taking down the network.

ELSE - if InternetDown was ON, meaning the network just came back up, then notify my phone the network was restored, which will (should) happen. Reset Virtual Switch InternetDown to OFF.

The ModemTest Ping actions work the same, except I only added the simulator switch on the InternetTest routine.

Finally, If both Internet Down and Modem Down virtual switches are off, reset the PingRate to the UpRate (less frequent polling when network is up).

This is placed at the end separate from the two test routines to otherwise avoid possible looping. If you opt for only a single test routine, then you can place it with the ELSE actions.

Cable Modem Reset

Main reset routine.

Cable Modem is a z-wave switch which has an 'auto-on' setting after 1 minute (a built-in switch setting). After you turn it off, it will automatically turn back on after 1 minute, which removes a possible error of lost z-wave transmission, hub is also down/etc. This is the plug that power-cycles the modem.

Alternatively you can build a separate rule that is triggered on Plug Off and turns it back on after a suitable delay.

PREDICATE CONDITIONS: Auto Reset is a virtual switch that allows me to turn all associated Network Test / Reset rules on or off. Network Down Simulator is another virtual switch that simulates a downed network that I used to test the Cron routines. This disables this routine, which actually power cycles the plug, to keep the network up during testing. It is also used in the Network Test routine as a separate conditional. This was especially important since these routines were built for a remote location.

TRIGGERS: Main trigger is virtual switch CABLE MODEM RESET. Also triggered by either INTERNET DOWN (ID) or MODEM DOWN (MD) virtual switches. The only difference between ID and MD is that ID pings Googles DNS lookup, MD pings the local cable modem IP. Both are described in more detail in NETWORK TEST.

The routine turns off the modem plug, then waits for switches 'Modem Down' and 'Internet Down' to turn off, which indicates the network is back up, and finally resets the Cable Modem Reset switch.


This shows the various switches/connectors in a dashboard which brings most together. A couple other switches are included for my VPN (FireWalla) and a presence detector which I used previously but wasn't working as reliably.


I found that during a reset with no IP address, PING returns transmitted 0, received 0 with a loss of 0 which equated to the network being up in my routines. Additionally, checking both external and internal networks created a partial loop which resulted in 3 separate resets before the network came back up. I made some adjustments to correct both these conditions.

I also modified my NETWORK DOWN SIMULATOR switch so that it DOES reset the modem (I removed the predicate from the Cable Modem Reset routine), but it automatically turns off after the first reset to also simulate the network coming back up. This allows me to actually test the routine by taking down the network and going through the modem reboot routine.

Details here.

NETWORK TEST Changes in Bold Italics with additional remarks in [ ].
Ping %InternetTest%
Set PingLoss to %value% as integer
Set PingText to '%text%'
Log: 'Internet %PingLoss% %PingText%'
IF (Variable PingLoss = 100 OR
Variable PingText contains 'Transmitted: 0'
Network Down Simulator is on) THEN
IF (Network Down Simulator is on) Off: Network Down Simulator
IF (Internet Down is off) Notify Dave’s iPhone: '%date% %time% Everett Dr. Internet is down.'
[moved the notification above the switch and added the conditional to prevent repeat notifications each time through the test.]

On: Internet Down.
Set PingRate to DownRate
IF (Internet Down is on) Notify Dave’s iPhone: '%date% %time% Everett Dr. Internet was reset.'
Off: Internet Down
Ping %ModemTest%
Set PingLoss to %value% as integer
Set PingText to '%text%'
Log: 'Modem %PingLoss% %PingText%'
IF (( Variable PingLoss = 100 OR
Variable PingText contains 'Transmitted: 0'
Modem Down, Internet Down all off) THEN
[added conditional to only take action on internal network if external network is up.]

On: Modem Down
Set PingRate to DownRate
Notify Dave’s iPhone: '%date% %time% Everett Dr. Cable Modem is unreachable.'
IF (Modem Down is on) Notify Dave’s iPhone: '%date% %time% Everett Dr. Modem was reset.'
Off: Modem Down
IF (Modem Down, Internet Down all off) Set PingRate to UpRate[/details]


Removed the trigger to run on a change in ChronPingRate which was generating an unnecessary additional test cycle each time the network went up or down.

Cable Modem Reset
I removed the Network Down Simulator switch OFF predicate which prevented the reset routine from running during a test cycle.