ПРЕДВАРИТЕЛЬНО
Сообщения передают события, происходящие в системе, на сервер. Сервер подтверждает получение сообщений. В настоящее время подтверждение по LoRa не реализовано, сообщение считается отправленным, если получен confirm на uplink с данными.
При отсутствии подтверждения события копятся в буфере и попытки отправки повторяются периодически. События из буфера отправляются, начиная со старейшего. Если буфер переполняется, новые события вытесняют старые. События имеют циклический порядковый номер (параметр SEQ uint16_t), что позволяет обнаруживать потерю событий.
. События передаются по мере возникновения, при невозможности отправки копятся в ограниченном FIFO буфере. Размер буфера зависит от версии программы (и транспорта).
Сообщение может передаваться:
- CAS360, CAS1/2: через LoRa инфраструктуру
- CAS360, CAS1/2: по IP-сети (WiFi, LAN) на заданный в конфигурации CoAP-сервер.
- C
AS360: по IP-сети (LTE) на заданные в конфигурации HTTPS-сервер и его контекст. Upload Upload бинарных данных с типом .Метод POST, ресурс <в настройках CAS360>, Content-Type: application/cbor
Сообщение в HTTP body
Подтверждение получения – HTTP response 2xx через LoRa инфраструктуру на заданный порт (сервер ожидает данные на порту 11 )
Отправка через LoRa
На LoRa порт 11
Заголовок пакета такой же, как для сенсоров, далее сообщение (вместо блока сенсоров), см. Описание форматов пакетов
Подтверждение получения – не реализовано, подтверждением считается confirmation пакета с базы LoRa
Отправка через IP
По IP-сети (LTE, WiFi, LAN) на заданный в конфигурации CoAP-сервер.
Метод POST, ресурс /msg
Пример запроса: POST /msg
Content-Format:application/cbor
Сообщение в payload
Подтверждение получения – CoAP Response 2.xx
Структура сообщения
Структура сообщения – последовательность CBOR-элементов (CBOR-stream, rfc7049 section 3.1):
...
Могут приходить сообщения без EVENT, это keepalive – используются для проверки связи при отсутствии полезных данных.
События могут приходить повторно, если устройство не получило подтверждение получения из-за плохой связи.
Идентификаторы полей (key) выбираются обычно выбираем в диапазоне -24..23, чтобы занимали 1 байт в CBOR.
Элемент VERSION
Тип integer, значение определяет дальнейшее содержимое. Для нижеописанной структуры значение =-1. Чтобы отличать от сенсоров в случае чего.
Поля HEADER
Множественные Key это альтернативы, придет какой-то один.
| Name | Key | Value Type | Description |
|---|---|---|---|
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 |
| UPTIME | 3 | uint32 | optional Device Uptime at pack sending, seconds |
...
| Name | Key | Value Type | Description |
|---|---|---|---|
UPTIME TIME | -4 -3 | uint32 uint32 | Device Uptime of Event, seconds Время события, секунды с UNIX epoch, UTC+0 |
| SEQ | -2 | uint16 | Циклический сквозной порядковый номер события, для обнаружения потерь |
| KIND | -1 | int | Род события: 0-SYS, 1-CAS, ... |
| EVENT | 0 | int | Событие |
| ... | дополнительные поля, специфичные для каждого события EVENT |
...
События SYS (KIND=0
...
)
События SYS:
EVENT | Value | Description |
|---|---|---|
| Test | -123 | test event (CLI: msgtest N) |
| Reset | 0 |
Дополнительные поля события Test
Name | Key | Value Type | Description |
|---|---|---|---|
TESTCNT | -456 | uint | Счетчик тестовых событий |
...
События CAS (KIND=1
...
)
...
EVENT | Value | Description |
|---|---|---|
| ZoneRed | 0 | Вход в Красную зону |
| ZoneYellow | 1 | Вход в Желтую зону |
| ZoneGreen | 2 | Вход в Зеленую зону |
| ZoneOut | 3 | Выход (пропадание метки из эфира) |
| ZonePark | 4 | Парковка метки (прекращение обнаружения) |
...
| ZoneUndef | 5 | Зона не определилась |
Дополнительные поля событий CAS. Множественные Key это альтернативы, придет какой-то один.
...