Skip to main content

ACR-EX Display Enabled Pulse to NB-IoT Converter - Integration Manual

Integration manual for the ACRIOS Systems display enabled pulse to NB-IoT converter ACR-EX-100NILCD-I1-C.

Unboxing of ACR-EX Display Enabled Pulse to NB-IoT Converter

Introduction


The following article contains all the major information about ACRIOS Systems ACR-EX Display Enabled Pulse to NB-IoT Converter. The first part covers the converter integration and the hardware used in the device. The second part explains the device management and uplink and downlink messages are also covered in detail.

Typical Use-Case


The integration of a pulse to NB-IoT converter offers a robust solution for efficiently monitoring and managing various types of utility meters, such as electric or gas meters. This technology enables real-time data collection and transmission, facilitating enhanced operational efficiency and informed decision-making.

Scenario:

Consider an electric utility company responsible for providing electricity to a large urban area. This utility company needs to monitor electricity usage across thousands of residential and commercial properties. Traditional methods of manual meter reading are time-consuming, prone to errors, and lack the capability for real-time monitoring. The challenge is to implement an efficient, reliable, and scalable system for automatic meter reading (AMR) and data transmission to the central management system.

Solution:

The pulse to NB-IoT converter provides a plug-and-play solution to address this challenge. By retrofitting existing meters with pulse output to the converter, the utility company can seamlessly integrate the meters into the NB-IoT network. This enables the utility company to monitor electricity consumption in real-time, generate accurate billing, and optimize energy distribution.

Benefits:

  • Time and Cost Savings: The quick installation process eliminates extensive configuration and wiring efforts, reducing installation time and associated costs.
  • Seamless Integration: The plug-and-play nature of the solution simplifies the integration of heat meters into the district heating network, minimizing disruption to the residents.
  • Reliable Communication: The external antenna ensures reliable signal propagation, maintaining consistent communication even in complex urban environments.
  • Real-time Insights: The solution provides real-time heat consumption data, enabling accurate billing and informed decision-making for energy optimization.
  • Enhanced Data Accuracy: The conversion of pulse signals to digital data minimizes the risk of data discrepancies, leading to more accurate billing and usage analytics.
  • Long Battery Life: The NB-IoT modules are designed for low power consumption, ensuring long battery life for the converters and reducing maintenance frequency.
  • Secure Communication: NB-IoT offers robust security features to protect data integrity and prevent unauthorized access, ensuring secure communication between the meters and the central management system.

What Is a Pulse Output?


A pulse output signal is a common method used by various utility meters, such as electric, water, and gas meters, to indicate consumption levels.

This method works by assigning each pulse to a specific quantity of energy, water, or gas. For example, one pulse might represent 100 liters of water, 10 cubic meters of natural gas, or 1000 watts of electricity. Thus, for every 1000 watts that pass through your electric meter, one pulse is generated. The pulses are counted over time to calculate the total consumption.

Modern meters often use pulses at smaller measurement quantities to provide more detailed data. Pulse output meters are advantageous for interoperability, as they can be read by multiple vendors' systems, rather than being restricted to the meter's original vendor.

Pulse output is a reliable and efficient method for measuring and transmitting consumption data, playing a crucial role in modern utility management and automated meter reading systems.

Converter Integration


Functions

  • Configurable modes: Signal Tester and Pulse Counter managed by UDP or LwM2M
  • Configurable connection parameters
  • Configurable sampling period intervals
  • Automatic time synchronization on month change

Out of the Box Behaviors

By default, the converter is set to Pulse Counter mode.

Converter Readout (Payload)

The payload is a message sent from the device to the server or vice versa. There are two types of payloads: uplink and downlink.

The uplink payload is sent from the device to the server, and the downlink payload is sent from the server to the device. Uplink is used to send data from the device to the server, and downlink is used to send commands from the server to the device.

Uplink Command Bytes List
Command Byte (HEX)DescriptionLwM2M Resource
0xA5Periodic report165
0xA6Periodic report with a Coulomb counter166
0xA7Periodic status report167
0xAARead the archive170
0xCCRead the counter204
0xDARead a device info218
0xDDRead a ratio221
0xA0Ping160
0xEESignal tester238
0xEFSignal tester with a Coulomb counter239
0xB0Send a second of the day176
0xB1Send a second of the day - spread177
0xB2Read a display count time178
0xB3Read a display date time179
0xB4Read a maximum detector period180
0xB5Read a sampling period181
0xB6Read the config182
0xB7Read an APN183
0xB8Read an IP184
0xB9Read a port185
0xBARead a PLMN ID186
0xBBRead an ID187
0xBCRead mode188
0xBDRead UNITSTR189
0xBERead OBIS190
0xBFClear the archive acknowledgment191
0xE0CRC16 failed224
0xD0Read a LWM2M endpoint208
0xD1Read a LWM2M server URL209
0xD2Read a LWM2M server port210
0xD3Read a LWM2M local port211
0xD4Read a LWM2M lifetime212
0xD5Read a LWM2M PSK ID213
0xD6Read a LWM2M PSK214
0xC0Read a battery capacity192
0xC1Read a history period length193
0xC2Read a signal tester period194
0xC3Read a signal tester mode195
0xC4Read a signal tester payload length196
0xC5Read a meter ID197
Downlink Commands List
Command (ASCII)Description
SET_SEND_DAY_SECONDSet send day seconds
SET_SEND_DAY_SECOND_SPREADSet send day seconds - spread
SET_DISPLAY_COUNT_TIMESet display count time
SET_DISPLAY_DATE_TIMESet display date time
SET_MAXIMUM_DETECTOR_PERIODSet maximum detector period
SET_SAMPLING_PERIODSet sampling period
SET_COUNTERSet counter
SET_RATIOSet ratio
SET_NBIOT_PORTSet NBIoT port
SET_NBIOT_IPSet NBIoT IP
SET_NBIOT_APNSet NBIoT APN
SET_NBIOT_PLMNIDSet NBIoT PLMN ID
SET_IDSet ID
SET_MODESet mode
SET_UNITSTRSet UNITSTR
SET_OBISSet OBIS
SET_BATTERY_CAPACITYSet battery capacity
SET_HISTORY_PERIOD_LENGTHSet history period length
SET_METER_IDSet meter ID
SET_LWM2M_EPSet LWM2M end point
SET_LWM2M_URLSet LWM2M URL
SET_LWM2M_SERVER_PORTSet LWM2M server port
SET_LWM2M_LOCAL_PORTSet LWM2M local port
SET_LWM2M_LIFETIMESet LWM2M lifetime
SET_LWM2M_PSK_IDSet LWM2M PSK ID
SET_LWM2M_PSKSet LWM2M PSK
SET_SIG_TESTER_PERIODSet signal tester period
SET_SIG_TESTER_MODESet signal tester mode
SET_CONFIGSet config
GET_DEVICE_INFOGet device info
GET_SEND_DAY_SECONDGet send day seconds
GET_SEND_DAY_SECOND_SPREADGet send day seconds - spread
GET_DISPLAY_COUNT_TIMEGet display count time
GET_DISPLAY_DATE_TIMEGet display date time
GET_MAXIMUM_DETECTOR_PERIODGet maximum detector period
GET_SAMPLING_PERIODGet sampling period
GET_COUNTERGet counter
GET_RATIOGet ratio
GET_CONFIGGet config
GET_NBIOT_PORTGet NBIoT port
GET_NBIOT_IPGet NBIoT IP
GET_NBIOT_APNGet NBIoT APN
GET_NBIOT_PLMNIDGet NBIoT PLMN ID
GET_IDGet ID
GET_MODEGet mode
GET_UNITSTRGet UNITSTR
GET_OBISGet OBIS
GET_BATTERY_CAPACITYGet battery capacity
GET_HISTORY_PERIOD_LENGTHGet history period length
GET_METER_IDGet meter ID
GET_LWM2M_EPGet LWM2M end point
GET_LWM2M_URLGet LWM2M URL
GET_LWM2M_SERVER_PORTGet LWM2M server port
GET_LWM2M_LOCAL_PORTGet LWM2M local port
GET_LWM2M_LIFETIMEGet LWM2M lifetime
GET_LWM2M_PSK_IDGet LWM2M PSK ID
GET_LWM2M_PSKGet LWM2M PSK
GET_SIG_TESTER_PERIODGet signal tester period
GET_SIG_TESTER_MODEGet signal tester mode
MESSAGE_CRC16CRC error detection
READ_ARCHIVERead archive
CLEAR_ARCHIVEClear archive
RESETReset

