This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[SOLUCIONADO]Raspberry Pi no ve mensaje ESP8266
#1
Hola a todos de nuevo!

Sigo trasteando de nuevo con los módulos ESP8266 pero llevo varios días parado con una cosa sencilla pero que no me deja avanzar.

Me he comprado una RPi4 para tenerla como servidor de los nodos que quiero integrar. Le he instalado todo lo que indica Grafisoft en sus tutoriales:
  • Mosquitto + modificación fichero .conf y creación de passwd (user: jorge_iot, pwd: jorge_iot).
  • Influx + creación usuario: $influx -execute "CREATE USER "telegraf" WITH PASSWORD 'telegraf' WITH ALL PRIVILEGES;"
  • Telegraf + modificación fichero .conf
           Inputs.mqtt:
                    servers = ["scheme://localhost:1883"]
                    qos = 0
                    topics = [
                        "telegraf/+/mem",
                        "sensors/#",
                        "#",
                       ]
                   persistent_session = true
                   client_id = "telegraf"
                  username = "jorge_iot"
                  password = "jorge_iot"
                  data_format = "influx"

               outputs.influxdb:
                  [[outputs.influxdb]]
                     urls = ["http://localhost:8086"] # required
                     database = "sancris_sensors" # required
                     retention_policy = ""
                     write_consistency = "any"
                     timeout = "5s"
                     username = "telegraf"
                     password = "telegraf"


Yo diría que la configuración está bien realizada, porque además puedo subscribirme y publicar desde diferentes terminales y máquinas.

En la figura se ve como desde el ESP se escribe en el tópico sensors el valor 100 (cada 3 segundos). Y desde una terminal el mismo tópico pero con valor 200. Sin embargo, en la RPi solo leo el mensaje con valor 200.

[Imagen: Captura-de-pantalla-2020-04-24-a-las-10-08-54.png]

Además, hay algo raro porque el ESP8266 está creando su propia red, cosa que antes nunca había visto al utilizar otros nodos idénticos, y he probado con 2 módulos y los 2 se comportan igual.

[Imagen: Captura-de-pantalla-2020-04-24-a-las-9-57-05.png]

Sin embargo, el router me dice que el nodo si está conectado a la red, e incluso puedo hacer ping a la dirección que le asigna.

El código de Arduino que genera el mensaje que envía es el siguiente, que además es el que desarrollado por Grafisoft en API_MQTT.h
Código:
     void enviarDato(String Dato, String BName, String NName, String TipoDato) {
      //String BName = "sensors";
      //String NName = "consumo";
      //String TipoDato = "Watts";
      //Creamos el topic. Sera del estilo: "BName/NName/TipoDato"
      TopicMQTT = BName + "/" + NName + "/" + TipoDato;
      //Creamos el mensaje. Sera del estilo: "NName TipoDato=";
      String payload; //Variable para contener la info de la trama que se envia.

      int consumo = 100;
      char valConsumo[8];
      dtostrf(consumo, 3, 1, valConsumo);

      payload = ""; //Limpiamos la variable.
      payload += NName;
      payload += " " + TipoDato + "=";
      payload += Dato;
      //Enviamos la trama via MQTT.
      client.publish((char*) TopicMQTT.c_str(), (char*) payload.c_str());
      Serial.print(TopicMQTT); Serial.println(payload);
      delay(3000);

}

La verdad que no sé donde puede estar el fallo en la configuración,  lo que más me llama la atención es que el ESP esté creando su propia red, no sé si el fallo puede estar por ahí,  pero no logro encontrar el porqué.
  Responder
#2
No estas creando un punto de acceso directamente con la RPI?

Puedes cargar algun ejemplo en el ESP8266 que te haga un ping a google o te muestre una web. Ejemplos sencillos, solo para comprobar que el ESP se conecta a la red que quieres y puede recibir info.
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#3
Bueno, ya he descubierto lo de la red que crea el ESP, parece ser que cuando no consigue conectarse a la red que le indicas, entonces el crea la suya propia.

