Skip to content
This repository has been archived by the owner on Oct 12, 2021. It is now read-only.

KiwiBryn/Azure.IoTHub.IoTCore.FieldGateway.LoRa

Repository files navigation

Azure IoTHub Windows IoTCore LoRa FieldGateway

AzureIoT Hub Windows 10 IotCore Field Gateway for LoRa capable devices

A Windows 10 IoT Core application based on my @RFM9X Library for uploading telemetry data from RFM9X/SX127X equipped devices to an @Azure IoT Hub or @Azure IoT Central

The field gateway will upload data to Azure IoT Hubs or Azure IoT Central IoT Central Measurements

It has device properties for debugging and support IoT Central Device Properties

The application logs data to ETW for debugging and support Windows 10 IoT Core ETW

The field gateway currently supports these shields

@Dragino LoRa GPS HAT for Raspberry Pi

@ElectronicTricks Lora/LoraWan shield for Raspberry Pi Zero and PI3

@Elecrow Lora RFM95 IOT Board for RPI

@M2M

1 Channel LoRaWan Gateway Shield for Raspberry Pi

RPIZero Shield from @Uputronics

Raspberry PiZero LoRa(TM) Expansion Board

RPIPlus Shield from @Uputronics

Raspberry Pi+ LoRa(TM) Expansion Board

LoRa Radio Bonnet from @Adafruit

Adafruit LoRa(TM)Radio Bonnet with OLED

I have sample client applications which show how to send telemetry from

An empty configuration file is created the first time the application is run. A minimal configuration file has the device address, the Azure Device Client transport protocol, and the centre frequency.

{
  "AzureIoTHubDeviceConnectionString": "HostName=saas-iothub-12345678-9012-3456-7890-123456789012.azure-devices.net;DeviceId=b1234567890d;SharedAccessKey=qwertyuiopasdfghjklzxcvbnm1234567890qwertyu=",
  "AzureIoTHubTransportType": "amqp",
  "SensorIDIsDeviceIDSensorID": true,
  "Address": "LoRaIoT1",
  "Frequency": 915000000.0
}

The application has been tested with 433MHz and 915MHz devices and stress tested with a number of clients Stress tester

The "SensorIDIsDeviceIDSensorID" flag concatenates the deviceID and SensorID together so the device can work with Azure IoT Central.

The packet format is detailed in these blog posts @IoTCore and @NetMF. It was intentionally kept simple to make it easier for students to user and debug.

Future proposed enhancements include

  • Device property support (Done Nov 2018)
  • Azure Device provisioning support (PoC V1 Done Dec 2018)
  • Cloud to device messaging
  • OTA device provisioning
  • OTA Data encryption
  • Remote settings configuration with Azure IoT Hub device twins
  • Support for other Windows 10 IoT Core devices e.g. Dragon Board 410C
  • Support for other SX127X/RFM9X shields/plates/mezzanine boards