Spanish MQTT no conecta

Jannete

Member
Saludos a todos.

Estoy intentando hacer una actividad para niños de primaria disfrazada de una especie de juego.

Mi idea es implementar mi telefono como servidor, y crear una red Hotspot en el (ya que no hay WiFi en donde la utilizaria), a mi red se conectarian los alumnos, abririan su aplicacion y se conectarian a ella (es un poco confuso explicarme).

Mi servidor seria para lanzar comandos hablados (rojo, azul, gato, pez, etc), los alumnos tocarian la figura correspondiente en su dispositivo y este enviaria la respuesta a mi servidor, asi se irian guardando los aciertos de cada quien y al final diria quien aserto mas veces.

Primero pense en Bluethoot, pero el Bluethoot no tendria la capacidad de almacenar a todos a la vez, el Asyncstreams por sockets me parece que tampoco entra alli, asi que encontre el MQTT, esa parece la mejor solucion.

Aqui viene el problema, descargue el ejemplo y librerias, instale en un Android kitkat, en una smart tv (android 6), en un LG Nexus con android 5.0 y no logro hacer ninguna conexion. Ya intente los 3 como servidor y nada funciona.

Cambie de red, use un hotspot y nada.

El servidor abre en los 3, y supuestamente esta en espera de alguna conexion, pero al poner la ip y seleccionar Client, al dar click en el boton no conecta ni hace nada. A veces regresa un Toast "ErrorConnecting,(ErrrnoException)libcore.io ....... ConecctionRefused". Eso en todos los dispositivos.

Probe con el MQTT "normal" y con el ejemplo para autoconectar y en ambos casos no tengo una conexion.

De antemano agradezco la ayuda.

Saludos!
 

José J. Aguilar

Expert
Licensed User
Hola Janette:

No he probado nunca MQTT en un teléfono como servidor, quizás otros puedan ayudarte con eso.
Sólo se me ocurre que quizás este proyecto pueda servirte de inspiración, aunque creo que usa un servidor MQTT externo:
 

José J. Aguilar

Expert
Licensed User
Y ahora que lo miro, si miras los ejemplos de Erel de chat, creo que uno de los móviles sí actúa como servidor MQTT

 

Jannete

Member
Hola Janette:

No he probado nunca MQTT en un teléfono como servidor, quizás otros puedan ayudarte con eso.
Sólo se me ocurre que quizás este proyecto pueda servirte de inspiración, aunque creo que usa un servidor MQTT externo:

Antes que nada muchas gracias por la respuesta.

Se ve bien, excepto que a lo que veo, usa una conexion 1 a 1, lo que me impediria trabajar con varios dispositivos a la vez. El ejemplo del MQTT esta perfecto, dado que enviaria cadenas de texto que se traducirian como comandos, lo que no entiendo es porque el ejemplo (sin modificar nada), no me funciona a mi.

Seguire indagando. Muchas gracias de nuevo.
 

EnriqueGonzalez

Well-Known Member
Licensed User
mi telefono como servidor

de acuerdo a Erel, la ultima versión de MQTTBroker no es compatible con B4A
 

Jannete

Member
de acuerdo a Erel, la ultima versión de MQTTBroker no es compatible con B4A

Muchas gracias. Lo tome en cuenta antes de descargar las dependencias.

Mis dos librerias estan asi:

jMQTT: 1.01
jMqttBroker: 1.04

Tengo instalado el b4a 9.80.

Tendre que subir a 9.90 BETA para lograr que el ejemplo funcione?
 

Jannete

Member
de acuerdo a Erel, la ultima versión de MQTTBroker no es compatible con B4A

Agrego:

En la publicacion dice "jMQTTBroker v2 based on moquette v0.12 (December 2018) is available here: www.b4x.com/b4j/files/jMqttBroker2.zip
Unlike v1, the new version is not compatible with B4A. "

Lo que quiere decir que la version 1 si es compatible (de hecho es la que tengo), un amigo que me recomendo b4a me paso un ejemplo que tenia desde 2017, igual no conecta.
 

Jannete

Member
Hola Janette:

No he probado nunca MQTT en un teléfono como servidor, quizás otros puedan ayudarte con eso.
Sólo se me ocurre que quizás este proyecto pueda servirte de inspiración, aunque creo que usa un servidor MQTT externo:

Descarge la Beta de b4a para poder pobar este codigo, y como me temia, abre una conexion 1 a 1, lo que no permitiria trabajar varios dispositivos a la vez.

Ademas de eso, al instalar en KitKat me da error por el SDK (el minimo es 21), aun asi me brinque la regla, y baje el minimo a 19, compile y "medio funciona".

Tengo dos dispositivos, un KitKat y un Lollipop.

El Kitkat muestra todo de forma correcta, excepto el letrero que indica que no hay conexion. Por su parte el Lollipop no recibe los datos del Kitkat.

