forked from macrocosme/spaceshark
/
spaceshark.py
101 lines (80 loc) · 3.57 KB
/
spaceshark.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
from flask import Flask, request, render_template, jsonify
from poynter_module import get_altaz, get_daltdaz
import requests
from os import system, fork, kill
import sched, time
from subprocess import Popen
import random
import sys
s = sched.scheduler(time.time, time.sleep)
API_KEY = 'AIzaSyCY8AUysBMDz0d20GuIUaMbyJrr6pL-RYQ'
global PROCESSES
PROCESSES = []
DELAY = 60.0
rand = random.random()
app = Flask(__name__)
class Objects:
objects = ["Sun","Mercury","Venus","Moon","Mars","Jupiter","Saturn","Uranus","Neptune","Pluto"]
processes = []
@app.route("/", methods=['GET', 'POST'])
def hello():
return render_template('index.html', objects=Objects.objects)
@app.route("/_point")
def point():
try:
print "allo."
print request.args.get('temp')
if request.args.get('temp') == 'List':
object = request.args.get('object_list')
else:
object = request.args.get('object_textbox')
device_id = request.args.get('device_id')
access_token = request.args.get('access_token')
address = request.args.get('address')
# Retrieve address from google map
response_get = requests.get('https://maps.googleapis.com/maps/api/geocode/json',
params={'address': address, 'key': API_KEY})
location = response_get.json()['results'][0]['geometry']['location']
# Convert coordinates (lng, lat) --> (alt, az)
alt, az = get_altaz(object, location['lng'], location['lat'])
# Send command to clouddy hardware
system('curl https://api.particle.io/v1/devices/'+str(device_id)+'/point_alt_az ' \
'-d access_token='+str(access_token)+' ' \
'-d "args='+str(alt)+','+str(az)+'"')
# Convert coordinates (lng, lat) --> (alt, az)
d_alt, d_az = get_daltdaz(object, location['lng'], location['lat'])
# d_alt, d_az = d_alt*1000, d_az*1000
# print(d_alt, d_az)
if len(PROCESSES) > 0:
for process in PROCESSES:
print("process:", process)
try:
kill(process, signal.SIGKILL)
print "after"
except OSError, e:
print "error: ", e.errno
p = Popen(['python', 'spaceshark.py', str(device_id), str(access_token), str(d_alt), str(d_az), str(DELAY)])
PROCESSES.append(p.pid)
except Exception as e:
print(e)
return jsonify(response="ok")
def delta_update(device_id, access_token, d_alt, d_az, delay):
print('delta_update...')
#print(rand)
# Send command to clouddy hardware for alt
system('curl https://api.particle.io/v1/devices/'+str(device_id)+'/track_alt ' \
'-d access_token='+str(access_token)+' ' \
'-d "args='+str(d_alt)+'"')
# Send command to clouddy hardware for az
system('curl https://api.particle.io/v1/devices/'+str(device_id)+'/track_az ' \
'-d access_token='+str(access_token)+' ' \
'-d "args='+str(d_az)+'"')
time.sleep(float(delay))
delta_update(device_id, access_token, d_alt, d_az, delay)
#sc.enter(delay, 1, delta_update, (sc, device_id, access_token, d_alt, d_az,))
if __name__ == "__main__":
if len(sys.argv) == 1:
app.run()
else:
print len(sys.argv)
delta_update(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5])