|
|
from django.db import models
|
|
|
from apps.main.models import Configuration
|
|
|
from django.core.validators import MinValueValidator, MaxValueValidator
|
|
|
|
|
|
from .files import read_json_file
|
|
|
# Create your models here. validators=[MinValueValidator(62.5e6), MaxValueValidator(450e6)]
|
|
|
|
|
|
class CGSConfiguration(Configuration):
|
|
|
|
|
|
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)
|
|
|
|
|
|
def verify_frequencies(self):
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
def update_from_file(self, fp):
|
|
|
|
|
|
kwargs = read_json_file(fp)
|
|
|
|
|
|
if not kwargs:
|
|
|
return False
|
|
|
|
|
|
self.freq0 = kwargs['freq0']
|
|
|
self.freq1 = kwargs['freq1']
|
|
|
self.freq2 = kwargs['freq2']
|
|
|
self.freq3 = kwargs['freq3']
|
|
|
|
|
|
return True
|
|
|
|
|
|
def parms_to_dict(self):
|
|
|
|
|
|
parameters = {}
|
|
|
|
|
|
parameters['device_id'] = self.device.id
|
|
|
|
|
|
if self.freq0 == None or self.freq0 == '':
|
|
|
parameters['freq0'] = 0
|
|
|
else:
|
|
|
parameters['freq0'] = self.freq0
|
|
|
|
|
|
if self.freq1 == None or self.freq1 == '':
|
|
|
parameters['freq1'] = 0
|
|
|
else:
|
|
|
parameters['freq1'] = self.freq1
|
|
|
|
|
|
if self.freq2 == None or self.freq2 == '':
|
|
|
parameters['freq2'] = 0
|
|
|
else:
|
|
|
parameters['freq2'] = self.freq2
|
|
|
|
|
|
if self.freq3 == None or self.freq3 == '':
|
|
|
parameters['freq3'] = 0
|
|
|
else:
|
|
|
parameters['freq3'] = self.freq3
|
|
|
|
|
|
return parameters
|
|
|
|
|
|
|
|
|
def dict_to_parms(self, parameters):
|
|
|
|
|
|
self.freq0 = parameters['freq0']
|
|
|
self.freq1 = parameters['freq1']
|
|
|
self.freq2 = parameters['freq2']
|
|
|
self.freq3 = parameters['freq3']
|
|
|
|
|
|
|
|
|
def status_device(self):
|
|
|
|
|
|
import requests
|
|
|
|
|
|
ip=self.device.ip_address
|
|
|
port=self.device.port_address
|
|
|
|
|
|
route = "http://" + str(ip) + ":" + str(port) + "/status/ad9548"
|
|
|
try:
|
|
|
r = requests.get(route,timeout=0.5)
|
|
|
except:
|
|
|
self.device.status = 0
|
|
|
self.device.save()
|
|
|
return self.device.status
|
|
|
|
|
|
response = str(r.text)
|
|
|
response = response.split(";")
|
|
|
icon = response[0]
|
|
|
status = response[-1]
|
|
|
|
|
|
#print(icon, status)
|
|
|
#"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
|
|
|
|
|
|
self.message = status
|
|
|
self.device.save()
|
|
|
|
|
|
|
|
|
return self.device.status
|
|
|
|
|
|
|
|
|
def read_device(self):
|
|
|
|
|
|
import requests
|
|
|
|
|
|
ip=self.device.ip_address
|
|
|
port=self.device.port_address
|
|
|
|
|
|
route = "http://" + str(ip) + ":" + str(port) + "/frequencies/"
|
|
|
try:
|
|
|
frequencies = requests.get(route,timeout=0.5)
|
|
|
|
|
|
except:
|
|
|
self.message = "Could not read CGS parameters from this device"
|
|
|
return None
|
|
|
|
|
|
frequencies = frequencies.json()
|
|
|
frequencies = frequencies.get("Frecuencias")
|
|
|
f0 = frequencies.get("f0")
|
|
|
f1 = frequencies.get("f1")
|
|
|
f2 = frequencies.get("f2")
|
|
|
f3 = frequencies.get("f3")
|
|
|
|
|
|
parms = {'freq0': f0,
|
|
|
'freq1': f1,
|
|
|
'freq2': f2,
|
|
|
'freq3': f3}
|
|
|
|
|
|
self.message = ""
|
|
|
return parms
|
|
|
|
|
|
|
|
|
def write_device(self):
|
|
|
|
|
|
import requests
|
|
|
|
|
|
ip=self.device.ip_address
|
|
|
port=self.device.port_address
|
|
|
|
|
|
#---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/"
|
|
|
|
|
|
try:
|
|
|
r = requests.post(route, post_data, timeout=0.5)
|
|
|
except:
|
|
|
self.message = "Could not write CGS parameters"
|
|
|
return None
|
|
|
|
|
|
text = r.text
|
|
|
text = text.split(',')
|
|
|
|
|
|
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
|
|
|
|
|
|
return 1
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
db_table = 'cgs_configurations'
|
|
|
|