You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 38 Next »

Сообщения передают события, происходящие в системе, на сервер. Сервер подтверждает получение сообщений. В настоящее время подтверждение по LoRa не реализовано, сообщение считается отправленным, если получен confirm на uplink с данными.

При отсутствии подтверждения события копятся в буфере и попытки отправки повторяются периодически. События из буфера отправляются, начиная со старейшего. Если буфер переполняется, новые события вытесняют старые. События имеют циклический порядковый номер (параметр SEQ uint16_t), что позволяет обнаруживать потерю событий.

Размер буфера зависит от версии программы (и транспорта).

Сообщение может передаваться:

  • CAS360: по IP-сети (LTE) на заданные в конфигурации HTTPS-сервер и его контекст. Upload бинарных данных.
    Метод POST, ресурс <в настройках CAS360>, Content-Type: application/cbor
    Сообщение в HTTP body 
    Подтверждение получения – HTTP response 2xx
  • CAS360, CAS1/2: через LoRa инфраструктуру на порт 11
    Заголовок пакета такой же, как для сенсоров, далее сообщение (см. Описание форматов пакетов )
    Подтверждение получения – не реализовано, подтверждением считается confirmation пакета с базы LoRa
  • CAS360, CAS1/2: по IP-сети (WiFi, LAN) на заданный в конфигурации CoAP-сервер.
    Метод POST, ресурс /msg, Content-Format:application/cbor
    Сообщение в payload
    Подтверждение получения – CoAP Response 2.xx

Структура сообщения – последовательность CBOR-элементов (CBOR-stream, rfc7049 section 3.1):

VERSION(int=-1), HEADER, EVENT, EVENT, ...

VERSION иденифицирует дальнейшую структуру, должен быть integer и равен -1. Иначе формат сообщения считать неизвестным.

HEADER идентифицирует отправляющую систему CAS360 и несет общие параметры, EVENT несет информацию об одном событии.

Каждый HEADER и EVENT – CBOR map, то есть, набор полей key:value (key это int).

Могут приходить сообщения без EVENT, это keepalive – используются для проверки связи при отсутствии полезных данных.

События могут приходить повторно, если устройство не получило подтверждение получения из-за плохой связи.

Идентификаторы полей (key) обычно выбираем в диапазоне -24..23, чтобы занимали 1 байт в CBOR.

Элемент VERSION

Тип integer, значение определяет дальнейшее содержимое. Для нижеописанной структуры значение =-1. Чтобы отличать от сенсоров в случае чего.

Поля HEADER

Множественные Key это альтернативы, придет какой-то один.

NameKeyValue TypeDescription

CASID


SERIAL

1


2

uint32


uint32

Unique (hopefully) identifier of sending CAS360 system, generated automatically (linked to tablet PC hardware) 

Looks like arbitrary number

Serial number  of sending CAS1 reader

UPTIME3uint32optional Device Uptime at pack sending, seconds




Поля EVENT

NameKeyValue TypeDescription

UPTIME

TIME

-4

-3

uint32

uint32

Device Uptime of Event, seconds

Время события, секунды с UNIX epoch, UTC+0

SEQ-2uint16Циклический сквозной порядковый номер события, для обнаружения потерь
KIND-1intРод события: 0-SYS, 1-CAS, ...
EVENT0intСобытие
...

дополнительные поля, специфичные для каждого события EVENT

События SYS (KIND=0)

EVENT

Value

Description

Test-123test event (CLI: msgtest N)
Reset0

Дополнительные поля события Test

Name

Key

Value Type

Description

TESTCNT

-456

uint

Счетчик тестовых событий

События CAS (KIND=1)

EVENT

Value

Description

ZoneRed0Вход в Красную зону
ZoneYellow1Вход в Желтую зону
ZoneGreen2Вход в Зеленую зону
ZoneOut3Выход (пропадание метки из эфира)
ZonePark4Парковка метки (прекращение обнаружения)

Дополнительные поля событий CAS. Множественные Key это альтернативы, придет какой-то один.

Name

Key

Value Type

Description


EUI

SERIAL

CASID


1

2

3

4


uint64

uint32

uint32

<TBD>

Идентификатор метки. 

EUI64 (для меток не-ULUN)

серийный номер (для меток ULUN, пересчитывать в EUI64)

CAS_ID для систем CAS360 (при сближении с другой системой CAS360)

reserved

Основным идентификатором меток (по IEEE 802.12.4) является EUI64. В метках ULUN EUI64 однозначно связан с серийным номером.

CAS_ID не связан с серийными номерами меток и анкеров; используется, потому что система CAS360 в целом не имеет одного меточного серийного номера.

DIST_CM5int16Дистанция до метки, см
BEARER6int (enum)

Носитель метки:  0-Generic, 1-Person, 2-Vehicle, 3-Stationary

Опционально, при отсутствии =Generic

SECTOR_DEG

SECTOR_256

7

8

array_uint16[2]

array_uint8[2]

Сектор [ dir angle ], градусы 

Сектор [ dir angle ], в 1/256 круга (1.40625 градуса)

dir - центральное направление сектора, angle - размах сектора

Отсчет вправо от направления вперед транспортного средства (на экране CAS360 по часовой стрелке от направления вверх)

Опционально, при отсутствии – сектор не определен (полный круг)

  • No labels