/
monitor.py
157 lines (105 loc) · 3.06 KB
/
monitor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/usr/bin/env python
print("""
This is the CV Monitor with RaspiCam.
Press CTRL+C to exit.
""")
import dot3k.lcd as lcd
import dot3k.backlight as backlight
import time, datetime, copy, math, psutil
import dot3k.joystick as j
import picamera
import os
import subprocess
screen_on = True;
image_num = 0;
picture_waiting = False;
reset_initiated = False;
@j.on(j.UP)
def handle_up(pin):
global screen_on
global reset_initiated
print("Up pressed!")
#print(screen_on)
if screen_on:
backlight.rgb(0, 0, 0)
screen_on = False
else:
backlight.rgb(200, 200, 200)
screen_on = True
reset_initiated = False
@j.on(j.BUTTON)
def handle_button(pin):
print("Button pressed!")
global image_num
global reset_initiated
global picture_waiting
if picture_waiting!=True:
picture_waiting = True
image_num = image_num + 1
camera.capture('image' + format(image_num,'03') + '.jpg')
print 'image file: image' + format(image_num,'03') + '.jpg'
lcd.set_cursor_position(13, 2)
lcd.write(format(image_num,'03'))
reset_initiated = False
picture_waiting = False
else:
print 'waiting on image to return'
@j.on(j.DOWN)
def handle_down(pin):
print("Down pressed!")
global image_num
global reset_initiated
if reset_initiated == False:
reset_initiated = True
print("first time")
else:
lcd.set_cursor_position(0, 0)
lcd.write("SHUTTING DOWN ")
os.system("sudo shutdown now");
@j.on(j.LEFT)
def handle_left(pin):
print("LEFT pressed!")
@j.on(j.RIGHT)
def handle_right(pin):
print("RIGHT pressed!")
def get_ip_addr():
ipaddr_command = 'ip address list | grep inet | grep -v 127.0.0 | cut -d " " -f 6 | cut -d "/" -f 1'
p = subprocess.Popen(ipaddr_command, shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE, stdin=subprocess.PIPE)
return p.stdout.read()
ip = get_ip_addr()
print "ssh to ip: " + ip
lcd.set_cursor_position(0, 0)
lcd.write("IP:" + ip)
lcd.set_cursor_position(0, 1)
lcd.write("CPU: ")
lcd.set_cursor_position(13, 1)
lcd.write("IMG")
cpu_sample_count = 200
cpu_samples = [0] * cpu_sample_count
hue = 0.0
lcd.set_contrast(52)
backlight.rgb(200, 200, 200)
camera = picamera.PiCamera();
while True:
cpu_samples.append(psutil.cpu_percent() / 100.0)
cpu_samples.pop(0)
cpu_avg = sum(cpu_samples) / cpu_sample_count
#turns the white led array to reflect the CPU load
backlight.set_graph(cpu_avg)
lcd.set_cursor_position(0, 0)
lcd.write("IP:" + ip)
lcd.set_cursor_position(0, 1)
lcd.write("CPU: ")
lcd.set_cursor_position(5, 1)
lcd.write(str(cpu_avg*100))
#display 3 lines on the LCD
lcd.set_cursor_position(5, 1)
lcd.write(str(cpu_avg*100))
lcd.set_cursor_position(10, 1)
lcd.write("% ")
lcd.set_cursor_position(13, 2)
lcd.write(format(image_num,'03'))
lcd.set_cursor_position(0, 2)
t = datetime.datetime.now().strftime("%H:%M:%S")
lcd.write(t)
time.sleep(0.05)