From b6c6060a89f50b2d0c40f7b933ecedd2c4fa1f46 Mon Sep 17 00:00:00 2001 From: Alejandro Diaz Date: Wed, 13 Sep 2023 14:44:31 -0600 Subject: [PATCH] add button interface --- ui/main/templates/home.html | 55 +++++++++++++++++++++++++++++++------ ui/main/urls.py | 3 +- ui/main/views.py | 12 ++++++-- 3 files changed, 58 insertions(+), 12 deletions(-) diff --git a/ui/main/templates/home.html b/ui/main/templates/home.html index 8befc22..f5d7062 100644 --- a/ui/main/templates/home.html +++ b/ui/main/templates/home.html @@ -13,7 +13,9 @@ $.get("/led/"+ led +"/", function (data) { console.log(data); if (led < 6 && led > 0) { - $("#but"+led).text(data); + if (data == "off"){ + $("#but"+led).text("Turn off "+led) + } } }); } @@ -23,6 +25,34 @@ $("#photo").attr("src", "static/photo.jpg?"+d.getTime()); }); } + + + function button_painter(pin, x, y, w, h) { + var canvas = document.getElementById("miCanvas"); + var ctx = canvas.getContext("2d"); + $.get("/button/"+pin, function (data) { + if (data == 1) { + ctx.strokeStyle = "#FFFFFF"; // Color blanco + console.log("Abriendo puerta " + pin) + } else { + ctx.strokeStyle = "#FF0000"; // Color negro + console.log("Cerrando puerta " + pin) + } + + ctx.strokeRect(x, y, w, h); // Puerta + }); + } + + // Establecer la cantidad de segundos (en milisegundos) entre cada ejecuciĆ³n + var segundos = 2; // Cambia a la cantidad de segundos deseada + + // Llamar a la funciĆ³n cada X segundos + + setInterval(button_painter, segundos * 1000, 7, 300, 100, 1, 75); + setInterval(button_painter, segundos * 1000, 8, 350, 4, 100, 1); + setInterval(button_painter, segundos * 1000, 9, 350, 596, 100, 1); + setInterval(button_painter, segundos * 1000, 10, 500, 400, 1, 75); + {% if user.is_authenticated %} @@ -87,17 +117,24 @@ ctx.fillText("Sala", 200, 450); ctx.fillText("Cocina", 600, 150); + ctx.strokeStyle = "#FF0000"; // Color negro + ctx.strokeRect(300, 100, 1, 75); // Puerta 1 - var imagen = new Image(); + ctx.strokeRect(350, 4, 100, 1); // Puerta trasera + ctx.strokeRect(350, 596, 100, 1); // Puerta tdelanteearasera - // Definir la ruta de la imagen que deseas cargar - imagen.src = "https://www.freepngimg.com/thumb/light/78155-icons-light-idea-computer-lighting-incandescent-bulb.png" + ctx.strokeRect(500, 400, 1, 75); // Puerta 2 - // Esperar a que la imagen se cargue antes de dibujarla - imagen.onload = function () { - // Dibujar la imagen en el canvas - ctx.drawImage(imagen, 20, 100, 80, 80); // (imagen, x, y) - }; + // var imagen = new Image(); + + // // Definir la ruta de la imagen que deseas cargar + // imagen.src = "https://www.freepngimg.com/thumb/light/78155-icons-light-idea-computer-lighting-incandescent-bulb.png" + + // // Esperar a que la imagen se cargue antes de dibujarla + // imagen.onload = function () { + // // Dibujar la imagen en el canvas + // ctx.drawImage(imagen, 20, 100, 80, 80); // (imagen, x, y) + // }; diff --git a/ui/main/urls.py b/ui/main/urls.py index 6a4ce80..89818c9 100644 --- a/ui/main/urls.py +++ b/ui/main/urls.py @@ -1,9 +1,10 @@ from django.urls import path -from .views import home, led, take_photo +from .views import home, led, take_photo, button_detect urlpatterns = [ path("", home, name="home"), path("led//", led, name="leds"), path("photo/", take_photo), + path("button//", button_detect), ] diff --git a/ui/main/views.py b/ui/main/views.py index 316054f..50f94fa 100644 --- a/ui/main/views.py +++ b/ui/main/views.py @@ -18,7 +18,11 @@ leds_gpio = { 2: 6, 3: 13, 4: 19, - 5: 26 + 5: 26, + 7: 21, + 8: 20, + 9: 16, + 10: 12, } def home(request): @@ -56,4 +60,8 @@ def toggle_led(led, turn_on): else: pin_control.turn_on_pin(gpio_pin) leds_state[led] = not turn_on - return HttpResponse("on" if turn_on else f"Turn on {led}") \ No newline at end of file + return HttpResponse("on" if turn_on else "off") + + +def button_detect(request, pin): + return HttpResponse(pin_control.probe_pin(leds_gpio[pin])) \ No newline at end of file