I get asked about LoRaWAN a lot, and why we haven't switched to it as our default for wireless sensor networks. There are two main reasons:
(a) the energy management/demand response IoT solutions we deliver often require many data points delivered per second from each device
(b) we made a decision early on, that we would not deploy any processor/microcontroller that didn't support Over-the-Air firmware updates
LoRaWAN's primary selling point is the wireless range it can deliver. The signal processing / modulation techniques that Semtech have developed to enable that is super impressive. Before LoRaWAN, if you wanted very long range and low power, you basically had to sacrifice data quality and security.
However, there are still very tight restrictions on bandwidth and duty cycle - meaning LoRaWAN networks can't be used to transfer large amounts of data. Updating firmware on thousands of remote devices is a tricky technical problem. You need to identify (sometimes a subset of) the devices that need to be updated, produce a digitally signed binary file specific to the hardware, chop the file up into tiny packets, distribute it over wireless networks that have packet loss, verify its integrity on the device, attempt to switch over to the new version, be able to roll back if that fails, then report back on the success or failure of the process. At EpiSensor, we believe having that capability is essential for the long term reliability and security of the platform. It's difficult to understand how any remote, connected devices can be deployed in enterprise environments or serve business critical applications without OTA firmware update capability. We've relied on it so many times over the years.
Although the LoRa alliance has published application notes showing that it's possible (assuming you have prerequisites like Class B/C devices, enough flash memory on board, real time clock, server side architecture for distribution, etc.) - I'm wondering if anyone managing a large scale LoRaWAN networks has actually done this in a practical way? To be clear: I'm not talking about Gateway updates, I mean end devices obviously. And I mean thousands of end devices, not a handful. I mean an update of the full software stack on the device, not just configuration or application software. I don't regard having to go on site and operate a separate private LoRa network as true OTA update functionality. And it's not at all practical if a multicast OTA update interrupts the normal operation of the devices, and/or takes days to distribute/validate. LoRaWAN and ZigBee are not comparable across the board of course, I'm talking specifically about low power wireless comms technologies for data intensive energy applications in business critical environments. I'm not against LoRaWAN for some applications, and I'm keeping an eye on 2.4GHz LoRa Connect!