¿cuanta gente a visto el blog?

MQTT

 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 dnf install mosquitto -y

sudo dnf install -y gcc-c++ make cmake


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 dnf install mosquitto -y


sudo systemctl enable mosquitto
sudo systemctl start mosquitto
sudo systemctl status mosquitto

sudo firewall-cmd --zone=public --add-port=1883/tcp --permanent
sudo firewall-cmd --reload

mosquitto_sub -h localhost -t "test/topic"

mosquitto_pub -h localhost -t "test/topic" -m "Hola, Mosquitto!"
sudo dnf install mosquitto mosquitto-clients -y
sudo nano /etc/mosquitto/mosquitto.conf


(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?

    1. 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):
        sudo systemctl stop firewalld
    2. Verifica que Mosquitto esté corriendo:
      • Comprueba si Mosquitto está activo:
        sudo systemctl status mosquitto
    3. 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


    node -v
    npm -v


    sudo nano /etc/yum.repos.d/mosquitto.repo

    [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

    listener 9001
    protocol websocketa

    sudo systemctl restart mosquitto

    npm install mqtt axios

    sudo nano /var/www/html/mqtt_server.js

    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);
      });
    });

    node /var/www/html/mqtt_server.js

    mosquitto_pub -h 10.10.10.129 -p 1883 -t "casa/cocina/nevera" -m '{"temp": 30}'

    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