Skip to main content

Packet Format

ID SEQ FLAGS PAYLOAD[0] PAYLOAD[1] ... PAYLOAD[x]
1B 1B 1B Array Array Array
FieldSizeValue
ID1 byte0x78
SEQ1 byteExchange operation number (0–255)
FLAGS1 byteDevice status flags
PAYLOADarraySee format-specific description below
  • The ID field is a constant identifier of Protocol78 packets.
  • The SEQ field is an exchange counter incremented with each transmission.
  • The FLAGS field contains bit flags that describe the current device state.

Detailed breakdown of each field follows in the next sections.

Device Status Flags​

FLAGS — 1 byte (8 bits), each bit indicates a separate device condition.
BitFlag MeaningOrionMeter LA-IPOrionMeter TWMOrionLightingLWOSLC
0Device type dependentBattery lowBattery lowSchedule missing--
1Low temperature+++++
2High temperature+++++
3Tamper (magnetic)++―++
4Device type dependent―Removed―-Door opened
5Time requires update+++++
6Device type dependent―Overlight―――
7Device type dependent―Reverse flow―Reverse flow―

Payload Field​

The PAYLOAD field is a data array transmitted from the device to the application server. Each array element (PAYLOAD[0], PAYLOAD[1], ..., PAYLOAD[n]) has the following structure:

ElementFORMATDATA
LENGTH1 byte―
VALUESee belowArray

The FORMAT field specifies the type of data being sent, and the DATA field contains the associated content. Specific FORMAT values are described in the following sections.

FORMAT Values​

The FORMAT field (1 byte) defines the type of data contained in each PAYLOAD entry.

FORMATShort DescriptionDetailed Explanation
0x00Instant dataSnapshot of counter inputs at the moment of transmission
0x01Archive: day, Counter 1Daily archive of hourly readings, Counter 1 (legacy). Timestamp = value + 3600
0x02Archive: day, Counter 1Daily archive of hourly readings, Counter 1
0x03Archive: day, Counter 2Daily archive of hourly readings, Counter 2 (legacy). Timestamp = value + 3600
0x04Archive: day, Counter 2Daily archive of hourly readings, Counter 2
0x05Archive: day, Counter 3Daily archive of hourly readings, Counter 3 (legacy). Timestamp = value + 3600
0x06Archive: day, Counter 3Daily archive of hourly readings, Counter 3
0x07Tamper eventsDetected tampering: magnetic field or enclosure breach
0x08Service dataInternal device information: version, configuration, etc.
0x09Sensor archiveHistorical values from analog and digital sensors
0x0ADI input eventsTrigger events from discrete inputs (e.g., on/off)
0x0BDI archive eventsLogged history of discrete input states and events
0x10Description on requestResponds with structure and metadata description
0x11Electric meter data (EM)Received energy data from EM: energy, power, etc.
0x12Sensor dataFlow, pressure, and temperature sensor readings
0x13Heat meter data (HM)Received heat consumption data from HM
0x14Extended HM dataAdditional parameters from heat meters
0x15Meter eventsTamper, restarts, faults
0x16Tariff schedulesTimetable for applying specific tariffs
0x17Raw meter dataUnprocessed raw data directly from meter
0x20MODBUSData read from Modbus-enabled devices
0x30SLC scheduleDevice control based on predefined SLC schedule
Important

Since the FORMAT field does not specify the exact length of the DATA section, the decoder must support all FORMAT types described in this document.
If an unknown FORMAT value is encountered, further processing must be halted and the remainder of the packet ignored.