Skip to main content

Connecting to the LoRaWAN Network

Aqua-Scope devices with LoRaWAN capability must be registered with their three keys at a LoRaWAN network operator that provides radio coverage at the device's location.

The Three Keys

KeyDescriptionWhere to Find
Dev EUIPublic device IDOn the device as a QR code and 16-character string
Join EUINetwork IDIdentical for all Aqua-Scope devices (see below)
Join KeyPrivate keyRetrieve via aqua-scope.com/lora

Join EUI (App EUI)

The Join EUI is identical for all Aqua-Scope LoRaWAN devices:

49 43 48 54 48 59 20 21

(ASCII: I C H T H Y S !Ichthys, ancient Greek for "fish", is an early Christian symbol and fits as an acronym for Aqua-Scope's water theme.)

Retrieving Keys

Enter the public Device EUI key and your email address at aqua-scope.com/lora to receive the private Join Key.

Establishing a Connection (JOIN)

  1. Immediately after inserting batteries or connecting a power supply, the device attempts to connect to the LoRaWAN network.
  2. The LEDs blink during this process. After approximately 25 seconds, the JOIN process has either succeeded or been aborted.
  3. On battery power, the device immediately enters sleep mode if the join fails.
  4. If the sensor loses its connection to the server, an automatic Rejoin is performed.
tip

Pressing the button always triggers a LoRaWAN communication, which also initiates a Rejoin if the connection has been lost.

Duty Cycle

Be aware of the duty cycle regulation for LoRaWAN. Sending messages or rejoins too rapidly in succession may be ignored by the LoRaWAN network.

Rejoin Behavior

When a device loses its connection to the LoRaWAN network (e.g., due to a gateway failure or network change), it automatically attempts to reconnect (Rejoin). The exact behavior depends on the device family.

Devices with WiFi (LoRaWAN 1.0.2, PHY V1.0.2 REV B)

Applies to: AQS, AQX, AQM, PRE series (devices with an additional WiFi module).

These devices use LoRaWAN specification 1.0.2 (PHY V1.0.2 REV B). Rejoin behavior and other LoRaWAN settings are controlled via configuration parameter 3 (LoRaWAN Register).

Configuration Parameter 3 — LoRaWAN Register

Default value: 0x0ffd

Lower 16 bits (configurable via LoRaWAN downlink 0x04):

Bit(s)MaskFieldDefaultDescription
00x0001Class C00 = Class A, 1 = Class C
10x0002ADR00 = off, 1 = Adaptive Data Rate enabled
20x0004Duty Cycle Control00 = off, 1 = enabled
30x0008Not used
4–70x00F0Join Retries3Number of rejoin attempts on connection loss
8–110x0F00Confirmed Interval10Every x-th message is sent as Confirmed
12–150xF000TX Power7Transmit power (0 = 0 dB, 7 = 14 dB, ≥11 = 22 dB)

Upper 16 bits (configurable only via WiFi/serial):

Bit(s)MaskFieldDescription
160x00010000Alarm ReportingSend/clear alarm messages via LoRaWAN
170x00020000Consumption ReportSend consumption reports
180x00040000Sensor ReportSend sensor values periodically
190x00080000Config ReportReport configuration changes
200x00100000Pipe-CheckEnable pipe check via LoRaWAN
210x00200000Periodic ConfigReport configuration periodically
220x00400000Fixed PayloadUse fixed payload format
25–31Frequency Band0=EU868, 1=US915, 2=AS923, 3=AU915, 4=CN779, 5=IN865, 6=KR920, 7=RU864

Devices without WiFi (LoRaWAN 1.0.3)

Applies to: FLO, CLP, BUT, DRY, BVS, KFR series (pure LoRaWAN/LoRa devices).

These devices use LoRaWAN specification 1.0.3 and are based on the RAK3172 module from RAK Wireless. The rejoin strategy follows the RAK Wireless implementation — details can be found in the RAK3172 datasheet.

Usage with TTN

All Aqua-Scope LoRaWAN devices can be operated on The Things Network (TTN). The devices are already listed in the TTN Device Repository, and a valid payload decoder is activated during setup.

Daisychain Protocol

All Aqua-Scope LoRaWAN devices use a unified Daisychain protocol on FPort=10. Multiple commands can be chained together in a single LoRaWAN message (up to a maximum of 51 bytes). The receiver identifies where one command ends and the next begins based on the command ID and defined length.

0x03 — Hardware Version Report (4 bytes)

Sent automatically at boot and as a response to downlink 0x03.

ByteFieldDescription
00x03Command ID
1HWHardware version
2CAP_MSBCapabilities bitmap (high byte)
3CAP_LSBCapabilities bitmap (low byte)

0x04 — Configuration Report (4 bytes)

Response to downlink 0x14 (Config Get) or confirmation after 0x04 (Config Set).

ByteFieldDescription
00x04Command ID
1IDXParameter index
2VAL_MSBParameter value (high byte)
3VAL_LSBParameter value (low byte)

0x06 — Sensor Report (4 or 6 bytes)

Response to downlink 0x06 (Sensor Get) or sent periodically.

ByteFieldDescription
00x06Command ID
1IDSensor type (see sensor types table)
2VAL_MSBSensor value (high byte)
3VAL_LSBSensor value (low byte)

Special case for sensor type 0x83 (water meter): 32-bit value across 4 bytes (6 bytes total length).

0x0a — Firmware Version Report (5 bytes)

Sent automatically at boot.

ByteFieldDescription
00x0aCommand ID
1–4VERFirmware version as 32-bit value

0x0b — Alarm Report (5 bytes)

Sent when an alarm is triggered or cleared.

ByteFieldDescription
00x0bCommand ID
1STATE0x01 = alarm active, 0x00 = alarm cleared
2TYPEAlarm type ID (device-specific, see product manual)
3VAL_MSBAlarm value high byte (e.g., temperature, pressure)
4VAL_LSBAlarm value low byte

0x12 — Battery Report (4 bytes)

ByteFieldDescription
00x12Command ID
1VOLTBattery voltage in 100 mV steps (e.g., 0x21 = 3.3 V)
2BAT_MSBConsumed capacity in mAh (high byte)
3BAT_LSBConsumed capacity in mAh (low byte)

0x16 — Pressure Statistics (9 bytes)

Periodic report with pressure statistics (pressure sensors only).

ByteFieldDescription
00x16Command ID
1–2PMINMinimum pressure in interval (mBar)
3–4PMAXMaximum pressure in interval (mBar)
5–6PAVRAverage pressure (mBar)
7–8PDEVStandard deviation (mBar)

0x1a — Extended Version Report (12 bytes)

Extended version information with status.

ByteFieldDescription
00x1aCommand ID
1–4STM_FWSTM firmware version (32-bit)
5–8MSP_FWMSP firmware version (32-bit)
9STATDevice status
10–11CONFSystem configuration (16-bit)

0x03 — Hardware Version Get (1 byte)

ByteFieldDescription
00x03Command ID

Triggers an uplink 0x03 (Hardware Version Report).

0x04 — Configuration Set (4 bytes)

ByteFieldDescription
00x04Command ID
1IDXParameter index (device-specific, see product manual)
2VAL_MSBNew parameter value (high byte)
3VAL_LSBNew parameter value (low byte)

The device confirms with an uplink 0x04 (Configuration Report).

0x06 — Sensor Get (2 bytes)

ByteFieldDescription
00x06Command ID
1IDRequested sensor type (see sensor types table)

Triggers an uplink 0x06 (Sensor Report) with the requested value.

0x07 — Valve Position (2 bytes)

ByteFieldDescription
00x07Command ID
1STATE0x00 = close valve, 0x64 = open valve

Only for devices with valve control (BVS, KFR).

0x0b — Alarm Clear (2 bytes)

ByteFieldDescription
00x0bCommand ID
1TYPEAlarm type ID, 0x00 = clear all active alarms

0x14 — Configuration Get (2 bytes)

ByteFieldDescription
00x14Command ID
1IDXParameter index to read

Triggers an uplink 0x04 (Configuration Report).

0x17 — Valve Status Get (1 byte)

ByteFieldDescription
00x17Command ID

Triggers a status report with the current valve status.

IDSensorUnitExample
0x01Temperature1/10 °C (two's complement)0x00CD = 20.5 °C; 0xFFEA = −2.2 °C
0x02Humidity%RH0x003C = 60 %RH
0x03UptimeHours0x0168 = 360 h
0x10Water pressuremBar0x0C80 = 3200 mBar
0x11Water consumptionml
0x12Flow StateFlow status
0x81RainfallTip count
0x83Water meterLiters (32-bit)
info

Which sensor types, configuration parameters, and alarm types a device supports is documented in the respective product manual.

Example: Daisychain

A single uplink message can contain multiple commands:

06 01 00 CD 06 03 00 A8 0b 01 01 00 01 12 21 03 E8
│ │ │ └─ Battery: 3.3V, 1000mAh
│ │ └─ Alarm: active, Type 1 (flood), Value 1
│ └─ Sensor: Uptime = 168 h
└─ Sensor: Temperature = 20.5 °C