Skip to content

Instantly share code, notes, and snippets.

@brettbeeson
Created March 1, 2021 04:39
Show Gist options
  • Save brettbeeson/b5bf93e5400ecea2cbaed392c558eee6 to your computer and use it in GitHub Desktop.
Save brettbeeson/b5bf93e5400ecea2cbaed392c558eee6 to your computer and use it in GitHub Desktop.
Flash LED depending on 'net connection. Reboot after 1 hour disconnected. PiZero only.
#!/usr/bin/env python3
#
# PiZero : flash LED depending on 'net connection. Reboot after 1 hour disconnected.
#
from subprocess import run
from time import sleep
import socket
from datetime import datetime as dt
import os
period = 60 # check every : 1 min
reboot_after = 60*60 # reboot if disconnected for: 1 hr
def led_on():
with open("/sys/class/leds/led0//brightness", "w") as f:
print("1", file=f)
def led_off():
with open("/sys/class/leds/led0//brightness", "w") as f:
print("0", file=f)
def is_connected():
try:
# connect to the host -- tells us if the host is actually reachable
socket.create_connection(("1.1.1.1", 53))
return True
except OSError:
pass
return False
disconnected_period = 0
try:
while True:
if is_connected():
disconnected_period = 0
for t in range(10 * period):
# .1s total
led_on()
sleep(.09)
led_off()
sleep(.01)
else:
for t in range(1 * period):
# 1s total
led_on()
sleep(.1)
led_off()
sleep(.9)
disconnected_period += period
print(f"{disconnected_period} {period}")
if disconnected_period > reboot_after:
print(f"No internet. Rebooting at {dt.now()}")
os.system('reboot')
finally:
led_on()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment