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