Hardware Used


  1. ACR-EX-100NILCD-I1-C - Display Enabled Pulse to NB-IoT Converter

The converter is designed to retrofit existing meters with pulse output to an NB-IoT communication. The converter is equipped with a pulse input, NB-IoT module, and a display for an easy on-site monitoring.

Hardware Limitations


  • Battery life can last up to 15 years, but this may vary significantly due to external factors and natural degradation.
  • Pulse input is equipped with a low-pass filter with a cut-off frequency of 7234 Hz.

Acrex input scheme

ACR-EX input schematic

Application Limitations


  • FW low-pass filter with a cut-off frequency of 50 Hz.
  • FW NB-IoT module sent size limitation of 512 bytes.

This means messages larger than 512 B are truncated, with only the initial portion sent, leading to data loss for the remaining content.

Device Management


IoT device management refers to the process of monitoring, configuring, updating, and maintaining IoT devices throughout their lifecycle. It involves various tasks and functionalities aimed at ensuring the reliable and efficient operation of IoT devices deployed in networks. Our device can be managed with the following standards/protocols:

  1. IEC
  2. UDP
  3. LwM2M

IEC Device Management


IEC 62056-21, formerly known as IEC 1107, is an international standard that specifies the DLMS/COSEM protocol, which stands for Device Language Message Specification (DLMS) and Companion Specification for Energy Metering (COSEM). This protocol is widely used for communication between utilities and various types of energy meters, facilitating efficient data exchange for meter reading, billing, and monitoring purposes. It defines the structure and format of messages exchanged between energy meters and data collection systems, ensuring interoperability and compatibility across different vendors and devices.

Our device is equipped with an optical port compliant with the IEC 62056-21 standard, enabling effortless communication and compatibility.

Optical Probe

An optical probe, often referred to as an optical port or optical head, is a device used for communication with energy meters that support the DLMS/COSEM protocol according to the IEC 62056-21 standard. It typically consists of an optical sensor and associated circuitry housed in a compact unit.

The optical probe is connected to a computer or data collection device via a serial or USB interface. It emits pulses of light that are received by the optical port on the energy meter. These pulses encode data such as meter readings, parameters, or commands and that allows bidirectional communication between the meter and an external device.

ORNO OR WE 518 optical probe

ORNO OR WE 518 optical probe

We also offer ORNO optical probes for the management of our devices (datasheet: EN).

If you wish to order the probes from ACRIOS, use the order code of: Opticka_hlavice_USB-E379

info

Communication starts at 300 Bd and after sign-on, our device switches to 9600 Bd.

Operation

The device uses C protocol mode and fifth baud speed.

info

The C protocol mode ensures bidirectional data exchange with baud rate switching and allows data retrieval, programming with increased security, and modes defined by the manufacturer.

The following procedure happens when the device is being used:

  1. PC sends a request for a transfer of ACR-EX‘s address.
  2. ACR-EX sends a response with its address. (Sign On)
  3. PC sends a command for a mode and a baud speed.
    1. Read mode: ACR-EX sends a response containing the archive data.
    2. Programming mode: ACR-EX sends a response with an operand for the security algorithm.
      1. PC sends a password (IMEI).
      2. ACR-EX sends an acknowledgment.
      3. Communication between the devices ends with the Sign Off command. (Timeout)

Read Mode

read-diagram

Read mode communication diagram

Programming Mode

Programming mode communication diagram

Registers

The device utilizes a range of registers for its IEC interface, facilitating crucial operations and configurations. These registers encompass a diverse set of functionalities, such as:

  • Network settings
  • Data transmission intervals
  • Signal testing parameters
  • And others
