Bueno en la clase pasada desde el ZetaP llamábamos a la función que terminamos de crear se UEFI y se
completaba el proceso de conexión a nuestra red WiFi.
Pero lejos estamos todavía de conectarnos a nuestro servidor DM QTTF.
Entonces tendremos que empezar a hacer eso debajo de esta línea.
Si el código se sigue ejecutando es porque se conectó de manera exitosa a wifi.
Entonces con esta línea que es Klint punto z Server vamos a pasarle el servidor la dirección donde teníamos
guardado esto no voy a subir acá ahí está estamos pasando ese Extrem y le estamos pasando el puerto
al que se tiene que conectar.
Era el 12 4 80
ojo.
Todavía no nos estamos conectando con esta línea.
Con esta línea lo que hacemos es sestear en el servidor de nuestro cliente mejor dicho perdón las variables
a las que se va a tener que conectar las credenciales.
Vamos a aceptar algo muy importante también que es la función callback la función callback es una función
a la que vamos a llamar cada vez que el servidor llame a nuestra puerta.
Esto es algo que nos puede sonar raro pero se acuerdan de un detalle muy importante de los servidores
M QTTF los servidores M QTTF pueden ellos iniciar la conversación conmigo.
Entonces necesito dejar algún servicio o algo atento 24 7 esperando a que si en algún momento llega
una conexión a nuestro dispositivo tengamos preparado alguna herramienta para ver qué hacemos con esto
que llegó sin previo aviso en cualquier momento puede llegarnos un mensaje bajo un tópico como vimos
en una de las primeras clases de QTTF.
Bueno necesitamos saber qué vamos a hacer cuando eso suceda.
Entonces lo que hacemos aquí es decirle al servidor perdón al cliente que cuando el servidor llame a
nuestra puerta cuando el servidor nos manda alguna información la que fuere queremos que se ejecute
de inmediato la función callback.
Bueno acá yo les llamé así le podría poner otro nombre.
Esta función aclaró Todavía no existe.
Yo voy a tener que crearla.
Tiene algunas particularidades así que vamos a hacer eso ahora vamos a crear la función callback la
vamos a poner a ver lo vamos a poner arriba de Zetapé UEFI por aquí esta función que insisto se llama
Callback ahora por una cuestión de convención podría tener cualquier nombre.
Tiene algunas particularidades no puede ser como a mí me plazca.
Cuáles son estas particularidades y son que la función va a recibir tres parámetros y me vas a decir
cómo pero si acá llamamos a la función y no le pasabamos nada no momento acá no lo estábamos llamando
le estamos diciendo el cliente de que cuando llega información hay que ejecutar o llamar a esta función
pero no es esta línea la que le va a llamar la librería por detrás la va a llamar y le va a pasar estos
parámetros.
Por ende yo tengo que recibirlos aquí por eso dentro de los paréntesis estoy declarando estas tres variables
que no pueden faltar.
Bueno esta función cuando sea llamada en cualquier momento de imprevisto sabemos que siempre va a recibir
en primer lugar un tópico bajo qué tema viene lo que me están mandando porque yo me puedo suscribir
a múltiples tópicos a múltiples temas no necesariamente a uno.
Entonces voy a necesitar saber esta información que viene quién me la manda o bajo qué tópico está llegando.
También tenemos el payload o la carga útil la información en sí el valor bajo el tópico temperatura
tiene un valor que son 37 obviamente serán grados supongo después muy importante para poder recuperar
ese valor es el tamaño del dato.
Entonces sabiendo esto aquí la función que se abre está vacía todavía vamos a empezar a escribir el
contenido de esta función.
Mira tenemos tres líneas nuevas aquí voy a imprimir por consola.
Mensaje recibido desde o podría poner bajo el tópico mejor va a tener más sentido y voy a imprimir el
tópico.
No tengo que convertir lo estrechen no me preocupa demasiado porque es una cadena de caracteres así
que ningún problema veamos luego imprimo esto sería lo mismo que poner seria el punto LN estoy dejando
un espacio o un renglón en blanco listo ya tenemos el tópico y lo hemos sacado por pantalla.
Obviamente yo acá adentro podría tener una serie y seguramente más adelante lo vamos a tener de IFS
y puedo decir dependiendo si el tópico es una cosa hago esto y si el tópico es otra cosa hago otra cosa.
Por ahora no nos interesa simplemente vamos a recibir el tópico lo mostramos en pantalla pero ahora
viene la parte interesante tengo que recibir la carga útil entonces Bono cómo vamos a hacer para poderla
extraer de la siguiente manera como la carga útil viene en un array de bits no va a ser algo que lo
podamos hacer de una sola línea no es algo que se venga medio cocinado en una string.
Nos encantaría que así fuera pero tampoco es para que nos asustemos.
Vamos a hacer lo siguiente Vamos a crear un foro con la magia de Atom.
Vamos a tratar de recuperar esta estructura que ya nos propone a Tom Ford o poner Hint corregimos ese
poquito y vamos a crear un fork que arranque en cero se va a ejecutar mientras la cuenta sea menor a
qué.
Y acá viene la necesidad o para qué me pasan el tamaño de la información.
Vamos a hacer un fork que recorra bit por bit el tamaño total del payload.
Entonces acá vamos a poner que el foro va a funcionar o va a iterar siempre y cuando sea menor que el
tamaño de la información que vamos a rescatar bit por bit.
Vamos a ir recuperando entonces vamos a usar para imprimirlo en pantalla pero lo podremos guardar ya
vamos a ver cómo hacemos eso más adelante en una variable entonces acá bit por bit.
Yo creo que seria el punto print.
No voy a ser LN porque quiero que cada letra de lo que nos esté llegando salga una al lado de la otra.
No quiero que salga vertical una letra abajo de la otra.
Entonces simplemente pongo print.
Como es un bait lo que me llega es un número.
Ese número representa una letra tengo que transformar el bit en una letra.
Entonces lo vamos a castigar digamos con Char bailout y le pasamos la posición que estamos leyendo del
payload en este momento en qué posición estamos ahora en la posición y por qué.
Y va a ir incrementándose.
Vuelta por vuelta y vamos a ir recuperando letra por letra del mensaje.
Cuando termine este foro es porque el mensaje ya ha sido leído en su totalidad así que muy tranquilamente
podemos ahora nosotros hacer seria el punto print.
LN dejó esto en blanco para generar un renglón sin nada y de anotarme que ya se recibió la totalidad
de nuestro mensaje.
Bueno ya he escrito mucho código sin revisar si está todo bien.
Así que veamos en la línea 25.
Bueno desconozco en qué momento se me transformó este INT en print así que esto me soluciona este error
y seguramente este que acá grabo y probemos de nuevo
en la 27.
Bueno se ve que he estado trabajando mucho en Python y arrastro el problema de los punto y coma ahora
veamos bien.
Ahora ya va a compilar así que tenemos esto listo.
Lamentablemente todavía no lo podemos probar por lo menos sabemos que no nos da error.
No es un detalle menor así que vamos a seguir avanzando en la próxima clase.