#!/user/bin/env python
import os
import smbus
import time
import sys
import socket
import subprocess
import lcd1602 as LCD
def getLocalIP():
ip = None
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('114.114.114.114', 0))
ip = s.getsockname()[0]
except:
name = socket.gethostname()
ip = socket.gethostbyname(name)
if ip.startswith("127."):
cmd = '''/sbin/ifconfig | grep "inet " | cut -d: -f2 | awk '{print $1}' | grep -v "^127."'''
a = subprocess.Popen(
cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
a.wait()
out = a.communicate()
ip = out[0].strip().split("\n")
if len(ip) == 1 and ip[0] == "" or len(ip) == 0:
return False
ip = "over".join(ip)
return ip
# Return CPU temperature as a character string
def getCPUtemperature():
res = os.popen('vcgencmd measure_temp').readline()
return(res.replace("temp=","").replace("'C\n",""))
# Return RAM information (unit=kb) in a list
# Index 0: total RAM
# Index 1: used RAM
# Index 2: free RAM
def getRAMinfo():
p = os.popen('free')
i = 0
while 1:
i = i + 1
line = p.readline()
if i==2:
return(line.split()[1:4])
# Return % of CPU used by user as a character string
def getCPUuse():
return(str(os.popen("top -n1 | awk '/Cpu\(s\):/ {print $2}'").readline().strip()))
# Return information about disk space as a list (unit included)
# Index 0: total disk space
# Index 1: used disk space
# Index 2: remaining disk space
# Index 3: percentage of disk used
def getDiskSpace():
p = os.popen("df -h /")
i = 0
while 1:
i = i +1
line = p.readline()
if i==2:
return(line.split()[1:5])
if __name__ == '__main__':
LCD.init_lcd()
time.sleep(1)
LCD.print_lcd(2, 0, 'Raspberry Pi')
for x in xrange(1, 4):
LCD.turn_light(0)
LCD.print_lcd(4, 1, 'LIGHT OFF')
time.sleep(0.5)
LCD.turn_light(1)
LCD.print_lcd(4, 1, 'LIGHT ON ')
time.sleep(0.5)
LCD.turn_light(1)
while True:
now = time.strftime('%m/%d %H:%M:%S', time.localtime(time.time()))
ip=getLocalIP()
# CPU informatiom
CPU_temp = getCPUtemperature()
CPU_usage = getCPUuse()
# RAM information
# Output is in kb, here I convert it in Mb for readability
RAM_stats = getRAMinfo()
RAM_total = round(int(RAM_stats[0]) / 1000,1)
RAM_used = round(int(RAM_stats[1]) / 1000,1)
RAM_free = round(int(RAM_stats[2]) / 1000,1)
# Disk information
DISK_stats = getDiskSpace()
DISK_total = DISK_stats[0]
DISK_used = DISK_stats[1]
DISK_perc = DISK_stats[3]
LCD.clear_lcd()
LCD.print_lcd(0, 0, now)
LCD.print_lcd(0, 1, ip)
time.sleep(2)
LCD.clear_lcd()
LCD.print_lcd(0, 0, 'CPU Temperature='+CPU_temp)
LCD.print_lcd(0, 1, 'CPU Use='+CPU_usage)
time.sleep(2)
LCD.clear_lcd()
LCD.print_lcd(0, 0, 'RAM Total='+str(RAM_total)+'MB')
LCD.print_lcd(0, 1, 'RAM Used='+str(RAM_used)+'MB')
time.sleep(2)
LCD.clear_lcd()
LCD.print_lcd(0, 0, 'RAM Free='+str(RAM_free)+'MB')
LCD.print_lcd(0, 1, 'DISK Total Space='+str(DISK_total)+'B')
time.sleep(2)
LCD.clear_lcd()
LCD.print_lcd(0, 0, 'DISK Used Space='+str(DISK_used)+'B')
LCD.print_lcd(0, 1, 'DISK Used Percentage='+str(DISK_perc))
time.sleep(2)