Skip to main content

TECHNICAL REFERENCE MANUAL (TRM)

CMDTechnical Reference Manual (TRM)

Technical Reference Manual (TRM) for the YOBIIQ CMD series, analog input model CMD-L-0D-4I.

Document
TRM-CMD
Firmware covered
1.0
Revision
1.0

Product overview​

The YOBIIQ CMD series connects digital signals, analog signals and serial equipment to remote monitoring and control over LoRaWAN. The series is a DIN-rail product family with ten configurations of digital and analog inputs and outputs and two serial models, see the CMD datasheet.

This manual documents firmware 1.0, which runs on the CMD-L-0D-4I (SKU 260039): four analog inputs, CH1 to CH4, and no outputs, supplied with 5 to 24 VDC. The other CMD configurations are not covered by this firmware.

Each analog input measures either a 0-10 V voltage signal or a 4-20 mA current loop. A selector switch per input (SW1 to SW4) connects the field signal to the voltage or to the current measuring circuit. The device measures both circuits of every input, reports both values, and detects from them which way each selector switch is set: a change is sent as an alarm uplink.

Every CMD-L-0D-4I has a LoRaWAN interface and a Bluetooth Low Energy (BLE) interface. Firmware 1.0 drives no LED and uses no button, see LEDs and Buttons.

How to use​

Commissioning​

Have your gateways online and the device registered with your LoRa Network Server (LNS) before you power the device: it starts joining as soon as it is powered.

Register the supplied DevEUI, AppEUI (JoinEUI) and AppKey with your LNS, then follow the instructions of your LoRaWAN network provider. Once the device is registered and powered, it joins the network without further action.

For stack-level join behavior and retry handling, see the YOBIIQ LoRaWAN Stack guide: Join Process.

info

The DevEUI, AppEUI (JoinEUI) and AppKey are provided by YOBIIQ to the registered purchasing party, and are available to the point of contact in our online environment (KiBi). If you are missing the details, contact your point of purchase or YOBIIQ support.

Before you rely on the measurements, set the selector switch of every input you use (SW1 to SW4) for the signal you connect, and check its detected position in Switch Position (0x0A00, 0x0B00, 0x0C00, 0x0D00), see Selector Switch Detection.

Wiring Schematics​

When wiring the device make sure to follow all the precautions that are pointed out in the User Guide of the device. Request the approved CMD-L-0D-4I connection drawing from Yobiiq support.

Each analog input has two measuring circuits, and the selector switch of the input connects the field signal to one of them:

Selector positionSignalMeasuring circuit
Voltage0-10 VResistor divider (27 kΩ / 3.3 kΩ) and low pass filter
Current4-20 mAFuse and 100 Ω sense resistor to ground, low pass filter

Physical Interfaces​

Analog Inputs CH1 to CH4​

The four analog inputs are measured by two 16-bit analog-to-digital converters (ADCs), one for the four voltage circuits and one for the four current circuits.

CircuitNominal rangeResolutionEnd of the measuring range
Voltage0-10 V0.574 mV18804 mV, the ADC saturates above it
Current4-20 mA0.625 µA20479 µA (about 20.48 mA), the ADC saturates above it

A current above 20.48 mA, for example a 22 mA fault current, is reported as 20479 µA. The device has no over-range alarm. A voltage above 10 V is reported as measured up to 18804 mV; check the hardware documentation for the maximum voltage the input accepts.

The circuit that the selector switch does not use reads about 0. Near 0, the noise of the input can give small negative values.

Input Selector Switches SW1 to SW4​

Each input has a selector switch: SW1 for CH1, SW2 for CH2, SW3 for CH3 and SW4 for CH4. It selects the voltage circuit (0-10 V) or the current circuit (4-20 mA) of the input. The firmware does not read the switch directly: it deduces its position from the two measurements of the input, see Selector Switch Detection.

LEDs and Buttons​

The CMD-L-0D-4I has no LEDs and uses no buttons: the CMD-L-0D-4I has no local status indication and no local control. Read its state over BLE or LoRaWAN, for example Join Status (0xFF96) for the network connection.

Technical Operation​

Device Startup​