Register NameAddressLengthOperationsRange/FormatData TypeDefault Value
IEC_REG_COUNTER04R/W0 - 4294967295Integer0 [count]
IEC_REG_IP464R/WIPv4String
IEC_REG_PORT684R/W0 - 65535Integer4242
IEC_REG_APN7264R/W1 - 63 charsStringauto
IEC_REG_PLMNID1364R/W0 / 00000 - 99999Integer0
IEC_REG_ID14064R/W1 - 63 charsStringDevice IMEI
IEC_REG_RATIO2044R/WRatiosInteger1:1
IEC_REG_SIGNAL_TESTER2084R/W0 - 2Integer0 (Pulse counter UDP)
IEC_REG_UNIT21216R/W1 - 15 charsString*m3
IEC_REG_OBIS_CODE22816R/Wnn.nn.nnString3.0.0
IEC_REG_SEND_DAY_SEC2444R/W0 - 86399Integer21600
IEC_REG_SEND_DAY_SEC_SPREAD2484R/W0 - 86399Integer0
IEC_REG_SAMPLING_PERIOD2524R/W300 - 86399Integer3600
IEC_REG_DISPLAY_COUNT_TIME2564R/W3 - 600Integer20
IEC_REG_DISPLAY_DATE_TIME2604R/W6 - 600Integer4
IEC_REG_MAXIMUM_DETECTOR_PERIOD2644R/W60 - 86399Integer300
IEC_REG_LWM2M_SERVER_URL26864R/WURL/IPString
IEC_REG_LWM2M_SERVER_PORT3324R/W0 - 65535Integer5683
IEC_REG_LWM2M_LOCAL_PORT3364R/W0 - 65535Integer56833
IEC_REG_LWM2M_EP34064R/W1 - 63 charsStringacrex
IEC_REG_LWM2M_LIFETIME4044R/W86399 - 2678369Integer30
IEC_REG_DEVICE_INFO408128RStringDepends on FW and HW
IEC_REG_LWM2M_PSKID53664R/WString
IEC_REG_LWM2M_PSK60064R/WString
IEC_REG_SIG_TESTER_PERIOD6644R/WInteger
IEC_REG_SIG_TESTER_MODE6684R/WInteger
IEC_REG_SIG_TESTER_PAYLOAD_LEN6724R/WInteger
IEC_REG_BATTERY_CAPACITY6764R/W100 - 20000Integer8500 [mAh]
IEC_REG_HISTORY_PERIOD_LEN6804R/W0 - 3Integer3 (4 days)
IEC_REG_METERID68416R/W1 - 15 charsString
IEC_REG_EXIT65530NoneWNoneNoneNone
info

n - number from 0 to 9

Different color coding represents different categories: Common registers, common Counter registers for UDP and LwM2M modes, LwM2M mode registers and Signal Tester mode registers.

Ratios

RatioInteger
1000000:11000000
100000:1100000
10000:110000
1000:11000
100:1100
10:110
1:11
1:10-10
1:100-100
1:1000-1000
1:10000-10000
1:100000-100000
1:1000000-1000000

Converter Modes

  • 0: Pulse counter UDP
  • 1: Signal Tester
  • 2: Pulse counter LwM2M

Managing Devices

To manage the device you need a Chromium-based browser (Google Chrome is recommended) and an optical probe.

Connecting to the GUI and configuring the device

  1. Connect the optical probe to the computer via USB port.
  2. Open the browser and navigate to ACR-EX GUI.
    acr-ex_gui
  3. Click on the Connect button.
    acr-ex_gui
  4. The optical head should be detected (make sure the driver was installed), select it and click on the Connect.
    acr-ex_gui_port
  5. If you connected successfully, you should see the following screen.
    acr-ex_gui_port_init
  6. Put the device in the IEC mode and connect the probe to the device:
    acr-ex_iec_gif
warning

IEC mode has timeout of 30 seconds. If the device doesn't receive any commands in that time, it will switch back to the previous mode. This timeout is reset with every command received.

  1. You can either Load Config From Device or Show Default Values (of configuration).
    acr-ex_gui_loaded
  2. Configure the device config according to your needs.
  3. Press Save Config To Device.

Reading the archive

  1. After connecting to the device, click on the Read Archive button.
    acr-ex_guiArchive
  2. Click on the Read Archive button.
    acr-ex_guiArchiveRead

Setting the counter

  1. After connecting to the device, click on the Set Counter button.
    acr-ex_guiCounter
  2. You can either Load Counter or Set Counter.
    acr-ex_guiCounterLoaded
  3. Set the counter value and click on the Set Counter button.
    acr-ex_guiCounterSet

UDP Device Management


UDP is a lightweight and fast communication protocol designed for time-sensitive transmissions such as real-time communication or IoT sensor networks. It provides a connectionless method for sending and receiving data packets over IP networks, ensuring minimal delay and low latency.

UDP is a part of the Internet Protocol suite, working alongside other protocols like TCP to facilitate data exchange over networks.

UDP, unlike TCP, does not establish connections before transmitting data. This means that UDP operates in a connectionless manner, where each UDP packet is sent independently without prior setup or acknowledgment from the receiver.

danger

UDP is not a secure protocol! Unlike TCP, UDP does not provide built-in security features such as encryption, authentication, or integrity checks.

Securing UDP

Using a Private APN can significantly enhance the security of your UDP communications, especially in cellular networks. A Private APN provides a dedicated and isolated network path, which helps to secure data transmission between the devices and the server. Here are the key benefits and steps to secure UDP with a Private APN:

  • Isolated network: Private APNs create a separate network environment for your devices, ensuring that data traffic is not shared with other users or devices.
  • Enhanced security: With a Private APN, your data is transmitted through a secure tunnel, which prevents unauthorized access and reduces the risk of attacks such as sniffing and spoofing.
  • Improved reliability: By using a dedicated network, you can achieve more consistent performance and lower latency compared to public networks.
  • Cost saving: Private APNs can help reduce data costs by optimizing data usage and minimizing unnecessary traffic.

Managing Devices

Managing our device using UDP protocol consists of sending downlink commands to the device. The device will respond with an uplink payload containing the requested data or acknowledgment.

LwM2M Device Management


LwM2M is a lightweight and efficient device management protocol designed for IoT devices. It provides a standardized way to manage and monitor IoT devices remotely, enabling a secure and reliable communication between devices and servers. LwM2M is based on the CoAP (Constrained Application Protocol) and uses the OMA (Open Mobile Alliance) LwM2M object model to define the structure and attributes of IoT devices.

Our device uses SIMCOM SIM7022 module for communication which supports the LwM2M protocol.

Data

In LwM2M protocol, objects and resources are fundamental concepts that represent the structure and attributes of IoT devices and their capabilities.

Objects

Objects represent logical groupings of related resources that define the functionality or capabilities of IoT devices. Each object is identified by a unique Object ID, which is a numerical value assigned to it within the LwM2M specification. Objects encapsulate properties, behaviors, and metadata associated with a particular aspect of a device functionality, such as:

  • Device information
  • Connectivity
  • Sensors
  • Actuators
  • Firmware management
  • And others

Resources

Resources are individual data elements or attributes within an object that represent specific properties, states, or capabilities of an IoT device. Each resource is identified by a unique Resource ID within its parent object and is accessed using a combination of an Object ID and a Resource ID.

Resources can be of different types, such as integer, float, string, boolean, opaque, etc., depending on the type of data they represent. Resources may have associated operations or functionalities, such as read, write, execute, or observe, which define how they can be accessed, modified, or monitored.

Data Operations

LwM2M protocol facilitates various data operations for managing and interacting with IoT devices. These operations include read, write, execute, and observe, which allow clients and servers to access, modify, execute, and monitor the data and resources of IoT devices remotely.

Read

