Selecting an IoT radio technology

Radio Technologies are advancing fast, and are full of tradeoffs.

Below is a chart about long range technologies from silex technology.

1 Like

Simon Slupik has written much over the years contrasting Bluetooth with other IP based radio standards:

The two main short range standards (Bluetooth mesh and Zigbee) are different in that Bluetooth is not IP based and does not require a gateway. Some of Simon’s thoughts:

The reason for not running IP on capillary mesh networks is capacity. Non-IP transports are more efficient. Packets are more compact and the network can accommodate more of them. That translates directly into how many nodes (or, more precisely, how many messages per second the network is able to carry). More compact packets take less time on air, so more of them can fit on a single frequency at a given time period. Shorter packets also mean it takes less energy to generate and transmit them, so, for example, the transmitter may never need any permanent power source or a battery. Energy harvesting transmitters work like magic: a switch on a wall harvests kinetic energy when pressed. A sensor on a wall has a small photovoltaic panel sufficient to power it forever. An asset tag harvests radio noise and transmits an encrypted ID periodically.They are all magical products: wireless, no power required, work forever and do work reliably. Nothing like that is available today running an IP stack. IP requires more energy.

Can aircraft carry shipping containers? Sure they can. Are we using aircraft to carry shipping containers? No, because it is not efficient. Does it take extra effort to pack cargo into anther type of container that aircraft can carry more efficiently? Yes it does. It is called ULD, or Unit Load Device. Overall it all makes sense, from the capacity and power budget perspective. And some smaller aircraft do not use any containers, as they are simply too small to allow for such packaging. See the analogy?

Wireless is different. It is different because of the physics that define behaviors of radio transmissions. Applying wired way of thinking to wireless is just wrong. You cannot attach wings to a train and expect it to fly…

On the Zigbee side, you’ve had groups for years working on IP based solutions – Thread, Chip, and now Matter. There are big names behind these groups so something will likely eventually happen …

Some quotes from the Tale of five protocols paper:

Out of all low-power, low-bandwidth communication standards, Bluetooth has the best radio. Period. This might seem like a bold statement so we’re certainly open to discussion, but the facts really do speak for themselves. And why is the radio performance so important? Because of what the IoT is expected to become. Even today, when we think of e.g. commercial smart lighting systems of the future, one thing is certain - we need to think big. A smart office building of the future is a different story than a smart home of the future. And if Gartner predicts 500 smart nodes in a smart home, then how many smart nodes we should be prepared for in a smart office building? Thousands of them, including LEDs, occupancy sensors, photosensors, and looking even further ahead - potentially also all the smart components of e.g. the HVAC infrastructure. To get prepared for that, we need a technology that can provide extremely fast and reliable transmission of data, even in a network with thousands of nodes.

In terms of network robustness, Bluetooth Smart is head and shoulders above the rest. The secret to its performance is the fact that the protocol has been optimized to transport very large amounts of very small data packets. Exactly what is needed in IoT applications. First of all, it is capable of transferring data with a rate of 1 Mbit/s (and higher, but we’ll get to that later on). With its maximum throughput of a mere 100 kbit/s, Z-Wave can offer only one-tenth of Bluetooth’s data rate. All of the 802.15.4 radios, including ZigBee and Thread, are also significantly less efficient in this regard, as their maximum data rate amounts to 250 kbit/s. As for data packets’ size, it must be remembered that each data packet includes payload and overhead. The former is the essential data carried within a packet – the core message that is conveyed so that other network nodes can act upon it. The over-head is all the additional information that is required to make the message reach its destination. This includes security mechanisms, certain networking procedures, potentially also some sort of routing data (if a routing technique is applied). …

A quick look at matter’s Github:

Seems to be fairly active:

With contributors from a number of companies.

Documentation seems fairly sparse considering the effort that is being put into this project. tokei shows ~1.3M lines of mostly C++ code:

 Language            Files        Lines         Code     Comments       Blanks
 AsciiDoc                2          961          719           16          226
 GNU Style Assembly      1          241          126          104           11
 Autoconf                7           38           38            0            0
 Batch                   5          347          259            0           88
 C                     148        98130        64298        24011         9821
 C Header             1548       420192       262314        97205        60673
 CMake                  64         5140         3395         1019          726
 C++                  1133       457051       346424        44369        66258
 C++ Header              6          910          296          457          157
 Dockerfile             25          988          672          193          123
 Groovy                  1           71           64            1            6
 HTML                    3           78           76            0            2
 INI                     8          234          205            3           26
 Java                   74        38490        31708         1404         5378
 JavaScript             23         4193         2974          727          492
 JSON                   33         1568         1568            0            0
 Kotlin                 36         4441         3514          361          566
 Makefile                6          634          276          267           91
 MSBuild                 1            8            8            0            0
 Objective-C            21        53418        41203          524        11691
 Objective-C++          28        64931        57670         1725         5536
 Perl                    1           97           81            2           14
 Prolog                  5           84           72            0           12
 Protocol Buffers        7          540          416           59           65
 Python                191        70232        54414         3390        12428
 Shell                  78         5442         2913         1656          873
 SVG                     2          315          312            2            1
 TCL                     2            9            9            0            0
 Plain Text             24         4192            0         3215          977
 Visual Studio Pro|      3          428          428            0            0
 Visual Studio Sol|      1           48           47            0            1
 XML                   144        19412        16925         1884          603
 YAML                  141        24021        18967         2118         2936
 Markdown              148        18927            0        13285         5642
 |- BASH                 5          305          275           11           19
 |- JavaScript           1            1            1            0            0
 |- Shell                4          121          116            0            5
 (Total)                          19354          392        13296         5666
 Total                3920      1295811       912391       197997       185423