When power is supplied, the device starts in this order:

  1. It loads its configuration from its internal memory: the LoRaWAN settings, the switch thresholds and the periodic transmission configuration. At the very first start, it stores the factory values instead, see Registers and Periodic Transmissions.
  2. About one second later, it measures all the inputs once and evaluates the four selector switches. The positions found at startup do not send an alarm: they are the reference for the next changes.
  3. It starts the LoRaWAN join, see the stack guide's Join Process, then starts BLE advertising.
  4. From then on, it measures all the inputs and evaluates the selector switches at least every 30 seconds, see Selector Switch Detection.
  5. After each successful join, it sends its generic device information uplink on fPort 50, runs a network quality test and requests the network time, see the stack guide's Generic Device Information, Network Quality Test and Time synchronization. The CMD keeps the network quality test result internally: it does not show it and does not send it.
  6. The periodic transmissions start after the first time synchronization, see the stack guide's Sending measurement registers.

Normal Operation​

The measurements and the selector switch detection work with or without a network connection. Uplinks are sent only while the device is joined.

note

The CMD does not support data retransmission: measurements from before a join, or from a loss of the network, are not sent later. See LoRaWAN Communication.

Analog Measurement​

Each input CH1 to CH4 gives two measurements, one per circuit, and each measurement has two registers: the raw ADC code and the value calculated from it, see Analog Inputs.

InputVoltage (mV)Current (µA)
CH1Input 1 Voltage (0x0101)Input 1 Current (0x0501)
CH2Input 2 Voltage (0x0201)Input 2 Current (0x0601)
CH3Input 3 Voltage (0x0301)Input 3 Current (0x0701)
CH4Input 4 Voltage (0x0401)Input 4 Current (0x0801)

The calculated value is a whole number, rounded down:

  • Voltage, in millivolts: the voltage at the ADC input times the divider ratio 9.182. A 10 V signal reads about 9999 mV, a 5 V signal about 4999 mV.
  • Current, in microamperes: the voltage across the 100 Ω sense resistor divided by 100 Ω. A 4 mA loop reads about 4000 µA, a 20 mA loop about 20000 µA.

The raw value is the ADC code, 0 to 32767 for 0 to 2.048 V at the ADC input (62.5 µV per count).

When the inputs are measured:

  • Every read of a Raw or Calculated register measures the input at that moment, over LoRaWAN, BLE or in a periodic uplink: the value is never an older sample. Reading a register of one circuit also measures the other circuit of the same input and updates the selector switch detection of that input, see Selector Switch Detection.
  • Two reads of the same input, for example its Raw and its Calculated register, come from two measurements and can differ by the noise of the input.
  • When an input cannot be measured, the read fails instead of returning an older value: the register is left out of the uplink or of the answer, see the stack guide's Device Parameter Reading.
  • In the background, the device measures all the inputs at least every 30 seconds for the selector switch detection.

Selector Switch Detection​

The device tells for each input whether its selector switch is set to voltage or to current, by comparing the two measurements of the input to two thresholds of that input:

Voltage measurementCurrent measurementSwitch Position
At or above the Voltage ThresholdBelow the Current Threshold1, Voltage
Below the Voltage ThresholdAt or above the Current Threshold2, Current
Both at or above, or both below, their threshold0, Unknown
InputSwitch PositionVoltage ThresholdCurrent Threshold
CH10x0A000x0A010x0A02
CH20x0B000x0B010x0B02
CH30x0C000x0C010x0C02
CH40x0D000x0D010x0D02

The factory thresholds are 50 mV and 3500 µA for every input. With them:

  • an input set to voltage reads Voltage while its signal is 50 mV or more, and Unknown below (for example a 0 V signal);
  • an input set to current reads Current while its loop carries 3.5 mA or more, and Unknown below (for example an open loop);
  • an input with nothing connected reads Unknown.

Each threshold can be changed per input by a register write downlink or over BLE: the Voltage Threshold from 0 to 1000 mV, the Current Threshold from 0 to 4000 µA. A new threshold is saved and applies as soon as the command is processed: the device then evaluates all the switches again at once.

