Has anyone come up with the cleverest way to cram information into a LoraWan EU868 Uplink payload of 1 byte by also using fPorts 1-223) and perhaps time-synchronization at the node for some sort of time-slot encoding of the data?
Im thinking 1 byte is 256 values x 223 fPort numbers = 57,088 values.
Then node sending timeslots, over 1 hr period, 00, 20, 30, 40, 50 mins past hr (5 slots)
and sub-minute: 00, 20, 40 seconds past the minute (3 sub-slots)
3x5 =15 time slots
(Yes jitter these transit times and distribute off-sets amongst nodes and traffic/SF plan nodes to reduce collisions and overloads at certain times).
Does that give me 15 x 57,088 = 856,320 values per hour with just a 1 byte payload?
An EU868 uplink of 1 byte, at SF7/125KHz, would allow for average of 27 messages per hour per node.
What I am proposing is 1 message per hour, per node. So I think it is pretty much within the requirement.
The basic ideas is to send this information:
Sensor ID 6,
Temp:25C,
Humidiy:40%,
Barometric pressure: 1015mb
We send one unconfirmed uplink message (at least 60 mins after the last, but only if any of the values have changed at the node sensors) and encoded it as follows:
Transmit time: UTC HR:20m:20s (+/-5 seconds) - this special time decodes as 1015-990 = 25/2 which is represented by the 25th 5mb value from UTC HR:00:00 (in steps of 20m and sub-steps of 20 seconds.
fPort 62: - 6 it our sensor ID, 2 is temp tens of degrees C
Payload:54 - 5 is ones of degrees C, 4 is humidity in tens percent.
Three data points in 1 LoraWan Byte per hour, per node.
P
If you do that, your airtime is overwhelmingly determined by the 13 bytes of protocol overhead. Eg, at SF-10 a 0-byte payload costs 289 ms, overwhelmingly consisting of overhead.
There is a funny artifact of the 4/5 coding however, in that you can put 1 payload byte in with the protocol headers and still be at 289 ms.
If you put two bytes in, your at 330 ms - seemingly doubling your capacity at 10% cost.
But due to the 4/5 coding groups, it actually turns out that you can send 6 bytes and still be at 330 ms - it’s only when you get to the 7th byte that you add another coding group and the airtime bumps up again.
Efficient packing within packets is useful, but you’re better off sending a 6 byte packet less frequently, than playing games to try to get in 1 byte especially if those games in any way increase the number of times you need to transmit.
(it does get a bit more complicated if MAC commands are crammed into the FOpts)
Thanks, Interesting.
im really trying to find a best fit between Cayenne LPP and a custom payload. i need my data to be maximum 60 minutes old for my application.
I guess I will go for packed LPP and using FPorts for Sensor ID