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'