When the position is evaluated:

  • At startup, then at least every 30 seconds: both measurements of each input are taken one after the other, and the position of the input is evaluated from them.
  • At every read of a Raw or Calculated register of the input, see Analog Measurement.
  • A read of a Switch Position register returns the last evaluated position. When that position is Unknown, the device first measures the input again.
  • When one of the two measurements of an input fails, its position is not evaluated and keeps its previous value.

Switch position alarm: every change of position, to or from Unknown included, sends an alarm uplink on fPort 11 with the new position and the two measurements of the input, see Alarms. A change found by a register read is sent by the next background evaluation, within 30 seconds. There is no hysteresis: a signal that stays close to a threshold can change position, and send an alarm, at every evaluation. To avoid it, move the threshold away from the usual signal level.

Registers​

The CMD exposes its measurements and settings as 16-bit registers. They are read and written over LoRaWAN, with register write downlinks on fPort 50 and register read downlinks on fPort 100 (see the stack guide's Downlinks), and over BLE. The Generic Data and LoRaWAN Data registers are common to the products of the YOBIIQ LoRaWAN Stack and are listed here with their CMD values; the Device Data registers are specific to the CMD.

Notes:

  • Access is given for LoRaWAN: R read, W write, RW read and write, - not accessible over LoRaWAN. BLE has the same access unless the description says otherwise.
  • Range gives the values accepted on write; a command with another value is rejected (answer 01) and changes nothing. A command that writes a read only register is rejected the same way. Provisioned values are set in production for each device.
  • Types: bool and u8 take 1 byte, u16 and i16 2 bytes, u32 and i32 4 bytes, u8[N] N bytes, and a string is a length byte followed by the characters, see the stack guide's Payload Structure. i16 and i32 are signed (two's complement). Multi-byte numbers are big endian.

Generic Data​

The CMD supports the generic registers of the YOBIIQ LoRaWAN Stack; see its Generic Device Data Registers for their shared behavior and its Device Naming and Location Context for the naming registers. The table gives each register with its CMD value.

AddressNameTypeAccessRangeDefaultUnitDescription
Identification
0xFF65ManufacturerstringR-Provisioned (YOBIIQ B.V.)-Device manufacturer name.
0xFF66OEMstringR-Provisioned (YOBIIQ B.V.)-Original Equipment Manufacturer information.
0xFF67Device ModelstringR-Provisioned-Model designation of the device.
0xFF68Serial Numberu32R-Provisioned-Unique hardware serial number.
0xFF69Firmware Versionu16R-1.0 (bytes 01 00)-Running firmware version: major x 256 + minor, so version 1.0 reads 256 (bytes 01 00).
0xFF6AHardware Versionu16R-Provisioned-Hardware version: major x 256 + minor, so version 1.0 reads 256 (bytes 01 00).
0xFF34Device NamestringRW0 to 15 charactersNone-User-assigned name for the device.
Location
0xFF32Building NamestringRW0 to 15 charactersNone-Name or ID of the building.
0xFF33Building RoomstringRW0 to 15 charactersNone-Room or location identifier.
System
0xFF64Device Statusu8R-0-Operation mode (0: Normal, 1: Special, 2-255: Custom); always 0 on the CMD.
0xFF6BPower Statusu8R-Provisioned (1)-Power source: 1, external power (the 5 to 24 VDC supply). The CMD has no battery.
0xFF6CBattery Voltageu8R-0VAlways 0: the CMD has no battery.
0xFF6DBattery Percentageu8R-0%Always 0: the CMD has no battery.
0xFF6EPasswordstring-0 to 15 charactersProvisioned-Access password, written over BLE only and never read back.
0xFF6FDevice Restartu8W1--Write 1: the device restarts 10 seconds after the command. The switch positions found at the restart send no alarm, see Device Startup.
Telemetry
0xFF7AInternal Tempi16R-0°CAlways 0 in firmware 1.0: the CMD does not measure its internal temperature.
0xFF7BInternal Humidityu8R-0%Always 0 in firmware 1.0: the CMD does not measure its internal humidity.
0xFF82Ambient Tempi16R-0°CAlways 0: the CMD has no ambient sensor.
0xFF83Ambient Humidityu8R-0%Always 0: the CMD has no ambient sensor.
0xFF78Temp Sensor ErrorboolR-0-Always 0 in firmware 1.0.
0xFF79Temp Alarmsu32R-0-Always 0 in firmware 1.0.

