Episode: 4311
Title: HPR4311: LoRaWAN and the Things Stack
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4311/hpr4311.mp3
Transcribed: 2025-10-25 22:49:01

---

This is Hacker Public Radio episode 4,311 from Monday the 10th of February 2025.
Today's show is entitled, Low-Raw-W-I-N and the Thingstack.
It is hosted by Lee, and is about 10 minutes long.
It carries a clean flag.
The summary is, Lee sets up some temperature and humidity sensors.
Hi there, I'm Lee, and I'm going to talk about the Internet of Things, specifically about
services provided by the Thingstack and devices that operate within the lower-around protocol.
So what I'm talking about is a relatively new set of wireless protocols in a class of
devices and networks that can be created with them.
Collectively there's a called low-power, wide-airing networks.
The key feature of these protocols is that devices can be numerous and consume little
power and communicate small amounts of data over long distances for an extended period
of time.
Well, Loro-Anne, which stands for long-range wide-airing network, is one such protocol.
Other low-power wide-airing network protocols include narrow-band Internet of Things, Sig
Fox, long-term evolution machine-type communication, and wireless smart utility network.
They all have advantages and disadvantages, and some are more suited for certain applications
than others.
Loro-Anne is relatively low-cost, and has the ability to transmit reliably over longer distances.
Compared to other protocols, the bandwidth is fairly constrained, and application is
good at, will be deploying a lot of sensors over a large area, taking periodic data readings
with very little maintenance required.
I got into this when I was asked to integrate the ability to collect data from water temperature
monitors attached to equipment into a platform provided by a company who are at the time
my client and an L at the time recording one of my employees.
The platform was primarily for businesses that provide safety compliance for water systems
in buildings.
While the Loro-Anne protocol is open and you could in theory run entirely using your
own equipment, that is, devices, gateways, and servers, it's in many cases more practical
to utilise a third party to manage the various aspects of the Loro-Anne setup.
These include Senate, Loria, and the one I'm going to talk about due to the relative
ease of setting up, which is the Things Stack.
Now the Things Stack is actually just one service provided by the Things Industries.
The service called the Things Network is suited more for enthusiasts, and those getting started
with Loro-Anne, while the Things Stack is tailored more for commercial users and offers
slightly more advanced features.
I found I may want to use it for free as long as I keep to 10 devices or less.
Even though I integrated the software I was working with to be able to operate on either
of these systems, as far as I know the company in question is still using the Things Network
integration rather than the Things Stack.
The Things Network has a few limitations such as a more limited service level agreement.
Now, just to outline the topology of a Loro-Anne network, you have end devices that send packets
of data over radio frequencies, then you have gateway devices that translate between this
radio data and the internet, and finally you have the internet-based servers that process
this data.
You could also consider that there is then also an application layer that talks to these
servers and does something useful with the data.
For enterprise applications with entire fleets of devices, providers like AWS, that Samsung
web services, can be used to manage the whole network and collect data at scale.
While Loro-Anne can be used as a bidirectional protocol, my experience of it is with sampling
data from sensors rather than sending commands to actual actions in the physical world.
The only time I've been sending data to these devices is to register them on the network
and then configure their operation, for example, how often they report back data.
As mentioned before bandwidth is limited, there are strict regulations on how much data can
be sent, and typically data is sent in small bursts because the devices to be constantly
chatting would both deplete the batteries and use up the limited capacity of the allocated
radio spectrum.
The things network and the things stack doing force these limits, and on some occasions
I found my devices simply stopped communicating for up to a day because they've exceeded the
allowed limits.
This would not happen normally but can happen typically when debugging a setup, for example
re-registering a device for repeatedly many times in a short space of time.
Now while I say gateways that are unnecessary part of the network, the things network actually
has a community-based network of gateways, so in theory if you just had some end devices
and wanting them to send data to the server, you could get away with using the community-based
gateways that might exist in your local area.
However, in practice I found this was extremely unreliable, would almost always recommend acquiring
your own gateway or gateways.
Now while I've said this technology is relatively cheap, if someone does want to set up a network
of sensors quickly and have things work pretty much out of the box, rather than doing
a lot of DIY, then the cost is likely to be in the order of a few hundred pounds dollars
or euros.
The gateway device I've been using at home is called the things indoor gateway, and compared
to other gateways I tried to set up, this connected and worked seamlessly with the things
stack with very little configuration required.
The sensors I've been using are Malsai EM-300s, which can take temperature and humidity
readings, and will typically transmit data once every ten minutes.
Inside these devices is room for an extra battery, and in principle such a device could run
unattended without needing to change batteries for several years.
So now I'll go through my setup on the things stack.
To start with, I can log into my console at myusename.eu1.cloud.thethings.industries for
one-slash console.eu1 is just one of the regions, and these regions are segmented so it's
important to pick one region and stick with it.
In my console I have one application called Lee-Hyphen-IoT.
I have one gateway, this is physically located at my parents' house.
The gateway has an extended unique identifier or EUI.
This is 8 bytes expressed as colon-separate pairs of digits.
Y1 starts, 5-8 colon, A-0 colon, etc, and ends colon-7-6.
This type of identifier is not just used for gateways.
End devices also have a similar identifier called the device identifier, and a similar identifier
is used in the registration process.
It's called either the app or the join EUI.
In the console I can browse through my list of devices.
I've labeled these with the letters of the alphabet from A to J, so look at sensor A.
There's a nice little photo of the type of device, and it says EM-300-IoT-H, Tempsh
and humidity sensor.
And as mentioned it has a dev-E-U-I, and an app-E-U-I, and an app-key, which is longer
than the others, and the digits are hidden since it acts as a secure credential that limits
access to the device.
This device is in the living room, and I've attached to it with keyring a letter A tile originally
from ScrabbleGame, so it can easily be identified.
You could always read the device EUI to identify device since it's unique, but this is printed
in very small writing on the thing, and not so human-friendly.
If I wanted to add another sensor, I'd just click register new device.
Then either scan a QR code if I was using a phone, or select the manufacturer model from
a list, and set any other parameters, like hardware and firmware version, radio, region
and frequency plan.
Typically I choose the default European profile and leave all these at their default or
recommended settings.
Then I enter the join EUI, also known as the app-E-U-I, and I enter the app-key, these
credentials supplied with the device.
Hopefully then the device should be able to register and you'll start receiving data.
Now while you can inspect data packets coming in via the console, it's much more use to
be able to send the data to some web-based integration or custom application, so you
can actually use it.
Just to mention the data coming in may be in binary, depending on the particular device,
being in binary helps save bandwidth, but it's pretty hard to then work with.
So if it is in binary, it's common to then configure a payload formatter in the Thingstack,
which is a JavaScript that converts the binary into some more human readable JSON, and typically
a suitable payload formatter will already exist for any common device on the market.
So process my data I've set up a web hook.
This means whenever data comes in an HTTP request will be sent to a server of my choice.
I have an 89 Python script running on my server, which is receiving these requests, then
putting the data into an SQL-like database.
Once in the database I can process it in any way I'll see fit.
My Python script is listening on the port I've specified.
When it receives a post request, it decodes the JSON, gets the device identifier, then maps
that to find out which room in the house it corresponds to, then adds a row to the
database containing just the name of the room, the timestamp of the message, and the temperature
in Celsius and the emitate as a percentage.
Just so I can visualise this data I have a cron job running that runs a PHP script,
which scans the SQL-like database and generates a graph.
To render the graph I'm using the JavaScript library chart.js.
I'll include a copy of the scripts and the screenshot of the graph in the show notes.
So anyway, this has been a bit of an overview of what is possible for LoroRan, and in particular
the things network or things stack, plus a practical example.
But there's a lot more to LoroRan in terms of how it actually works and different ways
of working with devices and data.
You can find out more about LoroRan from Loro-hiphantaliance.org.
This is also a fairly cheap book on Kindle called Mastering LoroRan by Sir Jato Sain.
And the things stack or things network can be found at thethingsindustries.com.
So that's all for today.
I hope you found this of interest.
Thanks for listening.
You have been listening to Hecker Public Radio.
At Hecker Public Radio does work.
Today's show was contributed by a HBR listener like yourself.
If you ever thought of recording podcasts, click on our contribute link to find out how
easy it really is.
Hosting for HBR has been kindly provided by an honesthost.com, the Internet Archive
and R-Sync.net.
Unless otherwise stated, today's show is released under Creative Commons, Attribution,
4.0 International License.
