Anyone else get annoyed that “smart” or "IOT" usually means send your data over the Internet to a cloud service?
How about constantly fighting with Zigbee or Wifi sensors that have horrible range?
This didn’t start as a large project, but it's evolved into one for sure. It started because the off-the-shelf sensors wouldn’t cover the range I needed for my property and I was tired of sensors that needed an Internet connection to work properly.
I had tried Zigbee devices previously. Inside the house those window/door sensors are fine. on the other side of a well insulated house or outside the house, not so much. Range made them useless (yes, I added extenders). I dealt with flaky links and there were several spots that had zero signal.
So, I switched a bunch of things to Wi‑Fi. for extended reach. they were easier to monitor with normal network tools but still lacked the range I needed for all of my sensors. Specifically solar powered sensors outside. The power consumption was not pretty high with WiFi and was taxing the LiPo batteries.
Then I found LoRa. Low power, long range, “up to ten miles or more” depending on who you ask and how optimistic they’re feeling (and what lies between the nodes of course). The catch, according to everything I read, was that two nodes can talk peer-to-peer, but if you want *many* nodes you’re supposed to use LoRaWAN.
That sent me down the Things Network / ChirpStack rabbit hole. The Things network was right out since it was yet another cloud platform that didn’t need to know how cool I keep my office. ChirpStack was an option as it can run on your own local server or in a container, which sounds great, but the whole stack still felt like way too much complexity. Buy an expensive LoRaWAN gateway (they weren’t cheap when I looked). Wrestle the gateway onto ChirpStack. Register every sensor by its DevEUI (basically the device’s unique ID). Hang each one under a custom application. For “is my gate open” and “what’s the soil doing,” that was way too much to do for simple sensors.
So, I did the easiest thing instead. Bought a couple Raspberry Pi Picos and some RFM95 modules, fired up MicroPython and a RadioHead-style stack on the receiver and the sensor node, and added addressees to both in the code. It worked! I then built a few sensors to monitor temperature and humidity. Watching packets show up on a serial terminal attached to the receiver was a solid dopamine hit. Also, completely useless for capturing data for home automations.
I needed those packets on the network where the automation lives.
My first bridge that actually worked was a Pico W forwarding sensor packets over WiFi to MQTT. This was a great achievement in my eyes. I wanted to keep the data off WiFi as much as possible as I thought it added one more layer of un-needed complexity. I also wanted the data straight into Node-RED, where I could sort it and decide what happens next — write it to the database, send it to MQTT for Home Assistant, or whatever — without another radio hop onto Wi‑Fi if I can help it.
Around the same time, it clicked that all of this could be used in the real world, not just my property. A lot of businesses treat Wi‑Fi as an external / untrusted network for security reasons. So that really pushed me to create a wired Ethernet gateway. This could be very useful in a rural farming environment as well and I know the LORAWAN people were pushing that pretty hard. Probably because they wanted to collect and sell their data. Yeah, I said it.
So the bridge I run now looks like this:
RFM95 → Pico (LoRa RX) → UART @ 230400 → W5500-EVB-Pico → Ethernet → Node-RED WebSocket
The Pico uses the RFM95 to listen for LoRa packets and frames packets over serial to the Wiznet W5500. The WIZnet board opens a WebSocket to Node-RED and forwards those LoRa payloads over Ethernet. Inside Node-RED the packets can be sorted...
Read more »
Scott LeComte



