models.py
179 lines
| 4.7 KiB
| text/x-python
|
PythonLexer
|
r0 | from django.db import models | ||
|
r6 | from apps.main.models import Configuration | ||
|
r4 | from django.core.validators import MinValueValidator, MaxValueValidator | ||
|
r172 | from .files import read_json_file | ||
|
r43 | # Create your models here. validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)] | ||
|
r4 | |||
|
r6 | class CGSConfiguration(Configuration): | ||
|
r172 | |||
|
r98 | freq0 = models.PositiveIntegerField(verbose_name='Frequency 0',validators=[MaxValueValidator(450e6)], default = 60) | ||
freq1 = models.PositiveIntegerField(verbose_name='Frequency 1',validators=[MaxValueValidator(450e6)], default = 60) | ||||
freq2 = models.PositiveIntegerField(verbose_name='Frequency 2',validators=[MaxValueValidator(450e6)], default = 60) | ||||
freq3 = models.PositiveIntegerField(verbose_name='Frequency 3',validators=[MaxValueValidator(450e6)], default = 60) | ||||
|
r172 | |||
|
r31 | def verify_frequencies(self): | ||
|
r172 | |||
|
r31 | return True | ||
|
r172 | |||
|
r42 | def update_from_file(self, fp): | ||
|
r172 | |||
|
r42 | kwargs = read_json_file(fp) | ||
|
r172 | |||
|
r42 | if not kwargs: | ||
return False | ||||
|
r172 | |||
|
r42 | self.freq0 = kwargs['freq0'] | ||
self.freq1 = kwargs['freq1'] | ||||
self.freq2 = kwargs['freq2'] | ||||
self.freq3 = kwargs['freq3'] | ||||
|
r172 | |||
|
r42 | return True | ||
|
r172 | |||
|
r58 | def parms_to_dict(self): | ||
|
r172 | |||
|
r58 | parameters = {} | ||
|
r172 | |||
|
r108 | parameters['device_id'] = self.device.id | ||
|
r172 | |||
|
r58 | if self.freq0 == None or self.freq0 == '': | ||
parameters['freq0'] = 0 | ||||
else: | ||||
parameters['freq0'] = self.freq0 | ||||
|
r172 | |||
|
r58 | if self.freq1 == None or self.freq1 == '': | ||
parameters['freq1'] = 0 | ||||
else: | ||||
parameters['freq1'] = self.freq1 | ||||
|
r172 | |||
|
r58 | if self.freq2 == None or self.freq2 == '': | ||
parameters['freq2'] = 0 | ||||
else: | ||||
|
r172 | parameters['freq2'] = self.freq2 | ||
|
r58 | if self.freq3 == None or self.freq3 == '': | ||
parameters['freq3'] = 0 | ||||
else: | ||||
parameters['freq3'] = self.freq3 | ||||
|
r172 | |||
|
r58 | return parameters | ||
|
r172 | |||
|
r108 | def dict_to_parms(self, parameters): | ||
|
r172 | |||
|
r108 | self.freq0 = parameters['freq0'] | ||
self.freq1 = parameters['freq1'] | ||||
self.freq2 = parameters['freq2'] | ||||
self.freq3 = parameters['freq3'] | ||||
|
r172 | |||
|
r59 | def status_device(self): | ||
|
r172 | |||
|
r59 | import requests | ||
|
r172 | |||
|
r59 | ip=self.device.ip_address | ||
port=self.device.port_address | ||||
|
r172 | |||
|
r59 | route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548" | ||
try: | ||||
|
r90 | r = requests.get(route,timeout=0.5) | ||
|
r59 | except: | ||
self.device.status = 0 | ||||
self.device.save() | ||||
return self.device.status | ||||
|
r172 | |||
|
r59 | response = str(r.text) | ||
response = response.split(";") | ||||
icon = response[0] | ||||
|
r172 | status = response[-1] | ||
#print(icon, status) | ||||
|
r59 | #"icon" could be: "alert" or "okay" | ||
if "alert" in icon: | ||||
if "Starting Up" in status: #No Esta conectado | ||||
self.device.status = 0 | ||||
else: | ||||
self.device.status = 1 | ||||
elif "okay" in icon: | ||||
self.device.status = 3 | ||||
else: | ||||
self.device.status = 1 | ||||
|
r172 | |||
|
r59 | self.message = status | ||
self.device.save() | ||||
|
r172 | |||
|
r59 | return self.device.status | ||
|
r172 | |||
|
r59 | def read_device(self): | ||
|
r172 | |||
|
r59 | import requests | ||
|
r172 | |||
|
r59 | ip=self.device.ip_address | ||
port=self.device.port_address | ||||
|
r172 | |||
|
r59 | route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" | ||
try: | ||||
|
r90 | frequencies = requests.get(route,timeout=0.5) | ||
|
r172 | |||
|
r59 | except: | ||
self.message = "Could not read CGS parameters from this device" | ||||
return None | ||||
|
r172 | |||
|
r59 | frequencies = frequencies.json() | ||
frequencies = frequencies.get("Frecuencias") | ||||
f0 = frequencies.get("f0") | ||||
f1 = frequencies.get("f1") | ||||
f2 = frequencies.get("f2") | ||||
f3 = frequencies.get("f3") | ||||
|
r172 | |||
|
r59 | parms = {'freq0': f0, | ||
'freq1': f1, | ||||
'freq2': f2, | ||||
'freq3': f3} | ||||
|
r172 | |||
|
r59 | self.message = "" | ||
return parms | ||||
|
r172 | |||
|
r59 | def write_device(self): | ||
|
r172 | |||
|
r59 | import requests | ||
|
r172 | |||
|
r59 | ip=self.device.ip_address | ||
port=self.device.port_address | ||||
|
r172 | |||
|
r59 | #---Frequencies from form | ||
f0 = self.freq0 | ||||
f1 = self.freq1 | ||||
f2 = self.freq2 | ||||
f3 = self.freq3 | ||||
post_data = {"f0":f0, "f1":f1, "f2":f2, "f3":f3} | ||||
route = "http://" + str(ip) + ":" + str(port) + "/frequencies/" | ||||
|
r172 | |||
try: | ||||
|
r90 | r = requests.post(route, post_data, timeout=0.5) | ||
|
r59 | except: | ||
self.message = "Could not write CGS parameters" | ||||
return None | ||||
|
r172 | |||
|
r59 | text = r.text | ||
text = text.split(',') | ||||
|
r172 | |||
|
r59 | if len(text)>1: | ||
title = text[0] | ||||
status = text[1] | ||||
if title == "okay": | ||||
self.message = status | ||||
return 3 | ||||
else: | ||||
self.message = title + ", " + status | ||||
return 1 | ||||
|
r172 | |||
|
r59 | return 1 | ||
|
r172 | |||
|
r59 | |||
|
r6 | class Meta: | ||
db_table = 'cgs_configurations' | ||||