#!/usr/bin/python3
from gpiozero import LED #for breadboard
from datetime import date #get today's date
from datetime import datetime #get today's date
import lcddriver #for lcd screen
import requests #for header info
import time #for time delay
import csv #for record keeping
#register lcd driver function
display = lcddriver.lcd()
# start up time function
def uptime(url,name,gLED_num,rLED_num,bLED_num):
#check url header
response = requests.get(url)
status_code = "Status Code: " + str(response.status_code)
#define LED colors and locations
greenLED = LED(gLED_num)
redLED = LED(rLED_num)
blueLED = LED(bLED_num)
#if server responds with header 200 light up green LED and display message on LCD
if response.status_code == 200:
gettime = round(response.elapsed.total_seconds(),2)
display.lcd_display_string(name + " Speed:" + str(gettime), 1)
display.lcd_display_string(status_code, 2)
for x in range(0,5):
greenLED.on()
time.sleep(0.1)
greenLED.off()
time.sleep(0.1)
if gettime > 1:
blueLED.on()
time.sleep(0.1)
blueLED.off()
time.sleep(0.1)
#if not 200 then light up red LED and display message on LCD
else:
display.lcd_display_string(name + " is Down", 1)
display.lcd_display_string(status_code, 2)
for x in range(0,5):
redLED.on()
time.sleep(0.1)
redLED.off()
time.sleep(0.1)
#Leave on LCD do I can have time to read
time.sleep(1)
#cleanup
display.lcd_clear()
greenLED.off()
redLED.off()
blueLED.off()
# write to CSV for historical usage
now = datetime.now()
today = date.today()
getnow = now.strftime('%H:%M')
getdate = today.strftime('%m/%d/%Y')
with open("uptime_" + name + ".csv", "a") as uptime_file:
uptime_writer = csv.writer(uptime_file, delimiter=",",quotechar="'", quoting=csv.QUOTE_MINIMAL)
uptime_writer.writerow([getdate,getnow,name,response.status_code,gettime])
#debug
#print(str(getdate) + " " + str(getnow) + " " + name + " " + str(response.status_code) + " " + str(gettime))
#site1 Monitor URL,greenLED,redLED,blueLED WORKS
uptime("https://www.site1.com/","site1",18,23,17)
#site2 Monitor URL,greenLED,redLED,blueLED
uptime("https://www.site2.com/","site2",27,25,5)
#site3 Mon itor URL,greenLED,redLED,blueLED
uptime("https://www.site3.com/","site3",20,16,26)
#site4 Monitor URL,greenLED,redLED,blueLED WORKS
uptime("https://www.site4.com/","site4",21,12,24)