Reading data from resources on IoT devices allows retrieving information such as sensor readings, device status, or configuration parameters. Clients can send read requests for specific resources using LwM2M protocols, and devices respond with the requested data.

Write

Writing data to resources enables configuring device settings, updating parameters, or sending commands to IoT devices. Clients can send write requests to modify resource values, and devices acknowledge the changes accordingly.

Execute

Executing commands or actions on IoT devices triggers specific behaviors or operations. Clients can invoke execute requests on executable resources, prompting devices to perform tasks such as resetting, rebooting, or initiating actions based on the request.

Observe

Observing resources enables continuous monitoring of data changes or events on IoT devices. Clients can establish observation relationships with specific resources, and devices notify clients about updates or modifications to the observed data in real-time.

Server

To use LwM2M, you need to set up the server and connect it to the device. The server is responsible for managing device registrations, data communication, firmware updates, and device monitoring. The server can be a cloud-based platform, an on-premises server, or a dedicated LwM2M server. You could use an open-source LwM2M server such as Leshan or a commercial LwM2M platform such as Coiote.

Adding a New Device to the Server

To add a new device to the LwM2M server, you need to register the device with the server by providing the necessary device information, such as the endpoint name and security credentials.

Leshan

info

For comprehensive setup instructions, refer to the official documentation: Getting Started with Leshan

Leshan supports the following security modes:

  1. PSK (Pre-shared key)
  2. RPK (Raw public-key)
  3. X.509 (Certificate)
  4. NoSec (No security)

To add a device to a Leshan server, you'll need to configure its endpoint and security mode. If you opt for modes other than "NoSec", identity and key parameters are required for authentication. This ensures a secure and seamless integration of devices into the Leshan ecosystem.

Coiote

info

Setting up Coiote is straightforward and user-friendly. It's basically signing up for an account and choosing the desired pricing plan.

Coiote supports the following security modes:

  1. PSK (Pre-shared key)
  2. NoSec (No security)

To add a device to a Coiote server, you'll need to configure its endpoint and security mode. If you opt for PSK, you'll need to provide a key identity and a key for authentication. The key format can be HEX or plain text. Coiote has a custom name option for better identification.

Client

We use our own C-based LwM2M client for streamlined performance and customized functionality. This tailored solution ensures efficient management of IoT devices to meet our specific needs.

First Time Client Setup

To use LwM2M, you need to set up the device and connect it to the server. The initial setting of the device can be done manually using an optical probe or by us during the production if you provided us with the parameters.

Necessary parameters:

  • Server address (URL/IP)
    • Bootstrap server
  • Server port (5683/5684 - secure)
    • Security mode (PSK)
    • Pre-shared key
  • Connection type (IPV4/IPV6)
  • Local port
  • Endpoint name
  • Binding mode
  • Lifetime
caution

In the absence of a security mode and pre-shared key settings, the device will default to a non-secure mode.

ACR-EX Custom LwM2M Objects and Resources

Our device uses custom LwM2M objects and resources to represent its functionality and capabilities. Custom objects and resources in LwM2M offer the flexibility to tailor the device management to specific use cases and requirements.

These objects and resources are defined according to the OMA LwM2M object model and provide a structured representation of the device's properties, states, and behaviors.

By defining custom objects and resources, developers can extend the standard functionality of LwM2M to accommodate unique device features and data points.

Such customization empowers users to efficiently manage diverse IoT devices and extract meaningful insights from their data, enhancing overall system performance and functionality.

info

Our resource IDs are generated by adding the decimal representation of a hexadecimal command byte to the offset of 27000. For example, the resource ID for the command byte 0xA5 is 27000 + 165 = 27165. You can find the calculated command byte values in the LwM2M resource column of the Uplink command bytes table.

ACR-EX Connection Configuration (Object ID 32769)

Resource IDNameTypeUnitsOperations
27183APNString-R/W
27184IPString-R/W
27185PortString-R/W
27186PLMNIDString-R/W
27187IDString-R/W

ACR-EX Device Configuration (Object ID 32770)

Resource IDNameTypeUnitsOperations
XXXXXDeviceResetString-R/W
27189UnitStrString-R/W
27190ObisCodeString-R/W
27191RatioString-R/W
27192ModeString-R/W

ACR-EX Detector Configuration (Object ID 32771)

Resource IDNameTypeUnitsOperations
27178DisplayCountTimeString-R/W
27179DisplayDateTimeString-R/W
27180MaximumDetectorPeriodString-R/W
27181SamplingPeriodString-R/W
27176SendSecondOfDayString-R/W
27177SendSecondOfDaySpreadString-R/W

ACR-EX LwM2M Configuration (Object ID 32772)

Resource IDNameTypeUnitsOperations
27208LWM2MEndpointString-R/W
27209LWM2MServerURLString-R/W
27210LWM2MServerPortString-R/W
27211LWM2MLocalPortString-R/W
27212LWM2MLifetimeString-R/W

ACR-EX (SECURE) Configuration (Object ID 32773)

Resource IDNameTypeUnitsOperations
27213LWM2MPSKIDString-R/W
27214LWM2MPSKString-R/W

ACR-EX Gas Meter (ID 3277X)

Resource IDNameTypeUnitsOperations

Note that this feature is currently under development.


Every payload starts with a custom ID and consists of command bytes and data. The command byte is a hexadecimal value that represents the command to be executed. The data is a sequence of bytes that represent the parameters of the command.

Custom ID

Custom ID is a unique identifier for the device. It is represented by a sequence of bytes. The length of a custom ID is up to 64 bytes.

ExampleDescriptionValue
0x38 0x30 0x30 0x30 0x30 0x32Custom ID80002

Periodic Report (0xA5)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xA5Command byte[1B]1NONE
0x4F 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 579 [number]
0x01 0x00 0x00 0x00Ratio[4B] (little endian)6 - 91 [-]
0x4C 0x0EBattery voltage (CPU)[2B] (little endian)10 - 113660 [mV]
0x12Signal[1B]1218 [CSQ units]
0x0CTemperature (CPU)[1B]1312 [°C]
0x47 0x20 0xA6 0x66Minimum flow rate timestamp[4B] (little endian)14 - 171722163271 [s]
0x40 0x42 0x0F 0x00 0x00 0x00 0x00 0x00Minimum flow rate[8B] (little endian)18 - 251000000 [-]
0xD6 0xF2 0xAA 0x66Maximum flow rate timestamp[4B] (little endian)26 - 291722479318 [s]
0x40 0x93 0x34 0x02 0x00 0x00 0x00 0x00Maximum flow rate[8B] (little endian)30 - 3737000000 [-]
0xD9 0x99 0xA5 0x661st report timestamp[4B] (little endian)38 - 411722128857 [s]
0x00 0x00 0x00 0x001st report value[4B] (little endian)42 - 450 [count]
...............
0x12 0xBF 0xB2 0x66Nth report timestamp[4B] (little endian)1722990354 [s]
0x05 0x0A 0x00 0x00Nth report value[4B] (little endian)2565 [count]

