necesita un Broker que va a recibir la informacion
Necesita de suscriptores y publicadores
sudo dnf update -y
sudo dnf install epel-release -y
sudo tee /etc/yum.repos.d/mosquitto.repo <<EOF
[mosquitto]
name=Mosquitto Repository
baseurl=http://repo.mosquitto.org/mosquitto/centos/8/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://repo.mosquitto.org/mosquitto-repo.gpg
EOF
sudo systemctl status mosquitto
(al ultimo añadir, debe ser la ip de la maquina virtual que uso) listener 1883 10.10.10.129
allow_anonymous true
cd /etc/mosquito/
sudo mosquitto -c moquito.conf
listener 1883 192.168.96.65
: Configura el broker Mosquitto para escuchar en la IP 192.168.96.65
y en el puerto 1883
(puerto por defecto de MQTT).allow_anonymous true
: Permite que cualquier cliente se conecte sin necesidad de credenciales.sudo systemctl restart mosquitto
- Abre una nueva pestaña o sesión de PuTTY.
- Usa las mismas credenciales que utilizaste para configurar "Prmas" (el usuario que usas habitualmente para conectarte a tu máquina virtual).
- Una vez conectado, estarás listo para ejecutar el comando de suscripción.
2. Ejecuta el comando mosquitto_sub
En esta nueva sesión de PuTTY, escribe el siguiente comando para suscribirte al tema casa/cocina/nevera
:
mosquitto_sub -h 10.10.10.129 -p 1883 -t "casa/cocina/nevera"
Ahora, regresa a tu sesión original de PuTTY (o a otra pestaña) y ejecuta el comando para publicar un mensaje en el mismo tema:
¿Qué pasa si no funciona?
- Revisa el puerto:
- Asegúrate de que el puerto 1883 esté abierto en el firewall de Alma Linux.
- Para deshabilitar el firewall temporalmente para pruebas (no recomendado en producción):
- Verifica que Mosquitto esté corriendo:
- Comprueba si Mosquitto está activo:
- Comprueba si Mosquitto está activo:
- Asegúrate de que la IP sea correcta:
- La IP que usas (10.10.10.129) debe ser la misma que configuraste en
mosquitto.conf
.
dnf install jjs
sudo nano /etc/yum.repos.d/nodesource.repo
[nodesource-nodejs]
name=Node.js Packages for Enterprise Linux 8 - $basearch
baseurl=https://rpm.nodesource.com/pub_16.x/el/8/$basearch
enabled=1
gpgcheck=0
sudo dnf install -y nodejs
npm -v
[mosquitto]
name=Mosquitto Repository
baseurl=https://repo.mosquitto.org/mosquitto/centos/8/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.mosquitto.org/mosquitto.org.gpg
sudo dnf update
sudo nano /etc/mosquitto/mosquitto.conf
protocol websocketa
sudo systemctl restart mosquitto
npm install mqtt axios
const mqtt = require('mqtt');
const axios = require('axios');
// Configuración del cliente MQTT
const mqttClient = mqtt.connect('mqtt://localhost:1883'); // Cambia la IP si es necesario
mqttClient.on('connect', () => {
console.log('Conectado a Mosquitto');
// Suscribirse al tema de MQTT
mqttClient.subscribe('casa/cocina/nevera', (err) => {
if (err) {
console.error('Error al suscribirse:', err);
} else {
console.log('Suscripción exitosa al tema casa/cocina/nevera');
}
});
});
// Cuando se recibe un mensaje
mqttClient.on('message', (topic, message) => {
// El mensaje es un Buffer, por lo que lo convertimos a un string
const mensaje = message.toString();
console.log(`Mensaje recibido: ${mensaje}`);
// Enviar el mensaje al script PHP para almacenarlo en la base de datos
axios.post('http://10.10.10.129/guardar_mqtt.php', {
topic: topic,
mensaje: mensaje
})
.then(response => {
console.log('Datos enviados al servidor PHP:', response.data);
})
.catch(error => {
console.error('Error al enviar los datos a PHP:', error);
});
});
mysql -u root -p
USE MQTT_Data;
SELECT * FROM mensajes;
Crear una nueva base de datos
sudo mysql -u root -p
CREATE DATABASE MQTT_Data;
USE MQTT_Data;
CREATE TABLE mensajes (
id INT AUTO_INCREMENT PRIMARY KEY,
topic VARCHAR(255) NOT NULL,
mensaje TEXT NOT NULL,
fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
EXIT;
cd /var/www/html
sudo nano guardar_mqtt.php
<?php
// Datos de conexión a la base de datos
$servername = "localhost";
$username = "root"; // Cambia esto si usas otro usuario de MySQL
$password = "tu_contraseña_mysql"; // Ingresa tu contraseña de MySQL
$dbname = "MQTT_Data";
// Conexión a la base de datos
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificar conexión
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
// Obtener datos enviados por MQTT (por POST)
$topic = $_POST['topic'];
$mensaje = $_POST['mensaje'];
// Insertar datos en la base de datos
$sql = "INSERT INTO mensajes (topic, mensaje) VALUES ('$topic', '$mensaje')";
if ($conn->query($sql) === TRUE) {
echo "Mensaje guardado correctamente";
} else {
echo "Error al guardar el mensaje: " . $conn->error;
}
// Cerrar conexión
$
No hay comentarios.:
Publicar un comentario