Device Data​

The CMD-L-0D-4I has two groups of product registers: the Analog Inputs, one Raw and one Calculated register per measuring circuit of each input, and the Selector Switches, one Switch Position and two thresholds per input. The same registers are available over LoRaWAN and over BLE, with the same access.

Analog Inputs​

Every read of a Raw or Calculated register measures the input at that moment, see Analog Measurement. These registers are measurements: they have no factory value and are not saved.

AddressNameTypeAccessRangeDefaultUnitDescription
Voltage circuits (0-10 V)
0x0100Input 1 Voltage Rawi16R---ADC code of the voltage circuit of input CH1, 0 to 32767, 62.5 µV per count at the ADC input.
0x0101Input 1 Voltagei32R--mVVoltage at input CH1, resolution 0.574 mV. About 0 while the selector switch of CH1 is set to current.
0x0200Input 2 Voltage Rawi16R---ADC code of the voltage circuit of input CH2, 0 to 32767, 62.5 µV per count at the ADC input.
0x0201Input 2 Voltagei32R--mVVoltage at input CH2, resolution 0.574 mV. About 0 while the selector switch of CH2 is set to current.
0x0300Input 3 Voltage Rawi16R---ADC code of the voltage circuit of input CH3, 0 to 32767, 62.5 µV per count at the ADC input.
0x0301Input 3 Voltagei32R--mVVoltage at input CH3, resolution 0.574 mV. About 0 while the selector switch of CH3 is set to current.
0x0400Input 4 Voltage Rawi16R---ADC code of the voltage circuit of input CH4, 0 to 32767, 62.5 µV per count at the ADC input.
0x0401Input 4 Voltagei32R--mVVoltage at input CH4, resolution 0.574 mV. About 0 while the selector switch of CH4 is set to current.
Current circuits (4-20 mA)
0x0500Input 1 Current Rawi16R---ADC code of the current circuit of input CH1, 0 to 32767, 62.5 µV per count at the ADC input.
0x0501Input 1 Currenti32R--µALoop current at input CH1, resolution 0.625 µA, at most 20479 µA. About 0 while the selector switch of CH1 is set to voltage.
0x0600Input 2 Current Rawi16R---ADC code of the current circuit of input CH2, 0 to 32767, 62.5 µV per count at the ADC input.
0x0601Input 2 Currenti32R--µALoop current at input CH2, resolution 0.625 µA, at most 20479 µA. About 0 while the selector switch of CH2 is set to voltage.
0x0700Input 3 Current Rawi16R---ADC code of the current circuit of input CH3, 0 to 32767, 62.5 µV per count at the ADC input.
0x0701Input 3 Currenti32R--µALoop current at input CH3, resolution 0.625 µA, at most 20479 µA. About 0 while the selector switch of CH3 is set to voltage.
0x0800Input 4 Current Rawi16R---ADC code of the current circuit of input CH4, 0 to 32767, 62.5 µV per count at the ADC input.
0x0801Input 4 Currenti32R--µALoop current at input CH4, resolution 0.625 µA, at most 20479 µA. About 0 while the selector switch of CH4 is set to voltage.

Selector Switches​

The thresholds are saved and keep their value after a restart. Reading them does not measure the inputs.