Periodic Report Byte Stream Payload Example:

38 30 30 30 30 32 A5 4F 00 00 00 01 00 00 00 4C 0E 12 0C 47 20 A6 66 40 42 0F 00 00 00 00 00 D6 F2 AA 66 40 93 34 02 00 00 00 00 D9 99 A5 66 00 00 00 00 ... 12 BF B2 66 05 0A 00 00 

This is a periodic report sent by the converter to the server.

Periodic Report with a Coulomb Counter (0xA6)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xA6Command byte[1B]1NONE
0x05 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 55 [number]
0x01 0x00 0x00 0x00Ratio[4B] (little endian)6 - 91 [-]
0x12 0x0EBattery voltage (CPU)[2B] (little endian)10 - 113602 [mV]
0x12Signal[1B]1218 [CSQ units]
0x12Temperature (CPU)[1B]1318 [°C]
0x06 0x00Total consumed energy[2B] (little endian)14 - 156 [mAh]
0x2B 0x00Equivalent Series Battery Resistance Estimate[2B] (little endian)16 - 1743 [mOhm]
0xD6 0x0DInput voltage load[2B] (little endian)18 - 193542 [mV]
0x2BDegree Celsius (CC)[1B]2043 [°C]
0x47 0x20 0xA6 0x66Minimum flow rate timestamp[4B] (little endian)21 - 241722163271 [s]
0x40 0x42 0x0F 0x00 0x00 0x00 0x00 0x00Minimum flow rate[8B] (little endian)25 - 321000000 [-]
0xD6 0xF2 0xAA 0x66Maximum flow rate timestamp[4B] (little endian)33 - 361722479318 [s]
0x40 0x93 0x34 0x02 0x00 0x00 0x00 0x00Maximum flow rate[8B] (little endian)37 - 4437000000 [-]
0xD9 0x99 0xA5 0x661st report timestamp[4B] (little endian)45 - 481722128857 [s]
0x00 0x00 0x00 0x001st report value[4B] (little endian)49 - 520 [count]
...............
0x12 0xBF 0xB2 0x66Nth report timestamp[4B] (little endian)1722990354 [s]
0x05 0x0A 0x00 0x00Nth report value[4B] (little endian)2565 [count]

Periodic Report with a Coulomb Counter Byte Stream Payload Example:

38 30 30 30 30 32 A6 05 00 00 00 01 00 00 00 12 0E 12 12 06 00 2B 00 D6 0D 2B 47 20 A6 66 40 42 0F 00 00 00 00 00 D6 F2 AA 66 40 93 34 02 00 00 00 00 D9 99 A5 66 00 00 00 00 ... 12 BF B2 66 05 0A 00 00 

This is a periodic report with a Coulomb counter sent by the converter to the server.

Periodic Status Report (0xA7)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xA7Command byte[1B]1NONE
0x05 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 55 [number]
0x01 0x00 0x00 0x00Ratio[4B] (little endian)6 - 91 [-]
0x12 0x0EBattery voltage (CPU)[2B] (little endian)10 - 113602 [mV]
0x12Signal[1B]1218 [CSQ units]
0x12Temperature (CPU)[1B]1318 [°C]
0x34 0x21Battery capacity[2B] (little endian)14 - 158500 [mAh]
0x06 0x00Total consumed energy[2B] (little endian)6 [mAh]
0x2B 0x00Equivalent Series Battery Resistance Estimate[2B] (little endian)43 [mOhm]
0xD6 0x0DInput voltage load[2B] (little endian)3542 [mV]
0x2BDegree Celsius (CC)[1B]43 [°C]
0x41 0x43 0x52 0x49 0x4F 0x53 0x00Meter ID[xB]ACRIOS
0x02History period length[1B]3 [days]
0x60 0x23 0x5D 0x1FSend timestamp[4B] (little endian)526197600 [s]
0x0C 0xD3 0x5B 0x1FMinimum flow rate timestamp[4B] (little endian)526111500 [s]
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00Minimum flow rate[8B] (little endian)0 [-]
0xF4 0x9E 0x5C 0x1FMaximum flow rate timestamp[4B] (little endian)526163700 [s]
0x1A 0x41 0x00 0x00 0x00 0x00 0x00 0x00Maximum flow rate[8B] (little endian)16666 [-]
0x10 0x0E 0x00 0x00Sampling period[4B] (little endian)3600 [s]
0x00 0x6A 0x58 0x1F1st report timestamp[4B] (little endian)525888000 [s]
0x08 0x00 0x00 0x001st report value[4B] (little endian)8 [count]
...............
0x92 0x05 0x00 0x00Nth report value[4B] (little endian)1426 [count]
info

History period length:

  • 0: Sends only new samples since last sending (for all sampling rates).
  • 1, 2, 3: Sends samples for the current day plus an additional history of 1, 2, or 3 previous days (intended for 1-hour sampling rate).

Periodic Status Report Byte Stream Payload Example:

38 30 30 30 30 32 A7 05 00 00 00 01 00 00 00 12 0E 12 12 34 21 06 00 2B 00 D6 0D 2B 41 43 52 49 4F 53 00 03 60 23 5D 1F 0C D3 5B 1F 00 00 00 00 00 00 00 00 F4 9E 5C 1F 1A 41 00 00 00 00 00 00 10 0E 00 00 00 6A 58 1F 08 00 00 00 ... 92 05 00 00 

This is a periodic status report sent by the converter to the server.

Read the Archive (0xAA)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xAACommand byte[1B]1NONE
0x74 0x1E 0x06 0xE4Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXRatio[4B] (little endian)6 - 9
0xXX 0xXX 0xXX 0xXXArchive start[4B]10 - 13
0xXX 0xXX 0xXX 0xXXSampling period[4B]14 - 17
0xXX ...Samples[xB]18 - ^

xB = Variable size

Read the Counter (0xCC)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xCCCommand byte[1B]1NONE
0x72 0x1E 0xA2 0xABMessage sequence number[4B] (little endian)2 - 5
0x01 0x00 0x00 0x00Count[4B] (little endian)6 - 9

Read a Device Info (0xDA)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xDCommand byte[1B]1NONE
0x71 0x1E 0x6B 0x8FMessage sequence number[4B] (little endian)2 - 5
0xXX ...Device info[xB]6 - ^