Ademas tengo el Debug en el kitkat, y en los logs me aparece:

java.lang.IllegalArgumentException: Socket address unresolved: null:1395

No se si tenga que ver Kitkat vs Lollipop.

El que no tenga soporte para Kitkat podria ser un problema, ya que hay alumnos con ese sdk. Por otro lado, como comente, es una conexion 1 a 1.

Curioso lo que sucede que este ejemplo y con el MQTT, ya que por ejemplo, probe el ejemplo de FileTransfer (via sockets) y funciona perfecto. Lo probe hace tiempo en Lollipop, Kitkat, Marshmallow y Oreo, y en ninguno me ha dado batalla.
 

José J. Aguilar

Expert
Licensed User
Intenté probar el ejemplo de chat original que estabas probando, puse en mi móvil el servidor, pero el emulador no me anda y no puedo probar con otro para probar el chat.
Con MQTT deberías poder conectar varios dispositivos sin problemas. Podrías probar poniendo el servidor MQTT en tu PC o en la nube (hay algunos servidores gratuitos) para ir probando al menos la parte de las preguntas y eso. Ya después, cuando soluciones el tema del servido en tu móvil tendrías la parte hecha.

En cuanto al ejemplo de Tic Tac Toe, Peter Simpson es un tío bastante apañáo, si quieres le pregunto si hay alguna forma de hacer que fuera muchos a 1, entiendo que UDPSocket debería poder hacerlo, pero no he trabajado nunca con ese protoclo...

saludos,
 

josete

Member
Licensed User
Tampoco conozco mqtt en detalle y cuando te refieres a que no hay wifi no se si te refieres a que no hay conexion a internet,pero si dispones de un router wifi de alguna compañia que no uses o de segunda mano,podrias hacer una red wifi(la conexion a internet no es necesaria para una red local) ,de forma que el broker se podria instalar en un pc o incluso raspberry o similar (mas sencillo que en mobil) y dejar para la aplicacion mobil solo la publicacion y suscripcion a los topics necesarios.
 
Last edited:

Jannete

Member
@José J. Aguilar , me baje el ejemplo de b4j (es servidor), abri el ejemplo en el celular, y la aplicacion Java tampoco conecta (me sale Error Connecting: (ConnectException) java.net.ConnectException: Connection Timed out:connect.

Para mi que algo anda mal con el ejemplo. Probe conectando ambos dispositivos en el Wifi de la casa, con el del vecino, con un hotspot y nada.

@josete efectivamente, no hay conexion a intenet ni modem ni nada similar, igual podria usar otro telefono a modo de router, pero al final no conecta la aplicacion (aun pobando con WiFi en ambos dispositivos).

Edito: Si instalo en Lollipop + ,funciona la conexion entre B4A y el cliente de B4J. El poblema es KitKat, es problema porque es mi telefono del diario.
 
Last edited:

edgar_ortiz

Active Member
Licensed User
Hola Jannete,

SI tienes una "laptop" y un "router"...

una solución "sencilla" es lo que propone @josete... en tu laptop puedes instalar un "WAMP" server y controlar el "envio" de datos.

Saludos,

Edgar

P.D.:
Si tu proyecto es SIN fines de lucro, con GUSTO te apoyo para lograr una solución.
 

José J. Aguilar

Expert
Licensed User
puedes decirnos qué ejemplo exactamente estas probando?
Parece que hay gente que tenia problemas con la version de android según qué ejemplo.
¿has visto esta parte del hilo?
 

Jannete

Member
@edgar_ortiz , muchas gracias. De hecho no seria necesario usar un router, hay un codigo bat (que a veces uso) para crear un hotspot en una laptop (sin perder la conexion a internet).

Pero la idea es llevar a la escuela solo el celular que es algo de todos los dias, podria ponerlo en modo hotspot como servidor, crear los topics, y suscribir y responder a ellos con otros topics en los clientes.

El proyecto es sin fines de lucro, ni siquiera llegaria al play store.

@José J. Aguilar , probe ambos ejemplos, el "basico" y el que tiene el auto discovery, las librerias que tengo son las ultimas (el broker es el v1, ya que el v2 no es para basic), esa es una respuesta al problema en la publicacion que me mandas, pero a diferencia de, a mi no me sale el error tan largo, solo no me conecta, y de hecho el problema creo va mas alla, con el ejemplo del tictactoe pasa lo mismo.
 

Jannete

Member
Muchas gracias @José J. Aguilar, pero no creo que tenga que subir nada, ambos ejemplos estan aqui:



Los he bajado y compilado sin mas, Pantalla Android 6 con Telefono Android 5 (o los dos anteriores con el cliente B4J), conecta, Android Kitkat y Android 5 o 6, (ncluye el cliente de B4J), nada.
 
Top