AddressNameTypeAccessRangeDefaultUnitDescription
Input 1 (CH1)
0x0A00Input 1 Switch Positionu8R---Detected position of selector switch SW1: 0 Unknown, 1 Voltage, 2 Current, see Selector Switch Detection.
0x0A01Input 1 Voltage Thresholdi32RW0 to 100050mVInput 1 Voltage (0x0101) at or above this value counts as a voltage signal.
0x0A02Input 1 Current Thresholdi32RW0 to 40003500µAInput 1 Current (0x0501) at or above this value counts as a current signal.
Input 2 (CH2)
0x0B00Input 2 Switch Positionu8R---Detected position of selector switch SW2: 0 Unknown, 1 Voltage, 2 Current, see Selector Switch Detection.
0x0B01Input 2 Voltage Thresholdi32RW0 to 100050mVInput 2 Voltage (0x0201) at or above this value counts as a voltage signal.
0x0B02Input 2 Current Thresholdi32RW0 to 40003500µAInput 2 Current (0x0601) at or above this value counts as a current signal.
Input 3 (CH3)
0x0C00Input 3 Switch Positionu8R---Detected position of selector switch SW3: 0 Unknown, 1 Voltage, 2 Current, see Selector Switch Detection.
0x0C01Input 3 Voltage Thresholdi32RW0 to 100050mVInput 3 Voltage (0x0301) at or above this value counts as a voltage signal.
0x0C02Input 3 Current Thresholdi32RW0 to 40003500µAInput 3 Current (0x0701) at or above this value counts as a current signal.
Input 4 (CH4)
0x0D00Input 4 Switch Positionu8R---Detected position of selector switch SW4: 0 Unknown, 1 Voltage, 2 Current, see Selector Switch Detection.
0x0D01Input 4 Voltage Thresholdi32RW0 to 100050mVInput 4 Voltage (0x0401) at or above this value counts as a voltage signal.
0x0D02Input 4 Current Thresholdi32RW0 to 40003500µAInput 4 Current (0x0801) at or above this value counts as a current signal.

Switch Position​

Switch Position (0x0A00, 0x0B00, 0x0C00, 0x0D00) holds one byte:

ValueLabelMeaning
0UNKNOWNBoth measurements of the input are below their threshold, or both are at or above it. Also the value before the first evaluation.
1VOLTAGEThe voltage measurement is at or above the Voltage Threshold and the current measurement is below the Current Threshold.
2CURRENTThe current measurement is at or above the Current Threshold and the voltage measurement is below the Voltage Threshold.

LoRaWAN Data​

The CMD uses the YOBIIQ LoRaWAN Stack. Refer to its LoRaWAN Data Registers section for shared LoRaWAN parameter definitions. The table gives each register with its CMD value.

AddressNameTypeAccessRangeDefaultUnitDescription
0xFF96Join StatusboolR---Network connection status (1: joined).
0xFF97Radio ModulestringR-Provisioned (SX1262)-Integrated radio transceiver model.
0xFF98Regionu8R-1-LoRaWAN region: 1, EU863-870, fixed by the firmware of the CMD.
0xFF99LoRaWAN Versionu8[3]R-01 00 04-LoRaWAN specification version (major, minor, patch): 1.0.4.
0xFF9DApp Portu8R-50-FPort of the register write downlinks, see Command Framework.
0xFF9EJoin Typeu8R-1-Activation method: 1, OTAA.
0xFF95LoRaWAN Resetu8W1--Write 1: 10 seconds after the command, the device leaves the network and joins again with its stored keys.
0xFF9ADevice EUIu8[8]--Provisioned-LoRaWAN DevEUI, read and written over BLE only. A new value is used from the next LoRaWAN Reset or restart.
0xFF9BApp EUIu8[8]--Provisioned-LoRaWAN AppEUI/JoinEUI, read and written over BLE only. A new value is used from the next LoRaWAN Reset or restart.
0xFF9CApp Keyu8[16]--Provisioned-LoRaWAN AppKey, read and written over BLE only. A new value is used from the next LoRaWAN Reset or restart.
0xFF9FDevice Classu8RW0 to 2Provisioned (2)-LoRaWAN class (0: A, 1: B, 2: C). The CMD is delivered in Class C, so it receives downlinks at any time. Applies at the next join.
0xFFA0ADR ModeboolRW0, 11-Adaptive Data Rate (1: enabled). Applies at once when joined, otherwise at the next join.
0xFFA1Spreading Factoru8RW0 to 60-Data rate used when ADR is disabled. Applies at once when joined, otherwise at the next join.
0xFFA2ADR Profileu8RW0 to 20-ADR optimization strategy. Applies at once when joined, otherwise at the next join.
0xFFA3Radio Modeu8RW0 to 20-Radio mode selection; only 0 (LoRaWAN) is used, iQ D2D is not available.
0xFFA4Join Attemptsu8RW0 to 2550-Maximum number of join requests after a restart or a lost network, 0: no limit. Applies at the next restart, see Join Process.
0xFFA5Link Check TFu16RW1 to 655351440minLink check interval; values from 60 to 34566 are used. Applies at the next restart, see Join Process.
0xFFA6RetransmissionboolRW0, 11-Stored, no effect: the CMD does not support data retransmission, see LoRaWAN Communication.
0xFFA7Comm Alarmu8R-0-LoRaWAN communication alarm: 1 from the loss of the network until the next successful join, 0 otherwise, see Communication Watchdog.