Read a Ratio (0xDD)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xDDCommand byte[1B]1NONE
0x71 0x1E 0x6B 0x8FMessage sequence number[4B] (little endian)2 - 5
0x18 0x00 0xC0 0xEBRatio[4B] (little endian)6 - 9

Ping (0xA0)

Payload Description
ExampleDescriptionSizeByte Number
0xA0Command byte[1B]1

Signal Tester (0xEE)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xEECommand byte[1B]1NONE
0x00 0x01 0x00 0x00Message sequence number[4B] (little endian)2 - 5256 [number]
0xE8 0x03 0x00 0x00Ratio[4B] (little endian)6 - 91000 [-]
0xE8 0x0DBattery voltage (CPU)[2B] (little endian)10 - 113560 [mV]
0x12Signal[1B]1218 [CSQ units]
0x30Temperature (CPU)[1B]1348 [°C]
0xAF 0x25 0x00 0x00Pulses[4B] (little endian)21 - 249647 [count]

Signal Tester with a Coulomb Counter (0xEF)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xEFCommand byte[1B]1NONE
0x00 0x01 0x00 0x00Message sequence number[4B] (little endian)2 - 5256 [number]
0xE8 0x03 0x00 0x00Ratio[4B] (little endian)6 - 91000 [-]
0xE8 0x0DBattery voltage (CPU)[2B] (little endian)10 - 113560 [mV]
0x12Signal[1B]1218 [CSQ units]
0x30Temperature (CPU)[1B]1348 [°C]
0x25 0x00Total consumed energy[2B] (little endian)14 - 1537 [mAh]
0x60 0x01Equivalent Series Battery Resistance Estimate[2B] (little endian)16 - 17352 [mOhm]
0xD7 0x0DInput voltage under load[2B] (little endian)18 - 193543 [mV]
0x1ADegree Celsius[1B]2026 [°C]
0xAF 0x25 0x00 0x00Pulses[4B] (little endian)21 - 249647 [count]

The Table of Signal Values

ValueRSSI dBmCondition
30-53Excellent
29-55Excellent
28-57Excellent
27-59Excellent
26-61Excellent
25-63Excellent
24-65Excellent
23-67Excellent
22-69Excellent
21-71Excellent
20-73Excellent
19-75Good
18-77Good
17-79Good
16-81Good
15-83Good
14-85OK
13-87OK
12-89OK
11-91OK
10-93OK
9-95Marginal
8-97Marginal
7-99Marginal
6-101Marginal
5-103Marginal
4-105Marginal
3-107Marginal
2-109Marginal
99-Unknown or Undetectable

Send a Second of the Day (0xB0)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB0Command byte[1B]1NONE
0x26 0xED 0x1D 0x39Message sequence number[4B] (little endian)2 - 5
0x30 0x00 0x00 0xC0Second of day[4B]6 - 9

Send a Second of the Day - Spread (0xB1)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB1Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXSecond of day - spread[4B] (little endian)6 - 9

Read a Display Count Time (0xB2)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB2Command byte[1B]1NONE
0x1F 0x00 0x30 0x10Message sequence number[4B] (little endian)2 - 5
0x74 0x1E 0xD7 0xE0Display count time[4B] (little endian)6 - 9

Read a Display Date Time (0xB3)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB3Command byte[1B]1NONE
0x71 0x1E 0xEA 0x02Message sequence number[4B] (little endian)2 - 5
0x18 0x00 0x90 0xC1Display date time[4B] (little endian)6 - 9

Read a Maximum Detector Period (0xB4)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB4Command byte[1B]1NONE
0xXX 0xXX 0xXX 0xXXMessage sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXMaximum detector period time[4B] (little endian)6 - 9

Read a Sampling Period (0xB5)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB5Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXSampling period[4B] (little endian)6 - 9

Read the Config (0xB6)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB6Command byte[1B]1NONE
0xEC 0x1D 0x39 0x30Message sequence number[4B] (little endian)2 - 5
0xXX ...Custom APN[xB]6 - ^
0xXX ...Custom IP[xB]
0xXX 0xXX 0xXX 0xXXCustom port[4B]
0xXX 0xXX 0xXX 0xXXCustom PLMNID[4B]
0xXX ...Custom ID[xB]
0xXX 0xXX 0xXX 0xXXRatio[4B] (little endian)
0xXX 0xXX 0xXX 0xXXMode[4B]
0xXX ...UNITSTR[xB]
0xXX ...OBISCode[xB]
0xXX 0xXX 0xXX 0xXXSecond of day[4B]
0xXX 0xXX 0xXX 0xXXSecond of day - spread[4B]
0xXX 0xXX 0xXX 0xXXDisplay count time[4B]
0xXX 0xXX 0xXX 0xXXDisplay date time[4B]
0xXX 0xXX 0xXX 0xXXMaximum detector period[4B]
0xXX 0xXX 0xXX 0xXXSampling period[4B]
0xXX ...LWM2M end point[XB]
0xXX ...LWM2M server URL[XB]
0xXX 0xXX 0xXX 0xXXLWM2M server port[4B]
0xXX 0xXX 0xXX 0xXXLWM2M local port[4B]
0xXX 0xXX 0xXX 0xXXLWM2M lifetime[4B]
0xXX ...LWM2M PSK ID[XB]
0xXX ...LWM2M PSK[XB]
0xXX 0xXX 0xXX 0xXXSignal tester period[4B]
0xXX 0xXX 0xXX 0xXXSignal tester mode[4B]

xB = Variable size

Read an APN (0xB7)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB7Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...Custom APN[xB]6 - ^

xB = Variable size

Read an IP (0xB8)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB8Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...Custom IP[xB]6 - ^

xB = Variable size

Read a Port (0xB9)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xB9Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXCustom port[4B] (little endian)6 - 9

Read a PLMN ID (0xBA)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xBACommand byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXCustom PLMNID[4B] (little endian)6 - 9

Read an ID (0xBB)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xBBCommand byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...Custom ID[xB]6 - ^

xB = Variable size

Read Mode (0xBC)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xBCCommand byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXMode[4B] (little endian)6 - 9

Read UNITSTR (0xBD)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xBDCommand byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...UNITSTR[xB]6 - ^

xB = Variable size

Read OBIS (0xBE)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xBECommand byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...OBIS[xB]6 - ^

xB = Variable size

Clear the Archive Acknowledgment (0xBF)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xBFCommand byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5

Read a Battery Capacity (0xC0)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xC0Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0x00 0x00Battery capacity[2B] (little endian)6 - 7

Read a History Period Length (0xC1)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xC1Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0x03History period length[1B]64 [days]
info

History period length is indexed from 0 to 3, where 0 represents 1 day, 1 represents 2 days, etc.

