Есть 32 типа СИЗов. Один человек может иметь не более 1 СИЗа каждого типа.
В персональной метке хранится Список СИЗов для этого человека и идентификаторы биконов этих СИЗов. Списком управляет сервер.
Метка периодически (30с) сканирует биконы, фиксирует найденные из Списка. И отправляет их в сенсоре в виде битовой карты по типам СИЗов.
Тип СИЗа – число 0..31, соответствует позиции битового поля в сенсоре. Смысл типа знает только сервер. Рекомендуется назначать часто используемым СИЗам меньший тип, для уменьшения размера данных в сенсоре.
Идентификатор бикона – MAC-адрес. Бикон сам по себе не имеет типа, привязка хранится на сервере (и в Списке). Поэтому бикон не нуждается в настройке.
Контроль напряжения питания бикона возможен только для Eddystone биконов – только для них стандартно предусмотрена передача напряжения, и то эпизодически, обычно с небольшой частотой.
При привязке СИЗ к бикону нужно узнать MAC бикона. Для этого можно приложить его к сервисной метке. Метку настроить на частый опрос биконов и смотреть (через UWB) сенсор EVT_BEACONS (-19) – в нем биконы отсортированы по PathLoss, так что первый ближайший, и учитывать его, если он недавний и PathLoss выше порога.
Передает найденные СИЗ. См. Коды сенсоров , сенсор SIZ (-20).
Опрос биконов должен быть разрешен Супервизором SUPERVISOR подсистема , параметр /node/mode#Scan=auto. Периодичность опроса задается отдельно в модуле BEACONS scanning, filtering, парсет /ble/brate. Фильтрация биконов /ble/brate#Filter не влияет на опрос СИЗов. Также СИЗ-биконы не учитываются в сенсоре EVT_BEACONS(-19).
Параметры сканирования биконов
Параметр | Значения | CBOR map value type | Описание |
Mode | off, on | bool | Режим опроса СИЗ. Сенсор SIZ (при Send=Auto) отправляется, если Mode=on и /siz/bmap не пустой |
BatLevel_mv | uint32 | int | Порог недостатка напряжения питания бикона, мВ (для передачи состояния батареи в сенсоре SIZ) |
Парсет-массив, список биконов по типам СИЗов. Массив содержит 32 записи, номер записи (key) соответствует типу СИЗа.
Параметр | Значения | CBOR map value type | Описание |
MAC | eui48 | byte_string[6] | MAC-адрес бикона (BLE device address) |
Att_dB | uint8 | int | Порог допустимого затухания сигнала от бикона. Если затухание больше, то бикон не включается в сенсор SIZ |
Примеры использования через CoBench:
GET /siz/bmap – запрос всех непустых записей
GET /siz/bmap N – запрос записи для типа N
PUT /siz/bmap N#MAC=12-34-56-78-AB-CD Att_dB=40 – добавление/изменение записи для типа N
PUT /siz/bmap del 2 – удаление записи для типа N
PUT /siz/bmap clear – удаление всех записей
Возможно чтение (GET) и загрузка (PUT) парсета целиком в виде бинарного образа. Для парсет-массивов образ содержит только непустые записи (строки массива).
Надо опрашивать соответствующий ресурс с Query Option blob. Образ передается в payload CoAP-пакета.
Образ содержит заголовок и данные. В заголовке содержатся идентификатор структуры парсета FieldsSignature и контрольная сумма CRC32. Расчет контрольной суммы см. TAGZONES subsystem (в конце)
FieldsSignature нужен для контроля правильности структуры парсета.
CRC32 нужна для контроля целостности образа при CoAP Block Transfer. Образ собирается в устройстве по мере прихода блоков и в конце применяется целиком с контролем целостности. Для сбора образа используется глобальный буфер, так что образ может быть искажен при параллельном доступе с нескольких клиентов.
Для парсета /siz/bmap образ имеет следующий вид (siz_bmap_blob_t):
typedef struct __attribute__((packed)) {
uint32_t FieldsSignature; /// for /siz/bmap must be 0xFD00E35D
uint32_t CRC32; /// cyg_ether_crc32() of following bytes
} parset_blob_header_t;
typedef struct __attribute__((packed)) {
uint8_t idx; /// index in array, equals to SIZ type
uint8_t MAC[6]; /// beacon BLE device address, MSB first
uint8_t Att_dB; /// max allowable BLE signal attenuation from beacon
} siz_bmap_record_t;
typedef struct __attribute__((packed)) {
parset_blob_header_t header;
siz_bmap_record_t records[N]; /// 0 <= N <=31
} siz_bmap_blob_t;
|
Примеры использования через CoBench (file_name можно оставлять пустым, будет запрошено через GUI):
GET /siz/bmap blob – запрос образа парсета, печать в HEX
GET /siz/bmap blob#>file_name – запрос образа парсета, сохранение в file_name
GET /siz/bmap blob#<file_name – запрос образа парсета, сравнение с file_name
PUT /siz/bmap blob#<file_name – передача образа парсета из file_name
PUT /siz/bmap blob#<<file_name – передача образа парсета из file_name с пересчетом CRC32
Для очистки конфигурации можно загрузить образ со всеми пустыми записями, но проще отправить PUT /siz/bmap clear