LoRaWAN​

LoRaWAN Communication​

For stack communication behavior, including OTAA joins and device-class operation, see the YOBIIQ LoRaWAN Stack guide. Supported radio regions are listed in its LoRaWAN Region reference.

CMD specifics:

  • Device class: Class C at delivery, so the CMD receives downlinks at any time.
  • Region: EU863-870, fixed by the firmware.
  • Data retransmission: not supported. Retransmission (0xFFA6) has no effect, and measurements from before a join or during a loss of the network are not sent later.
  • Network quality test: runs after each join. The CMD does not show the result and does not send it, and a test cannot be requested by downlink.
  • Link status display: the CMD has no display, and firmware 1.0 shows the link status on no LED. Read Join Status (0xFF96) instead.
  • Loss of the network: the measurements and the selector switch detection go on. A switch position alarm that cannot be sent is kept, see Alarms.

Payloads​

Use the stack guide's Payload Structure as the shared framing reference. The CMD measurements use the i32 type: a 4-byte signed number, big endian.

See the stack guide's Uplinks section for generic device information and alarm messages. The CMD sends:

fPortUplink
1 to 10Periodic transmissions, see Periodic Transmissions
11Switch position alarms, see Alarms
50Generic device information after each join; answers to register write downlinks
100Answers to register read downlinks
Periodic Transmissions​

The periodic transmissions are configured by downlink as described in the stack guide's Periodic Transmission Configuration: up to 10 fPorts (1 to 10), each configured by a downlink on its own fPort, with an interval in minutes, confirmed or unconfirmed uplinks, and up to 10 registers. Each Raw or Calculated register in the list is measured when the uplink is built, see Analog Measurement.

Factory configuration: fPort 1 is active and sends every 5 minutes, unconfirmed, the eight calculated values: Input 1 to 4 Voltage (0x0101, 0x0201, 0x0301, 0x0401), then Input 1 to 4 Current (0x0501, 0x0601, 0x0701, 0x0801). fPorts 2 to 10 are not configured.

The factory uplink is 54 bytes long. At the lowest data rates (SF10 to SF12 in EU863-870) an uplink carries at most 51 bytes, so the last record, Input 4 Current (0x0801), goes in a second uplink of 12 bytes on fPort 1, sent right after the first with the same FF01 timestamp. The registers that do not fit in one uplink always go in the next uplinks of the fPort, see the stack guide's Periodic Transmissions.

Example of a factory periodic uplink, with CH1 set to voltage at 5 V, CH2 and CH4 set to current at 12 mA and 4 mA, and nothing connected to CH3:

FF016ABCF9C0010100001387020100000000030100000000040100000000050100000000060100002EE0070100000000080100000FA0
// FF01 6ABCF9C0 -> timestamp: 2026-09-30 12:00:00 UTC
// 0101 00001387 -> Input 1 Voltage: 4999 mV
// 0201 00000000 -> Input 2 Voltage: 0 mV
// 0301 00000000 -> Input 3 Voltage: 0 mV
// 0401 00000000 -> Input 4 Voltage: 0 mV
// 0501 00000000 -> Input 1 Current: 0 µA
// 0601 00002EE0 -> Input 2 Current: 12000 µA = 12 mA
// 0701 00000000 -> Input 3 Current: 0 µA
// 0801 00000FA0 -> Input 4 Current: 4000 µA = 4 mA

Example of a configuration: to transmit every 15 minutes over fPort 2 an unconfirmed uplink containing the switch position and both measurements of input CH1, send the following payload on fPort 2:

FF14000FFF1500FF1601FF17060A0001010501
// FF14 000F -> interval: 15 minutes
// FF15 00 -> unconfirmed uplinks
// FF16 01 -> uplink on fPort 2 active
// FF17 06 -> 3 registers (6 bytes):
// 0A00 -> Input 1 Switch Position
// 0101 -> Input 1 Voltage
// 0501 -> Input 1 Current