Read a Meter ID (0xC5)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xC5Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0x00Meter ID[16B]6 - 21
info

Meter ID is a string with up to 15 characters and null terminator.

CRC16 Failed (0xE0)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xE0Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5

Read a LWM2M Endpoint (0xD0)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xD0Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...LWM2M EP[xB]6 - ^

xB = Variable size

Read a LWM2M Server URL (0xD1)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xD1Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...LWM2M server URL[xB]6 - ^

xB = Variable size

Read a LWM2M Server Port (0xD2)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xD2Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXLWM2M server port[4B] (little endian)6 - 9

Read a LWM2M Local Port (0xD3)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xD3Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXLWM2M local port[4B] (little endian)6 - 9

Read a LWM2M Lifetime (0xD4)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xD4Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXLWM2M lifetime[4B] (little endian)6 - 9

Read a LWM2M PSK ID (0xD5)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xD5Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...LWM2M PSK ID[xB]6 - ^

XB = Variable size

Read a LWM2M PSK (0xD6)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xD6Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX ...LWM2M PSK[XB]6 - ^

XB = Variable size

Read a Signal Tester Period (0xC2)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xC2Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXSignal tester period[4B] (little endian)6 - 9

Read a Signal Tester Mode (0xC3)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xC3Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXSignal tester mode[4B] (little endian)6 - 9

Read a Signal Tester Payload Length (0xC4)

Payload Description
ExampleDescriptionSizeByte NumberValue
0xC4Command byte[1B]1NONE
0x01 0x00 0x00 0x00Message sequence number[4B] (little endian)2 - 5
0xXX 0xXX 0xXX 0xXXSignal tester payload length[4B] (little endian)6 - 9

Command (ASCII)Description
SET_SEND_DAY_SECONDSet send day seconds
SET_SEND_DAY_SECOND_SPREADSet send day seconds - spread
SET_DISPLAY_COUNT_TIMESet display count time
SET_DISPLAY_DATE_TIMESet display date time
SET_MAXIMUM_DETECTOR_PERIODSet maximum detector period
SET_SAMPLING_PERIODSet sampling period
SET_COUNTERSet counter
SET_RATIOSet ratio
SET_NBIOT_PORTSet NBIoT port
SET_NBIOT_IPSet NBIoT IP
SET_NBIOT_APNSet NBIoT APN
SET_NBIOT_PLMNIDSet NBIoT PLMNID
SET_IDSet ID
SET_MODESet mode
SET_UNITSTRSet UNITSTR
SET_OBISSet OBIS
SET_BATTERY_CAPACITYSet battery capacity
SET_HISTORY_PERIOD_LENSet history period length
SET_METER_IDSet meter ID
SET_LWM2M_EPSet LWM2M EP
SET_LWM2M_URLSet LWM2M URL
SET_LWM2M_SERVER_PORTSet LWM2M server port
SET_LWM2M_LOCAL_PORTSet LWM2M local port
SET_LWM2M_LIFETIMESet LWM2M lifetime
SET_LWM2M_PSK_IDSet LWM2M PSK ID
SET_LWM2M_PSKSet LWM2M PSK
SET_SIGNAL_TESTER_PERIODSet signal tester period
SET_SIGNAL_TESTER_MODESet signal tester mode
SET_CONFIGSet config

Parameters are set by sending a payload to the device. The payload consists of a command and a value. The command is an ASCII string that represents the parameter to be set. Command and value are separated by an equal sign [=].

tip

Parameters can be set individually or multiple parameters can be set at once. To set all parameters at once, use the SET_CONFIG command.

caution

Setting parameters related to NB-IoT functionalities will cause the NB-IoT modem to undergo reinitialization in order to apply the new settings.

ExampleDescription
SET_SEND_DAY_SECOND=24Set Send day seconds parameter value to 24
note

GET_SEND_DAY_SECOND command from the example can be replaced by any command from the Downlink Setters list except GET_CONFIG.

ASCII stream payload example:

SET_SEND_DAY_SECOND=24

Multiple setter commands can be combined in one payload. Each command is separated by a blank space ( ).

ExampleDescription
SET_SEND_DAY_SECOND=24 SET_DISPLAY_COUNT_TIME=10Set Send day seconds to 24 and Display count time to 10

ASCII stream payload example:

SET_SEND_DAY_SECOND=24 SET_DISPLAY_COUNT_TIME=10

CRC Error Detection

A payload can be secured by CRC. To enable CRC, add the MESSAGE_CRC16 command at the end of the payload.

If the payload secured by CRC fails the check, the device discards the payload and informs the server to process a new command or interrupt the processing.

ExampleDescription
SET_SEND_DAY_SECOND=24 SET_DISPLAY_COUNT_TIME=10 MESSAGE_CRC16=D6FFSet two parameters and secure payload with CRC check

ASCII stream payload example:

SET_SEND_DAY_SECOND=24 SET_DISPLAY_COUNT_TIME=10 MESSAGE_CRC16=D6FF

To use CRC, the CRC check value must be calculated and added to the payload. The CRC check value is a 16-bit integer that represents the CRC of the payload.

Payload to be secured by CRC:

SET_CONFIG=auto,192.168.0.20,4242,0,901288002328121,-1000,0,*m3,3.0.0,14400,300,10,6,60,1800 CLEAR_ARCHIVE RESET 
caution

At the end of the payload has to be a blank space!

The CRC check value can be calculated using the following online tool: CRC calc (CRC-16/AUG-CCITT).

Calculated CRC check value:

7AE6

To secure the payload with CRC, add MESSAGE_CRC16=CHECK_VALUE at the end of the payload.

Secured payload with CRC:

SET_CONFIG=auto,192.168.0.20,4242,0,901288002328121,-1000,0,*m3,3.0.0,14400,300,10,6,60,1800 CLEAR_ARCHIVE RESET MESSAGE_CRC16=7AE6

Set Config (SET_CONFIG)

SET_CONFIG command is used to set multiple parameters at once.

Parameter NumberParameterData type
1Custom APNString
2Custom IPString
3Custom portInteger
4Custom PLMNIDInteger
5Custom IDString
6RatioInteger
7ModeInteger
8UNITSTRString
9OBISString
10Second of dayInteger
11Second of day - spreadInteger
12Display count timeInteger
13Display date timeInteger
14Maximum detector periodInteger
15Sampling periodInteger
16LWM2M EndpointString
17LWM2M Server URLString
18LWM2M Server PortInteger
19LWM2M Local PortInteger
20LWM2M LifetimeInteger
note

Parameters are separated by a comma [,].

