from django.shortcuts import redirect, render, get_object_or_404 from django.contrib import messages from django.http import HttpResponse from django.template.loader import get_template from apps.main.models import Experiment from .models import ATRADConfiguration, ATRADData from .forms import ATRADConfigurationForm, UploadFileForm from apps.main.views import sidebar import requests import json import os from django.http import JsonResponse from .mqtt import client as mqtt_client from radarsys.socketconfig import sio as sio from datetime import timedelta def atrad_conf(request, id_conf): conf = get_object_or_404(ATRADConfiguration, pk=id_conf) ip=conf.device.ip_address port=conf.device.port_address kwargs = {} kwargs['status'] = conf.device.get_status_display() kwargs['dev_conf'] = conf kwargs['dev_conf_keys'] = ['label', 'topic'] kwargs['title'] = 'ATRAD Configuration' kwargs['suptitle'] = 'Details' kwargs['button'] = 'Edit Configuration' #kwargs['no_play'] = True ###### SIDEBAR ###### kwargs.update(sidebar(conf=conf)) return render(request, 'atrad_conf.html', kwargs) def atrad_tx(request, id_conf, id_tx): kwargs = {} kwargs['id_tx'] = id_tx[-1] kwargs['title'] = 'Temperature Details' kwargs['button'] = 'Edit Configuration' time = ATRADData.objects.last().datetime id_stx = (int(id_tx[-1])-1)*4+1 mydata = ATRADData.objects.filter(datetime__gte = (time-timedelta(hours=1)),nstx = id_stx).values('datetime','temp1_1','temp2_1','temp3_1','temp4_1','temp5_1','temp6_1', 'temp1_2','temp2_2','temp3_2','temp4_2','temp5_2','temp6_2','temp1_3','temp2_3','temp3_3','temp4_3','temp5_3','temp6_3', 'temp1_4','temp2_4','temp3_4','temp4_4','temp5_4','temp6_4') kwargs['data'] = json.dumps(list(mydata),default=str) return render(request, 'atrad_tx.html', kwargs) def QuerytoStr(data): time = data[0] strdata = str(time) return strdata def atrad_conf_edit(request, id_conf): conf = get_object_or_404(ATRADConfiguration, pk=id_conf) if request.method=='GET': form = ATRADConfigurationForm(instance=conf) if request.method=='POST': form = ATRADConfigurationForm(request.POST, instance=conf) if form.is_valid(): if conf.topic == None: conf.topic = 0 conf = form.save(commit=False) if conf.verify_frequencies(): conf.save() return redirect('url_atrad_conf', id_conf=conf.id) kwargs = {} kwargs['id_dev'] = conf.id kwargs['form'] = form kwargs['title'] = 'Device Configuration' kwargs['suptitle'] = 'Edit' kwargs['button'] = 'Save' return render(request, 'atrad_conf_edit.html', kwargs) def publish_message(request): rc, mid = mqtt_client.publish('test/data2',1) return JsonResponse({'code1': 'HIKA', 'code2': 'LUCAS'}) def monitor(request): kwargs = {'no_sidebar': True} return render(request, 'monitor.html', kwargs) def atrad_prueba(request): keys = ['id','temp1','temp2','temp3','temp4','temp5','temp6'] time = ATRADData.objects.last().datetime mydata = ATRADData.objects.filter(datetime__gte = (time-timedelta(hours=1))).values('id','temp1_1','temp2_1','temp3_1','temp4_1','temp5_1','temp6_1', 'temp1_2','temp2_2','temp3_2','temp4_2','temp5_2','temp6_2','temp1_3','temp2_3','temp3_3','temp4_3','temp5_3','temp6_3', 'temp1_4','temp2_4','temp3_4','temp4_4','temp5_4','temp6_4') template = get_template('prueba.html') context = { 'last' : time, 'temps': mydata, 'keys' : keys, } return HttpResponse(template.render(context, request)) @sio.on('connection-bind') def atrad_connection_bind(sid, data): print("sid:",sid,"data",data) @sio.on('disconnect') def atrad_disconnect(sid): print("Disconnected") @sio.event def atrad_control_event(sid,message): mqtt_client.publish('test/data2', json.dumps(message))