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.
Files
contaminus/README.md
2025-03-11 19:43:42 +01:00

160 lines
4.7 KiB
Markdown

# ⚠ REQUISITOS PREVIOS (SÓLO DAD)
- Descargar [MariaDB 10.6.21](https://mariadb.org/download/?t=mariadb&p=mariadb&r=10.6.21&os=windows&cpu=x86_64&pkg=msi&mirror=raiolanetworks)
- Descargar [DBeaver](https://dbeaver.io/download/)
- Descargar [Postman](https://www.postman.com/downloads/)
## Para lanzar la API con Vert.X
1. Run -> Run Configurations -> Java Application
2. Como clase principal: `io.vertx.core.Launcher`
3. Como argumentos: `net.miarma.contaminus.server.MainVerticle`
# ⚠ REQUISITOS PREVIOS (DAD + Hack4Change)
- Descargar Node.js
- Para descargar Node recomiendo fnm (Fast Node Manager) que lo podéis descargar [aquí](https://miarma.net/descargas)
- Para instalarlo: `fnm install 23.7.0`
-
## Para lanzar la web en modo desarrollador
1. Abrir terminal (normalmente en VSCode) en la carpeta ContaminUS/frontend
2. `npm install`
3. `npm run dev`
## Para transpilar la web de React a HTML/CSS/JS Vanilla
`npm run build` <br>
La encontraréis en `dist/`
# ⚙️ Script para crear la BD
```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 INT 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)
);
CREATE OR REPLACE VIEW v_sensor_values AS
SELECT
s.sensorId,
s.deviceId,
s.sensorType,
s.unit,
s.status AS sensorStatus,
s.timestamp AS sensorTimestamp,
av.temperature,
av.humidity,
av.carbonMonoxide,
av.timestamp AS airValuesTimestamp,
gv.lat,
gv.lon,
gv.timestamp AS gpsTimestamp
FROM sensors s
LEFT JOIN air_values av ON s.sensorId = av.sensorId
LEFT JOIN gps_values gv ON s.sensorId = gv.sensorId;
CREATE OR REPLACE VIEW v_latest_values AS
SELECT
s.deviceId,
s.sensorId,
s.sensorType,
s.unit,
s.status AS sensorStatus,
s.timestamp AS sensorTimestamp,
av.temperature,
av.humidity,
av.carbonMonoxide,
av.timestamp AS airValuesTimestamp
FROM sensors s
LEFT JOIN air_values av
ON s.sensorId = av.sensorId
AND av.timestamp = (
SELECT MAX(timestamp)
FROM air_values
WHERE sensorId = s.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
-- Para el sensor de humedad y temperatura (sensorId = 2)
INSERT INTO air_values (sensorId, temperature, humidity, carbonMonoxide) VALUES
(2, 28.5, 60.2, NULL), -- Temperatura y humedad, pero sin monóxido de carbono
(2, 30.1, 55.8, NULL),
(2, 27.3, 65.4, NULL);
-- Para el sensor de monóxido de carbono (sensorId = 3)
INSERT INTO air_values (sensorId, temperature, humidity, carbonMonoxide) VALUES
(3, NULL, NULL, 0.4), -- Solo monóxido de carbono
(3, NULL, NULL, 0.6),
(3, NULL, NULL, 0.5);
```