Skip to content

Protocol Documentation

Table of Contents

Top

DEV5559.proto

Defines a downlink message from the LoRaWAN Network Server to the device. For example, you'd like to issue a command to turn on an LED on a remote device, or change the frequency of sensor readings.

Field Type Label Description
device_id string Device ID: 12 character NanoID
fport int32 FPort: 100=ADR, 101=Seconds per uplink
adr bool Adaptive data rate: 0=disabled, 1=enabled
ttu int32 Time to Uplink: 30-86400 seconds (1 day)

Defines an uplink message from the device to the LoRaWAN Network Server

Field Type Label Description
device_id string Device ID: 12 character NanoID
battery_soc float Battery State of Charge: 0-100%
battery_volts float Battery Voltage: Milivolts
humidity float Humidity: 0-100%
moisture float Moisture: 0-100%
temperature float Temperature: Degrees Celsius
lat double Latitude: Decimal degrees
lng double Longitude: Decimal degrees
fw FirmwareStatus Firmware status: See FirmwareStatus enum

FirmwareStatus

Enum of possible firmware status values

Name Number Description
NULL 0 Uknown or not set
UPDATING 1 Firmware update in progress
FINISHED 2 Firmware update finished since last uplink
ERROR 3 Error

Top

EX1234.proto

Defines a downlink message from the LoRaWAN Network Server to the device

Field Type Label Description
fport int32 FPort: 100=ADR, 101=Seconds per uplink
adr bool Adaptive data rate: 0=disabled, 1=enabled
ttu int32 Time to Uplink: 30-86400 seconds (1 day)

Defines an uplink message from the device to the LoRaWAN Network Server

Field Type Label Description
batt_soc int32 Battery State of Charge: 0-100
batt_mv int32 Battery Milivolts: Milivolts
temp_c float Temperature: Degrees Celsius
tamper bool Tamper: 0=not tampered, 1=tampered
ttu_set int32 Time to Uplink Setpoint: 30-86400 seconds (1 day)

Top

EX4550.proto

EX4550 Smart Button v2.2 device Uplink and Downlink message schemas.

Downlink message from the LoRaWAN Network Server to the device. Example: Use this schema to turn to set the TTU (time to uplink) to every 60 seconds.

Field Type Label Description
fport int32 LoRaWAN FPort
adr bool ADR - 0=disabled, 1=enabled
ttu int32 Seconds per uplink - 30-86400 (1 day)

Uplink message from the device to the LoRaWAN Network Server.

Field Type Label Description
button EnumButton Button value: 0-4
battv float Battery Voltage: Milivolts

EnumButton

The EX4550 LoRaWAN device supports 4 soft-buttons.

Name Number Description
UNKNOWN 0 Unknown button
BUTTON1 1 Button 1, press & hold for 10 seconds to reset the device
BUTTON2 2 Button 2
BUTTON3 3 Button 3
BUTTON4 4 Button 4

Scalar Value Types

.proto Type Notes C++ Java Python Go C# PHP Ruby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)