1
0
This repository has been archived on 2025-11-01. You can view files and clone it. You cannot open issues or pull requests or push a commit.
2025-03-11 15:52:28 +01:00
2025-03-06 16:52:27 +01:00
2025-03-11 10:46:51 +01:00
2025-03-06 16:52:27 +01:00
2025-03-02 22:51:31 +01:00
2025-03-06 16:52:27 +01:00
2025-03-11 15:52:28 +01:00

⚠ REQUISITOS PREVIOS

  • Descargar MariaDB 10.6.21
  • Descargar DBeaver
  • Descargar Node.js
    • Para descargar Node recomiendo fnm (Fast Node Manager) que lo podéis descargar aquí
    • Para instalarlo: fnm install 23.7.0

Para lanzar la API en local

  1. pip install -r requirements.txt
  2. uvicorn main:app --reload --port <puerto que quieras>

Para lanzar la web en modo desarrollador

  1. npm install
  2. npm run dev

Para transpilar la web de React a HTML/CSS/JS Vanilla

npm run build
La encontraréis en dist/

Script SQL

USE dad;

CREATE TABLE IF NOT EXISTS groups(
	groupId INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
	groupName VARCHAR(64) DEFAULT NULL
);

CREATE TABLE IF NOT EXISTS devices(
	deviceId INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
	groupId INT NOT NULL,
	deviceName VARCHAR(64) DEFAULT NULL,
	FOREIGN KEY (groupId) REFERENCES groups(groupId)
);

CREATE TABLE IF NOT EXISTS sensors(
	sensorId INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
	deviceId INT NOT NULL,
	sensorType VARCHAR(64) NOT NULL,
	unit VARCHAR(8) NOT NULL,
	status INT NOT NULL,
	timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
	FOREIGN KEY (deviceId) REFERENCES devices(deviceId)
);

CREATE TABLE IF NOT EXISTS actuators (
	actuatorId INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
	deviceId INT NOT NULL,
	status BLOB NOT NULL,
	timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
	FOREIGN KEY (deviceId) REFERENCES devices(deviceId)
);

CREATE TABLE IF NOT EXISTS gps_values(
	valueId INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
	sensorId INT NOT NULL,
	lat FLOAT NOT NULL,
	lon FLOAT NOT NULL,
	timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
	FOREIGN KEY (sensorId) REFERENCES sensors(sensorId)
);

CREATE TABLE IF NOT EXISTS air_values (
	valueId INT PRIMARY KEY AUTO_INCREMENT NOT NULL ,
	sensorId INT NOT NULL,
	temperature FLOAT NOT NULL,
	humidity FLOAT NOT NULL,
	carbonMonoxide FLOAT NOT NULL,
	timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP(),
	FOREIGN KEY (sensorId) REFERENCES sensors(sensorId)
);

-- Grupo único
INSERT INTO groups (groupName) VALUES
('ContaminUS');

-- Dispositivos dentro del grupo 1
INSERT INTO devices (groupId, deviceName) VALUES
(1, 'Alpha'),
(1, 'Beta'),
(1, 'Gamma');

-- Sensores asignados a los dispositivos
INSERT INTO sensors (deviceId, sensorType, unit, status) VALUES
(1, 'GPS', '', 1),
(1, 'AirQuality', 'ppm', 1),
(2, 'Temperature', '°C', 1),
(2, 'Humidity', '%', 1),
(3, 'CO Sensor', 'ppm', 1);

-- Actuadores asignados a los dispositivos
INSERT INTO actuators (deviceId, status) VALUES
(1, 0x01),  -- Actuador encendido
(2, 0x00),  -- Actuador apagado
(3, 0x01);  -- Actuador encendido

-- Datos de GPS (sensores tipo GPS)
INSERT INTO gps_values (sensorId, lat, lon) VALUES
(1, 37.3886, -5.9823),  -- Centro de Sevilla
(1, 37.4010, -5.9980),  -- Isla de la Cartuja
(1, 37.3431, -5.9812);  -- Bellavista

-- Datos de calidad del aire (sensores de aire)
INSERT INTO air_values (sensorId, temperature, humidity, carbonMonoxide) VALUES
(2, 28.5, 60.2, 0.4),
(2, 30.1, 55.8, 0.6),
(2, 27.3, 65.4, 0.3),
(3, 25.8, 50.7, 0.2),
(3, 29.2, 58.9, 0.5);
Description
Project developed for Hack4Change 2025, hosted at the School of Computer Engineering (ETSII) – University of Seville. Made in React + Java + C++.
Readme MPL-2.0 7.1 MiB
Languages
Java 63.6%
JavaScript 22.1%
C++ 9.8%
CSS 2.9%
Python 1.1%
Other 0.5%