Все устройства производства taiga имеют единый протокол передачи данных. Поддерживая одно наше устройства вы получите поддержу всех наших устройств Taiga IoT.
Заголовок пакета, присутствует в каждом пакете отправленным устройством. Заголовок пакета содержит информацию о источнике питания устройства, заряде батареи, серийном номере устройства, версии протокола, размере пакета.
2
Фрейм 1
Далее следуют фреймы. Каждый фрейм содержит информацию о типе фрейма, причине формирования, времени формирования и сами измерения.
3
...
4
Фрейм N
Пример разбора пакета
90e3d5687804130083b9616400
1
90
Информация о питании устройства 10001000 0 - в двоичном представлении. 0 - это тип питания, значение 0 соответствует батарейному питанию. 10001000 - в десятичном виде 72. 72% - это заряд батареи.
2
e3
Информация о протоколе устройства 111 0 001 1 - в двоичном представлении 1 - флаг, который сообщает нам, что в заголовке присутствует серийный номер устройства. 001 - в десятичном виде 1, это версия протокола устройства. 0 - флаг, который сообщает об отсутствиив заголовке пакета информации о размере пакета. 111 - RFU
3
d5687804
Так как в предыдущем байте значения флага "наличие серийного номера устройства" имеет значение равное 1, данные 4 байта это серийный номер. Обратите внимание! Порядок байт little-endian, 0x047868d5. В десятичном виде это 75000021, в таком виде он напечатан на этикетке устройства.
4
1300
Так как информация о размере пакета отсутствует, начинаем разбирать фрейм. 0000 000000010011 - в двоичном представлении 000000010011 - тип фрейма, 0x13, фрейм обнаружения движения. 0000 - причина формирования фрейма, 0x00 - это regular.
5
83b96164
Обратите внимание! Порядок байт little-endian, 0x646b983. 1684126083 - в десятичном представлении. Это время формирования пакета, которое соответствует значению 15.05.23 04:48:03 GMT
6
00
Так как тип фрейма "фрейм обнаружения движения", данный байт указывает обнаружено движение или нет. 0 - в десятичном представлении. Что соответствует значению - отсутствует движение.
7
Данных больше нет
Раз данных больше нет, значит пакет был полностью разобран. Иначе мы бы разобрали последующий байт, который являлся бы заголовком фрейма и в зависимости от типа фрейма продолжили бы разбирать данные.
Часто задаваемые вопросы
Вопрос:
Сколько может быть фреймов в одном устройстве?
Ответ:
Устройства, накапливают измерения в соответствии с логикой своей работы, формируют из них очередь фреймов и выходя на связь, отправляют столько фреймов, сколько смогут в одном пакете. В одном пакете может быть большое количество фреймов.
Вопрос:
Есть ли какой то порядок у фреймов в пакете?
Ответ:
Фреймы передаются в том порядке как были сформированы. Могут возникать ситуации когда фреймы будут отправляться не в порядке формирования.
Вопрос:
Могут ли в одном пакете приходить фреймы разного типа?
Ответ:
Да в одном пакете могут приходить фреймы разного типа. Могут быть ситуации, когда в одном пакете будут присутствовать например 2 фрейма температуры, затем 1 фрейма gnss, затем фрейм температуры.
Вопрос:
Какой порядок следования байт используется в протоколе?