##// END OF EJS Templates
start_device has been updated...
Fiorella Quino -
r249:de9b9dba93b1
parent child
Show More
@@ -1,238 +1,232
1 from django.db import models
1 from django.db import models
2 from apps.main.models import Configuration
2 from apps.main.models import Configuration
3 from django.core.validators import MinValueValidator, MaxValueValidator
3 from django.core.validators import MinValueValidator, MaxValueValidator
4
4
5 from .files import read_json_file
5 from .files import read_json_file
6 import requests
6 import requests
7 # Create your models here. validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)]
7 # Create your models here. validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)]
8
8
9 class CGSConfiguration(Configuration):
9 class CGSConfiguration(Configuration):
10
10
11 freq0 = models.PositiveIntegerField(verbose_name='Frequency 0 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
11 freq0 = models.PositiveIntegerField(verbose_name='Frequency 0 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
12 freq1 = models.PositiveIntegerField(verbose_name='Frequency 1 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
12 freq1 = models.PositiveIntegerField(verbose_name='Frequency 1 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
13 freq2 = models.PositiveIntegerField(verbose_name='Frequency 2 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
13 freq2 = models.PositiveIntegerField(verbose_name='Frequency 2 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
14 freq3 = models.PositiveIntegerField(verbose_name='Frequency 3 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
14 freq3 = models.PositiveIntegerField(verbose_name='Frequency 3 (Hz)',validators=[MaxValueValidator(450e6)], default = 60)
15
15
16 def verify_frequencies(self):
16 def verify_frequencies(self):
17
17
18 return True
18 return True
19
19
20
20
21 def update_from_file(self, fp):
21 def update_from_file(self, fp):
22
22
23 kwargs = read_json_file(fp)
23 kwargs = read_json_file(fp)
24
24
25 if not kwargs:
25 if not kwargs:
26 return False
26 return False
27
27
28 self.freq0 = kwargs['freq0']
28 self.freq0 = kwargs['freq0']
29 self.freq1 = kwargs['freq1']
29 self.freq1 = kwargs['freq1']
30 self.freq2 = kwargs['freq2']
30 self.freq2 = kwargs['freq2']
31 self.freq3 = kwargs['freq3']
31 self.freq3 = kwargs['freq3']
32
32
33 return True
33 return True
34
34
35 def parms_to_dict(self):
35 def parms_to_dict(self):
36
36
37 parameters = {}
37 parameters = {}
38
38
39 parameters['device_id'] = self.device.id
39 parameters['device_id'] = self.device.id
40 parameters['device_type'] = self.device.device_type.name
40 parameters['device_type'] = self.device.device_type.name
41
41
42 if self.freq0 == None or self.freq0 == '':
42 if self.freq0 == None or self.freq0 == '':
43 parameters['freq0'] = 0
43 parameters['freq0'] = 0
44 else:
44 else:
45 parameters['freq0'] = self.freq0
45 parameters['freq0'] = self.freq0
46
46
47 if self.freq1 == None or self.freq1 == '':
47 if self.freq1 == None or self.freq1 == '':
48 parameters['freq1'] = 0
48 parameters['freq1'] = 0
49 else:
49 else:
50 parameters['freq1'] = self.freq1
50 parameters['freq1'] = self.freq1
51
51
52 if self.freq2 == None or self.freq2 == '':
52 if self.freq2 == None or self.freq2 == '':
53 parameters['freq2'] = 0
53 parameters['freq2'] = 0
54 else:
54 else:
55 parameters['freq2'] = self.freq2
55 parameters['freq2'] = self.freq2
56
56
57 if self.freq3 == None or self.freq3 == '':
57 if self.freq3 == None or self.freq3 == '':
58 parameters['freq3'] = 0
58 parameters['freq3'] = 0
59 else:
59 else:
60 parameters['freq3'] = self.freq3
60 parameters['freq3'] = self.freq3
61
61
62 return parameters
62 return parameters
63
63
64
64
65 def dict_to_parms(self, parameters):
65 def dict_to_parms(self, parameters):
66
66
67 self.freq0 = parameters['freq0']
67 self.freq0 = parameters['freq0']
68 self.freq1 = parameters['freq1']
68 self.freq1 = parameters['freq1']
69 self.freq2 = parameters['freq2']
69 self.freq2 = parameters['freq2']
70 self.freq3 = parameters['freq3']
70 self.freq3 = parameters['freq3']
71
71
72
72
73 def status_device(self):
73 def status_device(self):
74
74
75 ip=self.device.ip_address
75 ip=self.device.ip_address
76 port=self.device.port_address
76 port=self.device.port_address
77
77
78 route = "http://" + str(ip) + ":" + str(port) + "/status/"
78 route = "http://" + str(ip) + ":" + str(port) + "/status/"
79 try:
79 try:
80 r = requests.get(route, timeout=0.7)
80 r = requests.get(route, timeout=0.7)
81 except Exception as e:
81 except Exception as e:
82 self.device.status = 0
82 self.device.status = 0
83 self.device.save()
83 self.device.save()
84 self.message = 'Could not read CGS status: ' + str(e)
84 self.message = 'Could not read CGS status: ' + str(e)
85 return False
85 return False
86
86
87 response = r.json()
87 response = r.json()
88 self.device.status = response['status']
88 self.device.status = response['status']
89 self.message = response['message']
89 self.message = response['message']
90 self.device.save()
90 self.device.save()
91
91
92 if response['components_status']==0:
92 if response['components_status']==0:
93 return False
93 return False
94
94
95 return True
95 return True
96
96
97
97
98 def start_device(self):
98 def start_device(self):
99
99
100 ip=self.device.ip_address
100 ip=self.device.ip_address
101 port=self.device.port_address
101 port=self.device.port_address
102
102
103 #---Device must be configured
104 if not self.device.status == 2:
105 self.message = 'CGS Device must be configured.'
106 return False
103 #---Frequencies from form
107 #---Frequencies from form
104 f0 = self.freq0
108 post_data = self.parms_to_dict()
105 f1 = self.freq1
109 route = "http://" + str(ip) + ":" + str(port) + "/write/"
106 f2 = self.freq2
107 f3 = self.freq3
108 post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3}
109 route = "http://" + str(ip) + ":" + str(port) + "/frequencies/"
110
110
111 try:
111 try:
112 r = requests.post(route, post_data, timeout=0.7)
112 r = requests.post(route, post_data, timeout=0.7)
113 except:
113 except Exception as e:
114 self.message = "Could not start CGS device"
114 self.message = "Could not start CGS device. "+str(e)
115 return False
115 return False
116
116
117 text = r.text
117 response = r.json()
118 text = text.split(',')
118 if response['status']==1:
119
119 self.device.status = 1
120 if len(text)>1:
120 self.device.save()
121 title = text[0]
121 self.message = response['message']
122 status = text[1]
122 return False
123 if title == "okay":
123
124 self.message = status
124 self.device.status = response['status']
125 self.device.status = 3
125 self.device.save()
126 self.device.save()
126 self.message = response['message']
127 return True
127
128 else:
128 return True
129 self.message = title + ", " + status
130 self.device.status = 1
131 self.device.save()
132 return False
133
134 return False
135
129
136
130
137 def stop_device(self):
131 def stop_device(self):
138
132
139 ip=self.device.ip_address
133 ip=self.device.ip_address
140 port=self.device.port_address
134 port=self.device.port_address
141
135
142 if self.device.status == 2: #Configured
136 if self.device.status == 2: #Configured
143 self.message = 'CGS device is already stopped.'
137 self.message = 'CGS device is already stopped.'
144 return False
138 return False
145
139
146 post_data = {"freq0":0, "freq1":0, "freq2":0, "freq3":0}
140 post_data = {"freq0":0, "freq1":0, "freq2":0, "freq3":0}
147 route = "http://" + str(ip) + ":" + str(port) + "/write/"
141 route = "http://" + str(ip) + ":" + str(port) + "/write/"
148
142
149 try:
143 try:
150 r = requests.post(route, post_data, timeout=0.7)
144 r = requests.post(route, post_data, timeout=0.7)
151 except Exception as e:
145 except Exception as e:
152 self.message = "Could not write CGS parameters. "+str(e)
146 self.message = "Could not write CGS parameters. "+str(e)
153 self.device.status = 0
147 self.device.status = 0
154 self.device.save()
148 self.device.save()
155 return False
149 return False
156
150
157 response = r.json()
151 response = r.json()
158 status = response['status']
152 status = response['status']
159 if status == 1:
153 if status == 1:
160 self.device.status = status
154 self.device.status = status
161 self.device.save()
155 self.device.save()
162 self.message = 'Could not stop CGS device.'
156 self.message = 'Could not stop CGS device.'
163 return False
157 return False
164
158
165 self.message = 'CGS device has been stopped successfully.'
159 self.message = 'CGS device has been stopped successfully.'
166 self.device.status = 2
160 self.device.status = 2
167 self.device.save()
161 self.device.save()
168
162
169 return True
163 return True
170
164
171
165
172 def read_device(self):
166 def read_device(self):
173
167
174 ip=self.device.ip_address
168 ip=self.device.ip_address
175 port=self.device.port_address
169 port=self.device.port_address
176
170
177 route = "http://" + str(ip) + ":" + str(port) + "/read/"
171 route = "http://" + str(ip) + ":" + str(port) + "/read/"
178 try:
172 try:
179 frequencies = requests.get(route,timeout=0.7)
173 frequencies = requests.get(route,timeout=0.7)
180 except:
174 except:
181 self.message = "Could not read CGS parameters from this device"
175 self.message = "Could not read CGS parameters from this device"
182 return None
176 return None
183
177
184 frequencies = frequencies.json()
178 frequencies = frequencies.json()
185 if frequencies:
179 if frequencies:
186 frequencies = frequencies.get("Frequencies")
180 frequencies = frequencies.get("Frequencies")
187 freq0 = frequencies.get("freq0")
181 freq0 = frequencies.get("freq0")
188 freq1 = frequencies.get("freq1")
182 freq1 = frequencies.get("freq1")
189 freq2 = frequencies.get("freq2")
183 freq2 = frequencies.get("freq2")
190 freq3 = frequencies.get("freq3")
184 freq3 = frequencies.get("freq3")
191
185
192 parms = {'freq0': freq0,
186 parms = {'freq0': freq0,
193 'freq1': freq1,
187 'freq1': freq1,
194 'freq2': freq2,
188 'freq2': freq2,
195 'freq3': freq3}
189 'freq3': freq3}
196
190
197 self.message = "CGS parameters have been successfully read"
191 self.message = "CGS parameters have been successfully read"
198 return parms
192 return parms
199 else:
193 else:
200 self.message = "Error reading CGS parameters"
194 self.message = "Error reading CGS parameters"
201 return None
195 return None
202
196
203
197
204 def write_device(self):
198 def write_device(self):
205
199
206 ip=self.device.ip_address
200 ip=self.device.ip_address
207 port=self.device.port_address
201 port=self.device.port_address
208
202
209 #---Frequencies from form
203 #---Frequencies from form
210 frequencies = self.parms_to_dict()
204 frequencies = self.parms_to_dict()
211 post_data = {}
205 post_data = {}
212 for data in frequencies:
206 for data in frequencies:
213 if data in ['freq0','freq1','freq2','freq3']:
207 if data in ['freq0','freq1','freq2','freq3']:
214 post_data[data] = frequencies[data]
208 post_data[data] = frequencies[data]
215
209
216 route = "http://" + str(ip) + ":" + str(port) + "/write/"
210 route = "http://" + str(ip) + ":" + str(port) + "/write/"
217
211
218 try:
212 try:
219 r = requests.post(route, post_data, timeout=0.7)
213 r = requests.post(route, post_data, timeout=0.7)
220 except:
214 except:
221 self.message = "Could not write CGS parameters"
215 self.message = "Could not write CGS parameters"
222 self.device.status = 0
216 self.device.status = 0
223 self.device.save()
217 self.device.save()
224 return False
218 return False
225
219
226 response = r.json()
220 response = r.json()
227 self.message = response['message']
221 self.message = response['message']
228 self.device.status = response['status']
222 self.device.status = response['status']
229 self.device.save()
223 self.device.save()
230
224
231 if self.device.status==1:
225 if self.device.status==1:
232 return False
226 return False
233
227
234 return True
228 return True
235
229
236
230
237 class Meta:
231 class Meta:
238 db_table = 'cgs_configurations'
232 db_table = 'cgs_configurations'
General Comments 0
You need to be logged in to leave comments. Login now