Genera un software sobre el tueste del café con los siguientes indicadores como: Temperatura, tiempo, humedad, consumo, velocidad y mantenimiento. También que tenga indicadores de sensores como: sensor de temperatura, sensor de humedad,sensor de presión y flujo de gas, consumidor de energía, historial de datos, alertas y tecnologías aplicadas
Aquí te presento un ejemplo de cómo podrías implementar un software para el tueste del café utilizando JavaScript y algunas de las tecnologías que mencionaste: **Requisitos previos** * Node.js instalado en tu sistema * Un entorno de desarrollo como Visual Studio Code * Conocimientos básicos de JavaScript y HTML/CSS **Estructura del proyecto** * Crear un nuevo proyecto en Node.js utilizando el comando `npm init` * Instalar las dependencias necesarias: + `express` para crear un servidor web + `body-parser` para parsear el cuerpo de las solicitudes HTTP + `mongodb` para almacenar los datos en una base de datos NoSQL + `chart.js` para crear gráficos + `node-schedule` para programar tareas + `node-red` para crear un flujo de trabajo * Crear un archivo `index.js` para el servidor web * Crear un archivo `database.js` para la conexión a la base de datos * Crear un archivo `sensor.js` para leer los sensores * Crear un archivo `tostador.js` para controlar el tueste del café * Crear un archivo `historial.js` para almacenar el historial de datos **index.js** ```javascript const express = require('express'); const bodyParser = require('body-parser'); const app = express(); const port = 3000; app.use(bodyParser.json()); app.get('/', (req, res) => { res.send('Bienvenido al tueste del café'); }); app.post('/tostar', (req, res) => { const { temperatura, tiempo, humedad, consumo, velocidad } = req.body; // Llamar a la función de tostar tostar(temperatura, tiempo, humedad, consumo, velocidad); res.send('Tueste iniciado'); }); app.get('/historial', (req, res) => { // Obtener el historial de datos const historial = obtenerHistorial(); res.json(historial); }); app.listen(port, () => { console.log(`Servidor escuchando en el puerto ${port}`); }); ``` **database.js** ```javascript const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/tostador', { useNewUrlParser: true, useUnifiedTopology: true }); const db = mongoose.connection; db.on('error', (err) => { console.error(err); }); db.once('open', () => { console.log('Conexión a la base de datos establecida'); }); module.exports = db; ``` **sensor.js** ```javascript const sensorTemperatura = require('sensor-temperatura'); const sensorHumedad = require('sensor-humedad'); const sensorPresion = require('sensor-presion'); const sensorFlujoGas = require('sensor-flujo-gas'); const sensores = { temperatura: sensorTemperatura(), humedad: sensorHumedad(), presion: sensorPresion(), flujoGas: sensorFlujoGas(), }; module.exports = sensores; ``` **tostador.js** ```javascript const sensores = require('./sensor'); const db = require('./database'); const tostar = (temperatura, tiempo, humedad, consumo, velocidad) => { // Leer los sensores const temperaturaActual = sensores.temperatura.leer(); const humedadActual = sensores.humedad.leer(); const presionActual = sensores.presion.leer(); const flujoGasActual = sensores.flujoGas.leer(); // Verificar si los sensores están dentro de los rangos permitidos if (temperaturaActual < 100 || temperaturaActual > 200) { console.error('Temperatura fuera de rango'); return; } if (humedadActual < 30 || humedadActual > 70) { console.error('Humedad fuera de rango'); return; } if (presionActual < 100 || presionActual > 200) { console.error('Presión fuera de rango'); return; } if (flujoGasActual < 10 || flujoGasActual > 50) { console.error('Flujo de gas fuera de rango'); return; } // Iniciar el tueste console.log('Tueste iniciado'); // Llamar a la función de control del tueste controlTueste(temperatura, tiempo, humedad, consumo, velocidad); }; const controlTueste = (temperatura, tiempo, humedad, consumo, velocidad) => { // Controlar el tueste console.log('Controlando el tueste'); // Llamar a la función de finalización del tueste finalizarTueste(); }; const finalizarTueste = () => { // Finalizar el tueste console.log('Tueste finalizado'); // Almacenar el historial de datos almacenarHistorial(); }; const almacenarHistorial = () => { // Almacenar el historial de datos const historial = { temperatura: sensores.temperatura.leer(), humedad: sensores.humedad.leer(), presion: sensores.presion.leer(), flujoGas: sensores.flujoGas.leer(), consumo: consumo, velocidad: velocidad, }; db.collection('historial').insertOne(historial, (err, result) => { if (err) { console.error(err); } else { console.log('Historial almacenado'); } }); }; ``` **historial.js** ```javascript const db = require('./database'); const obtenerHistorial = () => { // Obtener el historial de datos db.collection('historial').find().toArray((err, historial) => { if (err) { console.error(err); } else { console.log(historial); } }); }; ``` **app.js** ```javascript const express = require('express'); const app = express(); const port = 3000; app.use(express.static('public')); app.get('/', (req, res) => { res.sendFile(__dirname + '/index.html'); }); app.listen(port, () => { console.log(`Servidor escuchando en el puerto ${port}`); }); ``` **index.html** ```html <!DOCTYPE html> <html> <head> <title>Tueste del café</title> <script src="https://cdn.jsdelivr.net/npm/chart.js@2.9.4/dist/Chart.min.js"></script> </head> <body> <h1>Tueste del café</h1> <form id="form-tostar"> <label for="temperatura">Temperatura:</label> <input type="number" id="temperatura" name="temperatura"><br><br> <label for="tiempo">Tiempo:</label> <input type="number" id="tiempo" name="tiempo"><br><br> <label for="humedad">Humedad:</label> <input type="number" id="humedad" name="humedad"><br><br> <label for="consumo">Consumo:</label> <input type="number" id="consumo" name="consumo"><br><br> <label for="velocidad">Velocidad:</label> <input type="number" id="velocidad" name="velocidad"><br><br> <button type="submit">Tostar</button> </form> <canvas id="chart"></canvas> <script> const form = document.getElementById('form-tostar'); form.addEventListener('submit', (e) => { e.preventDefault(); const temperatura = document.getElementById('temperatura').value; const tiempo = document.getElementById('tiempo').value; const humedad = document.getElementById('humedad').value; const consumo = document.getElementById('consumo').value; const velocidad = document.getElementById('velocidad').value; fetch('/tostar', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ temperatura, tiempo, humedad, consumo, velocidad, }), }) .then((response) => response.json()) .then((data) => { console.log(data); }) .catch((error) => { console.error(error); }); }); const chart = document.getElementById('chart').getContext('2d'); const chartData = { labels: ['Temperatura', 'Humedad', 'Presión', 'Flujo de gas'], datasets: [{ label: 'Sensores', data: [0, 0, 0, 0], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', ], borderWidth: 1, }], }; const chartOptions = { scales: { yAxes: [{ ticks: { beginAtZero: true, }, }], }, }; const chart = new Chart(chart, { type: 'bar', data: chartData, options: chartOptions, }); </script> </body> </html> ``` **package.json** ```json { "name": "tostador", "version": "1.0.0", "scripts": { "start": "node index.js" }, "dependencies": { "express": "^4.17.1", "body-parser": "^1.19.0", "mongodb": "^3.6.4", "chart.js": "^2.9.4", "node-schedule": "^1.3.2", "node-red": "^1.0.6" } } ``` Este es un ejemplo básico de cómo podrías implementar un software para el tueste del café utilizando JavaScript y algunas de las tecnologías que mencionaste. Recuerda que debes adaptar este código a tus necesidades específicas y agregar más funcionalidades según sea necesario.