ExampleDescription
SET_CONFIG=auto,192.168.0.20,4242,0,901288002328121,-100,0,*m3,3.0.0,14400,300,10,6,60,1800Set config parameters
SET_CONFIG=auto,192.168.0.20,4242,0,901288002328121,-100,0,*m3,3.0.0,14400,300,10,6,60,1800
Command (ASCII)DescriptionAnswer
GET_DEVICE_INFOGet device info0xDA
GET_SEND_DAY_SECONDGet send day seconds0xB0
GET_SEND_DAY_SECOND_SPREADGet send day seconds - spread0xB1
GET_DISPLAY_COUNT_TIMEGet display count time0xB2
GET_DISPLAY_DATE_TIMEGet display date time0xB3
GET_MAXIMUM_DETECTOR_PERIODGet maximum detector period0xB4
GET_SAMPLING_PERIODGet sampling period0xB5
GET_COUNTERGet counter0xCC
GET_RATIOGet ratio0xDD
GET_CONFIGGet config0xB6
GET_NBIOT_PORTGet NBIoT port0xB9
GET_NBIOT_IPGet NBIoT IP0xB8
GET_NBIOT_APNGet NBIoT APN0xB7
GET_NBIOT_PLMNIDGet NBIoT PLMNID0xBA
GET_IDGet ID0xBB
GET_MODEGet mode0xBC
GET_UNITSTRGet UNITSTR0xBD
GET_OBISGet OBIS0xBE
GET_BATTERY_CAPACITYGet battery capacity0xC0
GET_HISTORY_PERIOD_LENGet history period length0xC1
GET_METER_IDGet meter ID0xC5
GET_LWM2M_EPGet LWM2M EP0xD0
GET_LWM2M_URLGet LWM2M URL0xD1
GET_LWM2M_SERVER_PORTGet LWM2M server port0xD2
GET_LWM2M_LOCAL_PORTGet LWM2M local port0xD3
GET_LWM2M_LIFETIMEGet LWM2M lifetime0xD4
GET_LWM2M_PSK_IDGet LWM2M PSK ID0xD5
GET_LWM2M_PSKGet LWM2M PSK0xD6
GET_SIGNAL_TESTER_PERIODGet signal tester period0xC2
GET_SIGNAL_TESTER_MODEGet signal tester mode0xC3

Parameters are retrieved by sending a payload to the device. The payload consists of a command(s). The command is an ASCII string that represents the parameter to be retrieved.

tip

Parameters can be retrieved individually or multiple parameters can be retrieved at once. To retrieve all parameters at once, use the GET_CONFIG command.

ExampleDescription
GET_SEND_DAY_SECONDGet Send day seconds parameter value
note

GET_SEND_DAY_SECOND command from the example can be replaced by any command from Downlink Getters list except GET_CONFIG.

Multiple getter commands can be combined in one payload. Each command is separated by a blank space [ ].

ExampleDescription
GET_SEND_DAY_SECOND GET_DISPLAY_COUNT_TIMEGet Send day seconds and Display count time

Get Config (GET_CONFIG)

GET_CONFIG command is used to retrieve all the parameters at once.

Command (ASCII)DescriptionAnswer
MESSAGE_CRC16CRC check0xE0
READ_ARCHIVERead archive0xAA
CLEAR_ARCHIVEClear archive0xBF
RESETResetNONE

Calculations

Timestamp

uint32_t getTimeStampNow(uint8_t* buffer)
{
extern volatile uint32_t year;
extern volatile uint32_t month;
extern volatile uint32_t day;
extern volatile uint32_t hour;
extern volatile uint32_t minute;
extern volatile uint32_t second;

time_t timestamp;
struct tm currTime;

currTime.tm_year = year - 1900 - (2008-1970);
currTime.tm_mday = day;
currTime.tm_mon = month - 1;

currTime.tm_hour = hour;
currTime.tm_min = minute;
currTime.tm_sec = second;

timestamp = mktime(&currTime);
if(buffer)
{
memcpy(buffer, &timestamp, 4);
}
return (uint32_t) timestamp;
}
info

The getTimeStampNow function calculates the timestamp based on the current date and time, measuring time from January 1, 2008, in UTC.

The year, month, day, hour, minute, and second variables are updated by the device's NB-IoT module. The getTimeStampNow function calculates the timestamp based on the current date and time.

Min/Max flow rate

Min flow rate is initialized to the maximum possible value of 64 byte integer, and max flow rate is initialized to the zero.

Flow rate=(Flow point2Flow point1)1000000Time stamp2Time stamp1Flow\ rate = \frac{ (Flow\ point_2 - Flow\ point_1) \cdot 1000000 }{ Time\ stamp_2 - Time\ stamp_1 }

If calculated flow rate is less than the min flow rate, the min flow rate is updated with the calculated flow rate. If calculated flow rate is greater than the max flow rate, the max flow rate is updated with the calculated flow rate.

  • Multiplication by 1,000,000: This scaling factor ensures that the flow rate calculation results in whole numbers rather than fractions.
  • Timestamp Difference: The difference between the two timestamps represents the interval between pulse count checks. This interval is crucial for calculating the rate of change accurately.
  • Pulse-to-Unit Ratio: The pulse-to-unit ratio is used to convert the pulse count to the desired unit of measurement. This ratio is set by user and is used by backend parser to convert the flow rate to the appropriate unit.

Example calculation of flow rate

Flow point1=503 pulsesFlow\ point_1 = 503\ pulses Time stamp1=34020 sTime\ stamp_1 = 34020\ s Flow point2=518 pulsesFlow\ point_2 = 518\ pulses Time stamp2=34320 sTime\ stamp_2 = 34320\ s Interval between checks=300 s (5 m)Interval\ between\ checks = 300\ s\ (5\ m) Flow rate=(532621533121)10000003432034020=1666667Flow\ rate = \frac{ (532621 - 533121) \cdot 1000000 }{ 34320 - 34020 } = 1666667

This number is send to backend and parsed with the ratio to get the flow rate in the desired unit. If the ratio is 1000:1, the flow rate is calculated as follows:

Real flow rate=166666710000000.001=0.00167 m3s1Real\ flow\ rate = \frac{1666667}{1000000} \cdot 0.001 = 0.00167\ m^3s^{-1} =0.01673600=6 m3h1= 0.0167 \cdot 3600 = 6\ m^3h^{-1}

Troubleshooting & FAQ


The device is not connecting to the GUI

  • Please, make sure to use a Chromium based browser, we strongly recommend to use Google Chrome (other Chromium based browsers still may cause unexpected issues). Make also sure that the serial line is not opened on any other serial line monitor.


Was anything unclear, missing or hard to understand? Please, contact us at support@acrios.com.
Further information can be found on wiki.acrios.com.