Как отправить данные зашифрованной телеметрии (Eddystone eTLM) в Google Proximity API, чтобы получить оценки срока службы батареи?
Я пытаюсь получить оценки срока службы батареи маяка от Google Proximity API при использовании маяков Eddystone, которые передают EID и зашифрованные кадры TLM. Я получаю beaconName в ответе только тогда, когда вызываю конечную точку beacons.diagnostics.list, но не по оценкам LowBatteryDate. Я отправляю зашифрованную телеметрию вместе с кадром EID, используя конечную точку beaconinfo.get для наблюдаемой. Я знаю, что перед тем, как он сможет оценить срок службы батареи, необходимо отправить несколько сообщений в Proximity API, но моя система отправляет данные телеметрии туда почти ежедневно в течение нескольких недель, а диагностики по-прежнему ничего не показывают. Поэтому я думаю, что я, вероятно, отправляю данные в неправильном формате.
Кто-нибудь знает, поддерживает ли Proximity API зашифрованный TLM или поддерживает только обычные кадры TLM?
Вот пример того, что я делаю.
- Я получаю и EID и eTLM фрейм, где eTLM выглядит следующим образом: 0x20017bb5e50d43c16ae0d5024850b3a911ab
Что означает следующее, если я правильно понял:
тип рамы: 20
версия: 01
Зашифрованные данные телеметрии: 7b b5 e5 0d 43 c1 6a e0 d5 02 48 50
Соль: b3 a9
Проверка целостности: 11 ab
Я кодирую данные (включая проверку типа кадра, версии, данных, соли и целостности) в Base64, который дает следующую строку: IAF7teUNQ8Fq4NUCSFCzqRGr
Я использую библиотеку Java, предоставленную Google, для вызова beaconinfo.getforobserved, и она отправляет данные следующего типа (не правильный JSON, просто объект Observation, напечатанный с помощью toString):
{наблюдения =[{advertisedId={id=sMY3XiqQjkU, тип =EDDYSTONE_EID}, телеметрия =IAF7teUNQ8Fq4NUCSFCzqRGr, отметка времени Ms=2017-09-29T14:09:41.713+03:00}]}
На что я получаю действительный ответ (аналогично):
[{ "AdvertisedId":{"идентификатор":"sMY3XiqQjkU=","тип":"EDDYSTONE_EID"},"beaconName":"маяки /4 b0c6375e2a908e45"}]
Однако, кажется, что я могу поместить любую строку в поле телеметрии, и API не будет жаловаться, поэтому я понятия не имею, сможет ли он правильно проанализировать телеметрию.
- Я отправляю несколько таких сообщений с обновленным eid и телеметрией в течение пары недель, и beacons.diagnostics.list просто возвращает имя маяка, но не данные о низком заряде батареи.
Может быть, Proximity API не исключает все данные, которые я отправляю, например, байт для типа кадра? Я много гуглил, но не нашел ни примеров, ни документации, как следует отправлять зашифрованную телеметрию. Если кто-то может указать, что я делаю неправильно, это было бы здорово.