¿Existe un protocolo de mensajes común para los datos del sensor además de MQTT-SN?

Quiero comunicar varios datos de sensores en una red de sensores.

Encontré MQTT y MQTT-SN como protocolos adecuados para eso. Este último es más adecuado para redes de sensores con soporte para dispositivos durmientes, comunicación predefinida, alternativas a TCP, etc. ( https://stackoverflow.com/a/29083422 )

Sin embargo, ambos son independientes de la carga útil. El mensaje enviado puede ser de formato y contenido arbitrario. ¿Existe un formato común específico para datos de sensores con un tamaño reducido?

Me gustaría comunicar un valor de medición de una unidad y dimensionalidad específicas. Tal vez con una tolerancia especificada/error esperado. Podría crear un formato personalizado y simplemente meterlo en la carga útil, pero no quiero reinventar la rueda y más bien usar formatos existentes, si es que existen. Eso también aseguraría la compatibilidad con otras redes que usan este formato.

encontré

  • una propuesta experimental para una extensión de XMPP que admite cosas como Unito Timestamp. Sin embargo, la sobrecarga del formato basado en XML lo hace indeseable para mi aplicación.

    <message from='device@example.org'
             to='client@example.org/amr'>
       <fields xmlns='urn:xmpp:iot:sensordata' seqnr='1' done='true'>
          <node nodeId='Device01'>
             <timestamp value='2013-03-07T16:24:30'>
                <numeric name='Temperature' momentary='true' automaticReadout='true' value='23.4' unit='°C'/> 
             </timestamp>
          </node>
       </fields>
    </message>
    
  • Home Assistant , que especifica un formato que también tiene unit_of_measurementy value_template. Pero se trata más de extraer datos de mensajes MQTT arbitrarios en un formato de la plataforma en lugar de especificar un formato para el mensaje MQTT en sí. De hecho, la gente escribe extensiones para usar JSON en el mensaje MQTT.

¿Simplemente no existe un formato de mensaje ligero estándar (o al menos común) para los datos del sensor?

Respuestas (1)

Los tipos de medios para el lenguaje de marcado de sensores (SENML) pueden ser de su interés.

Capítulo 6.1.1. te da un ejemplo:

{"e":[{ "n": "urna:desarrollo:ow:10e2073a01080063", "v":23.5 }]}

Parece que esta es la versión más reciente. Al principio me asusté al ver el formato JSON, pero también está EXI, que parece bastante compacto y adecuado para incrustado. Parece que solo hay unas pocas bibliotecas para esto.