diff --git a/db.sqlite3 b/db.sqlite3 index 8db1a619382a48f53c27a90a51d809a2091ac1f2..e7914df3e2bbedfddc5f951f6789d3558ab5f351 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/ping/templates/ping/play.html b/ping/templates/ping/play.html index 2b9de00b064390b137da66fe1291e9c902256fd3..ebc8c51a6ebc4dbbc00dafe808576949405d06bf 100644 --- a/ping/templates/ping/play.html +++ b/ping/templates/ping/play.html @@ -9,6 +9,53 @@ <title>Play - IOTAMAK</title> <meta name="viewport" content="width=device-width, initial-scale=1"> + <script type="text/javascript"> +window.addEventListener('load', eventWindowLoaded, false); +function eventWindowLoaded() { + canvasApp(); + +} + + function canvasApp() { + var metrics = {{metrics}}; + + var cycle = 0; + + theCanvas = document.getElementById('canvasOne'); + context = theCanvas.getContext('2d'); + + function erraseCanvas() { + context.clearRect(0,0,theCanvas.width,theCanvas.height); + } + + function drawScreen () { + erraseCanvas(); + + var count = metrics[cycle].length; + for (let id_agent = 0; id_agent<count; id_agent++){ + context.fillStyle = "#000000"; + context.beginPath(); + context.arc(metrics[cycle][id_agent][0],metrics[cycle][id_agent][1],15,0,Math.PI*2,true); + context.closePath(); + context.fill(); + } + } + + function gameLoop() { + if (cycle < metrics.length) { + window.setTimeout(gameLoop, 20); + drawScreen(); + cycle = cycle + 1 ; + + } + + } + + gameLoop(); +} + +</script> + </head> <body> @@ -51,5 +98,9 @@ <button type='submit'> Load</button> </form> +<canvas id="canvasOne" width="500" height="500" style="border:1px solid #000000;"> + Your browser does not support the HTML 5 Canvas. +</canvas> + </body> </html> \ No newline at end of file diff --git a/ping/views/play.py b/ping/views/play.py index c7e0a72fbf80d7cb3f485ae85442bb10f1d632bc..60d8fbad96d73ddf2e1e31a8c5b32f09a3ffbdb6 100644 --- a/ping/views/play.py +++ b/ping/views/play.py @@ -7,7 +7,7 @@ from subprocess import Popen from time import sleep from django.conf import settings -from django.http import HttpResponse, HttpResponseRedirect +from django.http import HttpResponse, HttpResponseRedirect, JsonResponse from django.template import loader from django.urls import reverse from iotAmak.tool.ssh_client import Cmd @@ -40,10 +40,16 @@ def agent_metric(client, userdata, message) -> None: metric = Metrics(experiment_name=exp.name, cycle=exp.cycle, agent_id=agent_id, metrics=result) metric.save() +def cycle_done(client, userdata, message) -> None: + cur_exp = CurrentExperiment.objects.all()[0] + cur_exp.cycle += 1 + cur_exp.save() + def update_nbr_agent(client, userdata, message) -> None: exp = CurrentExperiment.objects.all()[0] subscribe(client, "agent/"+str(exp.nbr_agent)+"/metric", agent_metric) + subscribe(client, "scheduler/cycledone", cycle_done) exp.nbr_agent += 1 exp.save() @@ -101,10 +107,19 @@ def experiment_start(request): p3 = Popen([sys.executable, experiment_path+'/env.py', broker_ip]) return HttpResponseRedirect(reverse('ping:play')) - def main_play(request): + cycle = CurrentExperiment.objects.all()[0].cycle + metrics = [] + for i in range(cycle): + # get all the agent 0 metrics + raw_context = Metrics.objects.filter(cycle=i) + + cycle_metrics = [[metric.metrics.get("x"), metric.metrics.get("y")] for metric in raw_context] + + metrics.append(cycle_metrics) + template = loader.get_template('ping/play.html') - context = {} + context = {"metrics": metrics} return HttpResponse(template.render(context, request)) diff --git a/uploads/current_experiment/ant/agent.py b/uploads/current_experiment/ant/agent.py index 5accea62e91b4885d8fb8b4acc49424b2ab0ff02..80f5688cfe9fe0dee42baf3c1331b025c19e6c77 100644 --- a/uploads/current_experiment/ant/agent.py +++ b/uploads/current_experiment/ant/agent.py @@ -7,8 +7,8 @@ from iotAmak.agent import Agent class Ant(Agent): def __init__(self, identifier: int, broker_ip: str): - self.x = 0 - self.y = 0 + self.x = 250 + self.y = 250 super().__init__(identifier, broker_ip) def on_act(self) -> None: diff --git a/uploads/media/ant_XUpI6l7.zip b/uploads/media/ant_XUpI6l7.zip new file mode 100644 index 0000000000000000000000000000000000000000..f2376c7643fd1a04ba142f07ab3fdf329abd0224 Binary files /dev/null and b/uploads/media/ant_XUpI6l7.zip differ