Skip to content

IoT - messaging

For subject/topic overview see nats.

Protocols

google protocol buffers over Hardwario radio

  • message limit: 50 bytes (60 B for topic+payload+headers)
  • split data by 32 B packets with 2 B header
  • 34 B base64 encoded = 46 B
  • max buffer length = 32 * 256 = 8 kB
  • MCU implementation: https://github.com/nanopb/nanopb

packet

header: - 8 b index (0-255) - 7 b ID (0-127) - 1 b terminator (1=last part of message)

    | 7 6 5 4 3 2 1 0 |
00: | I I I I I I I I | 8b part index
01: | t i i i i i i i | t=terminator (1=last part of message), i = 7b message ID
02: | d d d d d d d d | 32×8b message data
...
21: | d d d d d d d d |

Debugging

useful commands

Prerequisities are locally installed NATS CLI and/or mosquitto.

MQTT

mosquitto_sub -L 'mqtt://piks01/node/#' -v
mosquitto_pub -h piks01 -t 'node/led-pwm:schodiste:0/led-pwm/-/trigger/set' -m '1'

NATS

nats --server nats://piks01 --creds ~/.local/share/nats/nsc/keys/creds/memory/APP/app.creds sub 'node.>'
nats --server nats://piks01 --creds ~/.local/share/nats/nsc/keys/creds/memory/APP/app.creds sub --stream iot_node --last
nats --server nats://piks01 --creds ~/.local/share/nats/nsc/keys/creds/memory/APP/app.creds pub 'node.led-pwm:schodiste:0.led-pwm.-.trigger.set' '1'