@@ -0,0 +1,39 | |||
|
1 | import os | |
|
2 | import paho.mqtt.client as mqtt | |
|
3 | from radarsys import settings | |
|
4 | from radarsys.socketconfig import sio as sio | |
|
5 | ||
|
6 | lista_ack=[ | |
|
7 | chr( 33 ), chr( 34 ), chr( 35 ), chr( 36 ), chr( 37 ), chr( 38 ), chr( 39 ), chr( 40 ), chr( 41 ), chr( 42 ), chr( 43 ), chr( 44 ), chr( 45 ), chr( 46 ), chr( 47 ), chr( 48 ), chr( 49 ), chr( 50 ), chr( 51 ), chr( 52 ), chr( 53 ), chr( 54 ), chr( 55 ), chr( 56 ), chr( 57 ), chr( 58 ), chr( 59 ), chr( 60 ), chr( 61 ), chr( 62 ), chr( 63 ), chr( 64 ), chr( 65 ), chr( 66 ), chr( 67 ), chr( 68 ), chr( 69 ), chr( 70 ), chr( 71 ), chr( 72 ), chr( 73 ), chr( 74 ), chr( 75 ), chr( 76 ), chr( 77 ), chr( 78 ), chr( 79 ), chr( 80 ), chr( 81 ), chr( 82 ), chr( 83 ), chr( 84 ), chr( 85 ), chr( 86 ), chr( 87 ), chr( 88 ), chr( 89 ), chr( 90 ), chr( 91 ), chr( 92 ), chr( 93 ), chr( 94 ), chr( 95 ), chr( 96 ) | |
|
8 | ] | |
|
9 | ||
|
10 | lista_ack_dismatching=[ | |
|
11 | chr( 97 ), chr( 98 ), chr( 99 ), chr( 100 ), chr( 101 ), chr( 102 ), chr( 103 ), chr( 104 ), chr( 105 ), chr( 106 ), chr( 107 ), chr( 108 ), chr( 109 ), chr( 110 ), chr( 111 ), chr( 112 ), chr( 113 ), chr( 114 ), chr( 115 ), chr( 116 ), chr( 117 ), chr( 118 ), chr( 119 ), chr( 120 ), chr( 121 ), chr( 122 ), chr( 123 ), chr( 124 ), chr( 125 ), chr( 126 ), chr( 127 ), chr( 128 ), chr( 129 ), chr( 130 ), chr( 131 ), chr( 132 ), chr( 133 ), chr( 134 ), chr( 135 ), chr( 136 ), chr( 137 ), chr( 138 ), chr( 139 ), chr( 140 ), chr( 141 ), chr( 142 ), chr( 143 ), chr( 144 ), chr( 145 ), chr( 146 ), chr( 147 ), chr( 148 ), chr( 149 ), chr( 150 ), chr( 151 ), chr( 152 ), chr( 153 ), chr( 154 ), chr( 155 ), chr( 156 ), chr( 157 ), chr( 158 ), chr( 159 ), chr(160) | |
|
12 | ] | |
|
13 | ||
|
14 | def on_connect(mqtt_client, userdata, flags, rc): | |
|
15 | if rc == 0: | |
|
16 | print('Connected successfully') | |
|
17 | mqtt_client.subscribe(os.environ.get('TOPIC_ABS_ACK','abs/beams_ack')) | |
|
18 | else: | |
|
19 | print('Bad connection. Code:', rc) | |
|
20 | ||
|
21 | def on_message(mqtt_client, userdata, msg): | |
|
22 | # print(f'Received message on topic: {msg.topic} with payload: {msg.payload}', flush=True) | |
|
23 | # message= str(msg.payload) | |
|
24 | # sio.emit('abs_ws',data={'msg':message}) | |
|
25 | #message=str(msg.payload) | |
|
26 | #lista_ack.pop(message) | |
|
27 | print("Mientras" ,flush=True) | |
|
28 | ||
|
29 | ||
|
30 | ||
|
31 | client = mqtt.Client() | |
|
32 | client.on_connect = on_connect | |
|
33 | client.on_message = on_message | |
|
34 | client.username_pw_set(os.environ.get('MQTT_USER', 'abs'), os.environ.get('MQTT_PASSWORD', 'abs')) | |
|
35 | client.connect( | |
|
36 | host=os.environ.get('MQTT_SERVER', '10.10.10.200'), | |
|
37 | port=int(settings.os.environ.get('MQTT_PORT', 1883)), | |
|
38 | keepalive=int(os.environ.get('MQTT_KEEPALIVE', 36000)) | |
|
39 | ) No newline at end of file |
@@ -17,3 +17,16 LC_ALL=C.UTF-8 | |||
|
17 | 17 | TZ=America/Lima |
|
18 | 18 | DOCKER_DATA=/data/dockers/radarsys/ |
|
19 | 19 | LOCAL_IP=192.168.1.128 |
|
20 | ||
|
21 | MQTT_SERVER=10.10.10.102 | |
|
22 | #MQTT_SERVER = 0.0.0.0 | |
|
23 | MQTT_PORT = 1883 | |
|
24 | MQTT_KEEPALIVE = 3660 | |
|
25 | ||
|
26 | MQTT_USER_ATRAD=atrad | |
|
27 | MQTT_PASSWORD_ATRAD = atrad | |
|
28 | MQTT_USER = abs | |
|
29 | MQTT_PASSWORD = abs | |
|
30 | MQTT_CLIENT_ID= abs_id | |
|
31 | TOPIC_ABS=abs/beams | |
|
32 | TOPIC_ABS_ACK=abs/beams_ack |
@@ -10,6 +10,10 import requests | |||
|
10 | 10 | import struct |
|
11 | 11 | import os, sys, time |
|
12 | 12 | |
|
13 | from .mqtt import client as mqtt_client | |
|
14 | from radarsys.socketconfig import sio as sio | |
|
15 | import json | |
|
16 | ||
|
13 | 17 | antenna_default = json.dumps({ |
|
14 | 18 | "antenna_up": [[0.0,0.0,0.0,0.0,0.5,0.5,0.5,0.5], |
|
15 | 19 | [0.0,0.0,0.0,0.0,0.5,0.5,0.5,0.5], |
@@ -489,6 +493,27 class ABSConfiguration(Configuration): | |||
|
489 | 493 | conf_active.save() |
|
490 | 494 | return True |
|
491 | 495 | |
|
496 | def write_device_mqtt(self): | |
|
497 | apuntes_up_down='' | |
|
498 | beams = ABSBeam.objects.filter(abs_conf=self) | |
|
499 | ||
|
500 | inicializacion="{\"beams\":[" | |
|
501 | finalizacion="]}" | |
|
502 | ||
|
503 | for beam in beams: | |
|
504 | beam.antenna=beam.antenna[1:] | |
|
505 | info="{\"id\":"+str(beam.id)+","+beam.antenna + "," | |
|
506 | apuntes_up_down=apuntes_up_down+info | |
|
507 | ||
|
508 | apuntes_up_down=apuntes_up_down[:len(apuntes_up_down)-1] | |
|
509 | ||
|
510 | apuntes_up_down=inicializacion+ apuntes_up_down+finalizacion | |
|
511 | ||
|
512 | #print(apuntes_up_down,flush=True) | |
|
513 | ||
|
514 | mqtt_client.publish(os.environ.get('TOPIC_ABS', 'abs/beams'),apuntes_up_down) | |
|
515 | ||
|
516 | return True | |
|
492 | 517 | |
|
493 | 518 | def read_module(self, module): |
|
494 | 519 |
@@ -39,13 +39,22 | |||
|
39 | 39 | |
|
40 | 40 | </style> |
|
41 | 41 | {% endblock %} |
|
42 | ||
|
43 | ||
|
42 | 44 | {% block extra-menu-actions %} |
|
43 | 45 | <li> |
|
44 | 46 | <a href="{{ dev_conf.get_absolute_url_plot }}" target="_blank"> |
|
45 | 47 | <span class="far fa-image" aria-hidden="true"></span> View Patterns </a> |
|
46 | 48 | </li> |
|
47 | 49 | {% endblock %} |
|
50 | ||
|
51 | ||
|
48 | 52 | {% block extra-content %} |
|
53 | <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script> | |
|
54 | <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.min.js"> | |
|
55 | </script> | |
|
56 | ||
|
57 | ||
|
49 | 58 | {% if beams %} |
|
50 | 59 | <h4>Beams:</h4> |
|
51 | 60 | <div class="container"> |
@@ -280,6 +289,10 | |||
|
280 | 289 | </tr> |
|
281 | 290 | </table> |
|
282 | 291 | |
|
292 | <!-- <meta id="configuraciones_down" data-playlist="{{ beam.get_downvalues }}"> | |
|
293 | <meta id="configuraciones_up" data-playlist="{{ beam.get_upvalues }}"> | |
|
294 | <meta id="sda" data-toggle="" --> | |
|
295 | ||
|
283 | 296 | {% if beam.id == active_beam %} |
|
284 | 297 | <table class="legend"> |
|
285 | 298 | <tr> |
@@ -303,6 +316,10 | |||
|
303 | 316 | <button id="send_beam{{forloop.counter}}" type="button" class="btn btn-default"> |
|
304 | 317 |
|
|
305 | 318 |
|
|
319 | <br><br><br> | |
|
320 | <button id="change_beam_mqtt{{forloop.counter}}" type="button" class="btn btn-default"> | |
|
321 | <span class="fas fa-external-link-square-alt" aria-hidden="true"></span> | |
|
322 | Change Beam MQTT</button> | |
|
306 | 323 | </div> |
|
307 | 324 | {% endif %} |
|
308 | 325 | </div> |
@@ -317,23 +334,51 | |||
|
317 | 334 | </p> |
|
318 | 335 | {% endif %} |
|
319 | 336 | {% endblock extra-content %} |
|
337 | ||
|
320 | 338 | {% block extra-js%} |
|
321 | 339 | <script> |
|
322 | 340 | $(document).ready(function () { |
|
323 | 341 | |
|
342 | var socket = io.connect('http://' + document.domain + ':' + location.port); | |
|
343 | ||
|
344 | socket.on('connect', function(data) { | |
|
345 | console.log('Connecting... OK'); | |
|
346 | }) | |
|
347 | ||
|
348 | socket.on('abs_ws', function(data) { | |
|
349 | console.log('ingresamos'); | |
|
350 | console.log(data.msg); | |
|
351 | var text = data['msg']; | |
|
352 | // $('#chatLog').val(text); | |
|
353 | ||
|
354 | if(data.msg=="b\'Hola\'"){console.log('Hola_amigo')}; | |
|
355 | }) | |
|
356 | ||
|
357 | ||
|
324 | 358 |
|
|
325 | 359 | |
|
326 | 360 |
|
|
327 | 361 |
|
|
362 | $("#change_beam_mqtt{{forloop.counter}}").prop('disabled', true) | |
|
328 | 363 |
|
|
329 | 364 |
|
|
330 | 365 |
|
|
331 | 366 |
|
|
367 | ||
|
368 | a=$("#change_beam_mqtt{{forloop.counter}}") | |
|
369 | a.click(function () { | |
|
370 | info="change_beam_mqtt{{forloop.counter}}" | |
|
371 | socket.emit('change_beam',{data:info}) | |
|
372 | }); | |
|
373 | ||
|
332 | 374 |
|
|
333 | 375 | |
|
334 | 376 |
|
|
335 | 377 | |
|
336 | 378 | |
|
337 | 379 |
|
|
380 | ||
|
338 | 381 | </script> |
|
382 | ||
|
383 | ||
|
339 | 384 | {% endblock %} |
@@ -24,6 +24,8 from .utils.overJroShow import overJroShow | |||
|
24 | 24 | #Create your views here. |
|
25 | 25 | import json, ast |
|
26 | 26 | |
|
27 | from .mqtt import client as mqtt_client | |
|
28 | from radarsys.socketconfig import sio as sio | |
|
27 | 29 | |
|
28 | 30 | def get_values_from_form(form_data): |
|
29 | 31 | |
@@ -246,6 +248,41 def import_file(request, id_conf): | |||
|
246 | 248 | return render(request, 'abs_import.html', kwargs) |
|
247 | 249 | |
|
248 | 250 | |
|
251 | # def send_mqtt(request,id_conf): | |
|
252 | ||
|
253 | # # conf = get_object_or_404(ABSConfiguration, pk=id_conf) | |
|
254 | ||
|
255 | # # abs_mqtt = Configuration.objects.filter(pk=conf.device.conf_active).first() | |
|
256 | # # if abs_mqtt!=conf: | |
|
257 | # # url_mqtt = '#' if abs is None else abs.get_absolute_url() | |
|
258 | # # label_mqtt = 'None' if abs is None else abs.label | |
|
259 | # # messages.warning( | |
|
260 | # # request, | |
|
261 | # # mark_safe('The current configuration has not been written in the modules, the active configuration is <a href="{}">{}</a>'.format( | |
|
262 | # # url_mqtt, | |
|
263 | # # label_mqtt | |
|
264 | # # )) | |
|
265 | # # ) | |
|
266 | # # return redirect(conf.get_absolute_url()) | |
|
267 | ||
|
268 | # # beam = get_object_or_404(ABSBeam, pk=id_beam) | |
|
269 | ||
|
270 | # conf = get_object_or_404(ABSConfiguration, pk=id_conf) | |
|
271 | ||
|
272 | # mqtt_client.publish('abs/beams_up', 'Hola up') | |
|
273 | # mqtt_client.publish('abs/beams_down', 'Hola down') | |
|
274 | ||
|
275 | # kwargs = { | |
|
276 | # 'title': 'ABS', | |
|
277 | # 'suptitle': conf.label, | |
|
278 | # 'message': 'Are you sure you want to write ABS Beam?', | |
|
279 | # 'delete': False | |
|
280 | # } | |
|
281 | # kwargs['menu_configurations'] = 'active' | |
|
282 | ||
|
283 | # return render(request, 'confirm.html', kwargs) | |
|
284 | ||
|
285 | ||
|
249 | 286 | def send_beam(request, id_conf, id_beam): |
|
250 | 287 | |
|
251 | 288 | conf = get_object_or_404(ABSConfiguration, pk=id_conf) |
@@ -443,3 +480,33 def plot_pattern(request, id_conf, id_beam, antenna): | |||
|
443 | 480 | response = HttpResponse(buf.getvalue(), content_type='image/png') |
|
444 | 481 | return response |
|
445 | 482 | |
|
483 | import os | |
|
484 | from django.http import HttpResponse | |
|
485 | ||
|
486 | @sio.on('connection-bind') | |
|
487 | def abs_connection_bind(sid, data): | |
|
488 | print("sid:",sid,"data",data) | |
|
489 | ||
|
490 | @sio.on('disconnect') | |
|
491 | def abs_test_disconnect(sid): | |
|
492 | print("Disconnected") | |
|
493 | ||
|
494 | @sio.event | |
|
495 | def abs_send_beam_up(sid, message): | |
|
496 | mqtt_client.publish('abs/beams_up', message['data']) | |
|
497 | ||
|
498 | @sio.event | |
|
499 | def abs_send_beam_down(sid, message): | |
|
500 | mqtt_client.publish('abs/beams_down', message['data']) | |
|
501 | ||
|
502 | @sio.event | |
|
503 | def change_beam(sid,message): | |
|
504 | data=str(message['data']) | |
|
505 | data=data[16] | |
|
506 | mqtt_client.publish('abs/change_beam',data) | |
|
507 | ||
|
508 | ||
|
509 | ||
|
510 | ||
|
511 | ||
|
512 |
@@ -1,3 +1,4 | |||
|
1 | import os | |
|
1 | 2 | import paho.mqtt.client as mqtt |
|
2 | 3 | from radarsys import settings |
|
3 | 4 | from radarsys.socketconfig import sio as sio |
@@ -16,11 +17,11 def maxima_temp(trs): | |||
|
16 | 17 | return max(temps) |
|
17 | 18 | |
|
18 | 19 | def on_message(mqtt_client, userdata, msg): |
|
19 | print(f'Received message on topic: {msg.topic} with payload: {msg.payload}', flush=True) | |
|
20 | # print(f'Received message on topic: {msg.topic} with payload: {msg.payload}', flush=True) | |
|
20 | 21 | trsi = [[],[],[],[]] |
|
21 | 22 | mensaje = str(msg.payload) |
|
22 | 23 | datos = [i for i in mensaje[21:-1].split("*")] |
|
23 |
status=''.join([datos[i][3] for i in |
|
|
24 | status=''.join([datos[i][3] for i in range(3)]) | |
|
24 | 25 | for trs,i in zip(datos,[0,1,2,3]) : |
|
25 | 26 | trsi[i]= [int(i) for i in trs[1:-1].split(",")] |
|
26 | 27 | potencias = [trsi[0][34],trsi[0][36],trsi[2][32],trsi[2][34]] |
@@ -30,9 +31,9 def on_message(mqtt_client, userdata, msg): | |||
|
30 | 31 | client = mqtt.Client() |
|
31 | 32 | client.on_connect = on_connect |
|
32 | 33 | client.on_message = on_message |
|
33 |
client.username_pw_set( |
|
|
34 | client.username_pw_set(os.environ.get('MQTT_USER_ATRAD', 'atrad'), os.environ.get('MQTT_PASSWORD_ATRAD', 'atrad')) | |
|
34 | 35 | client.connect( |
|
35 |
host= |
|
|
36 | port=settings.MQTT_PORT, | |
|
37 |
keepalive= |
|
|
36 | host=os.environ.get('MQTT_SERVER', '0.0.0.0'), | |
|
37 | port=int(settings.os.environ.get('MQTT_PORT', 1883)), | |
|
38 | keepalive=int(os.environ.get('MQTT_KEEPALIVE', 36000)) | |
|
38 | 39 | ) No newline at end of file |
@@ -170,7 +170,7 django.utils.encoding.force_text = force_str | |||
|
170 | 170 | # choose of auto-created primary keys |
|
171 | 171 | DEFAULT_AUTO_FIELD='django.db.models.AutoField' |
|
172 | 172 | |
|
173 |
MQTT_SERVER = '10.10.10. |
|
|
173 | MQTT_SERVER = '10.10.10.200' | |
|
174 | 174 | MQTT_PORT = 1883 |
|
175 | 175 | MQTT_KEEPALIVE = 60 |
|
176 | 176 | MQTT_USER = '' |
General Comments 0
You need to be logged in to leave comments.
Login now