Created
March 1, 2021 04:39
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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