[Tutorial] ¿Qué tipo de data puede entrar en los mensajes de 12 bytes de la red @Sigfox?

Una de las preguntas recurrentes que se hacen los usuarios de la red @Sigfox es qué tipo de data y cuánta se puede enviar en cada mensaje

Para responderla, es necesario entender bien estas tres cosas:

LO PRIMERO —lo más importante—, es saber que el volumen de data que un objeto puede enviar en cada mensaje, a través de la red Sigfox, es de 12 bytes.

LO SEGUNDO, es que los objetos no tienen por qué enviar 12 bytes. Es solo un máximo permitido por mensaje. Por ejemplo:

  • Se puede reportar solo un valor de radar de velocidad usando un único byte.
  • Se puede incorporar distintos valores (GPS, temperatura, presión y humedad, por citar cuatro) en menos de 12 bytes.
  • Incluso se pueden enviar mensajes de cero bytes, donde el mensaje mismo es la comunicación: como un latido de corazón para decir que todo está ¡OK!

LO TERCERO, es que el usuario es libre de componer su marco como desee, incluso en el nivel de bits. Por ejemplo: no es necesario utilizar un byte completo para codificar su valor si basta con 4 bits.

Ahora bien: ¿qué podemos hacer encajar en esos 12 bytes que tenemos por mensaje? O, en otras palabras, en términos de valores, ¿qué significan esos 12 bytes?

12 bytes son por ejemplo:

  • 2 coordenadas de GPS de hasta 3m. de precisión
  • 6 informes de termómetros de laboratorio dentro del rango  -100°/+200° con una precisión de 0,004°
  • 12 informes de radares de velocidad de hasta 255 Km/h
  • 96 Informes para hacer cambios como: ajustar a noche/día, caliente/frío, encendido/apagado.

Utilizar solo la cantidad necesaria de datos en tales casos permite que el objeto envíe menos bytes y, de esta forma, una señal de radio más corta y con menos energía, mejorando así la duración de la batería.

Otro ejemplo lo podemos encontrar en este intercambio de la plataforma ask.sigfox.com

Como pueden ver, un usuario tiene distintas dudas y busca una respuesta. Quiere saber si hay una manera de incorporar todos los valores GPS, temperatura, presión y humedad en una sola carga (mensaje). Y también desea saber si es posible trabajar en un único byte en el nivel de bits y enviarlo a través de la red sigfox.

La respuesta del especialista es la siguiente:

“Usted es libre de componer su marco como desee, hasta el nivel de bits. No es necesario utilizar un byte completo para codificar su valor si 4 bits son suficientes, por ejemplo. En cuanto a su ejemplo, se trata de empaquetar todos estos valores dentro de 12 bytes:

  • Temperatura: se trata de la precisión requerida. 6 bits sería suficiente si sólo necesita precisión en el grado, dentro de un intervalo de -20 / 40 ° C. Un byte completo daría espacio para 256 valores diferentes. Suficiente para una precisión en el decimal.
  • Presión: Una vez más, depende de la precisión. Mi consejo sería utilizar un desplazamiento, ya que el valor estará alrededor de 1000mbar. No conozco su caso de uso, pero si asumo que la presión estará en el rango 900-1200 mbar, puede reducirlo un poco para que encaje en 1 byte (256 valores), aplicando un offset de 900 y algo.
  • Humedad: normalmente un porcentaje (%), 7 bits (0-127) debería ser suficiente si no está buscando decimales TL;

Resumiendo: 9 bytes deberían ser suficientes para almacenar estos 4 valores”

Como pueden ver, el tipo de data que puede entrar en los 12 bytes de cada mensaje no solo es variado, sino que se permiten distintos valores en un solo mensaje sin tener que usar, al máximo, los 12 bytes.