Probé con el ejemplo de WifiScan, pocas veces detectaba la red y cuando la detectaba era con muy poca intensidad. Así que he acercado el router y se ha solucionado de momento.

La red que creo es a través de un router y tanto la RPi como los nodos se conectan a la misma wifi, la RPi no crea el punto de acceso.

También he modificado la configuración de Mosquitto para que acepte las conexiones anónimas, que releí la entraba y deben de estar de ese modo.

Sin embargo, mosquitto sigue sin recibir los mensaje del ESP
  Responder
#4
Te recomiendo que crees el AP con la RPI, porque los routers que tenemos en casa son muy malos y a poco que tengan varios dispositivos conectados empiezan a hacer tonterias.

Le indicas bien la IP de la rasp al ESP?
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#5
Es un router TP-Link comprado para esta aplicación, así no tengo que conectarme expresamente al AP de la RPi para poder modificar o consultar algún dato.

Sí, las IPs están correctas, las tengo puestas como fijas, verificadas con el comando "hostname -I"

Sin embargo, desde un ordenador abro el programa MQTT.fx, envío los mensajes y la RPi los recibe correctamente.
  Responder
#6
Has mirado en el codigo del ESP que no estes intentado conectar con user y pass al mosquitto?

El debug del ESP te muestra el topic, aunque creo que estas mirando todo lo que llega al mqtt, no un topic concreto.
Al habilitar el anonimo del mosquitto has reiniciado el servicio?
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#7
Sí, en el ESP solo publico el tópico, no envío usuario o contraseña.

Sí, en mqtt estoy leyendo todo lo que llega.

He reiniciado tanto el servicio como la RPi por si acaso.

Por cierto, en este punto telegraf ni influx no participan para nada no?
  Responder
#8
Telegraf, influx, y grafana no participan si no llega al servidor mqtt algo.

Estas indicando el puerto correcto al ESP. Pocas cosas se me ocurren ya. Has actualizado la libreria de MQTT y/o el core del ESP? Asumo estas trabajando con PlatformIO (que igual es mucho asumir).
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder
#9
El puerto al que se conecta el ESP lo indico de esta manera:

const char* mqtt_server = "192.168.1.11";
client.setServer(mqtt_server, 1883);

Estoy probando tanto en Arduino IDE como en VSCode+PlatfomIO

La librería de PubSubClient es la de Nick O'Leary 2.7.0

Parece ser que la solución ha sido esta:

if (!client.connected()) {
reconnect();
}
client.loop();

Sigo haciendo pruebas mientras, pero parece que ahora la RPi si lee los mensajes
  Responder
#10
Al final faltaba ese fragmento de código solo?
-> Mi CNC de escritorio CNCDesktop 500 -> https://www.spainlabs.com/foros/tema-Fresadora-Desktop-CNC-500
-> Laboratorio de Fabricación Digital Maker www.lowpower.io 
--> Twitter: https://twitter.com/Grafisoft_ES  | IG: https://www.instagram.com/lowpowerio/
  Responder


Posibles temas similares…
Tema Autor Respuestas Vistas Último mensaje
  ESP8266 queda inaccesible juandavid8a 4 2,671 16-02-2023, 07:40 AM
Último mensaje: ruben2023
  Raspberry y módulo de bluetooth l522 0 593 09-06-2021, 05:12 PM
Último mensaje: l522
  CONSULTA Clones ESP32 y ESP8266 Anje 5 1,758 15-11-2020, 11:14 AM
Último mensaje: grafisoft
  [SpainLabsIoT2018] Caso real: Nodos ESP8266 grafisoft 78 26,394 09-04-2020, 03:33 PM
Último mensaje: grafisoft
  ESP8266 callback + deepSleep silth 9 3,402 26-12-2019, 12:51 PM
Último mensaje: grafisoft