The device answers 00 on fPort 2.

Alarms​

The CMD sends a switch position alarm on fPort 11, unconfirmed and ahead of the periodic uplinks (see the stack guide's Alarms), whenever the detected position of a selector switch changes, to or from Unknown included, see Selector Switch Detection. The positions found at startup send no alarm.

The alarm holds the FF01 timestamp record (UTC time of the evaluation that found the change, 0 when the device has no network time yet) and, for each input whose position changed, three records:

BytesRecord
2 + 1Switch Position of the input (0x0A00, 0x0B00, 0x0C00, 0x0D00): the new position
2 + 4Voltage of the input (0x0101, 0x0201, 0x0301, 0x0401): the value the position was decided from
2 + 4Current of the input (0x0501, 0x0601, 0x0701, 0x0801): the value the position was decided from

Example: the selector switch of CH2 is set to current, with a 12 mA loop connected:

FF016ABCF9C00B0002020100000000060100002EE0
// FF01 6ABCF9C0 -> time of the change: 2026-09-30 12:00:00 UTC
// 0B00 02 -> Input 2 Switch Position: 2, Current
// 0201 00000000 -> Input 2 Voltage: 0 mV
// 0601 00002EE0 -> Input 2 Current: 12000 µA = 12 mA

An alarm uplink takes 6 bytes plus 15 bytes per input. At the lowest data rates (51 bytes) it carries at most 3 inputs.

Alarms that cannot be sent at once (the device is not joined, the previous alarm uplink is still being sent, or the input does not fit in the uplink) are kept and sent with the next alarm uplink, that is at the next position change of any input. A kept alarm holds the position and the values of the change it reports, while the FF01 timestamp of the uplink is the time of the new change. A later change of the same input replaces the kept alarm of that input. An alarm uplink that the device has queued but could not transmit (for example when a firmware update multicast session starts) is not repeated: its alarms are lost. The alarm uplinks are unconfirmed, so a transmitted alarm can also be lost on the way. To know the current positions at any time, read the Switch Position registers or add them to a periodic transmission.

See the stack guide's Downlinks section for command framing and application ports. The CMD commands are register writes on fPort 50 (the thresholds under Selector Switches); the device answers 00 when the command is applied and 01 when it is rejected, for example for a threshold out of range or a write to a measurement register.

CommandRegistersExample
Set the voltage threshold of an inputVoltage Threshold (0x0A01, 0x0B01, 0x0C01, 0x0D01)0A01000000C8 on fPort 50: CH1, 200 mV
Set the current threshold of an inputCurrent Threshold (0x0A02, 0x0B02, 0x0C02, 0x0D02)0B0200000BB8 on fPort 50: CH2, 3000 µA
Read the measurements and the position of an inputSwitch Position, Voltage and Current of the inputFFCC0A0001010501 on fPort 100: CH1

Example: to read the switch position and both measurements of CH1, send on fPort 100:

FFCC0A0001010501
// FFCC -> read request
// 0A00 -> Input 1 Switch Position
// 0101 -> Input 1 Voltage
// 0501 -> Input 1 Current

The device answers 00 on fPort 100, then, with CH1 set to voltage at 5 V:

0A0001010100001387050100000000
// 0A00 01 -> Input 1 Switch Position: 1, Voltage
// 0101 00001387 -> Input 1 Voltage: 4999 mV
// 0501 00000000 -> Input 1 Current: 0 µA

Release notes​

Firmware version 1.0​

Release date: to be confirmed.

  • First firmware for the CMD-L-0D-4I: four 0-10 V or 4-20 mA analog inputs, selector switch detection with alarm uplinks, LoRaWAN and BLE register access.

Disposal of waste (WEEE)​

Crossed-out wheeled-bin symbol indicating that electrical and electronic equipment must be collected separately.

Do not dispose of this electrical and electronic equipment with unsorted municipal waste or household rubbish. At the end of its service life, send the equipment to a designated collection point for separate treatment and recovery, in accordance with the WEEE rules applicable in your country.