Дальнейшее исследование формата передачи показаний датчиков метеостанции DYKIE
Практически год назад удалось получить первые результаты расшифровки формата передачи данных датчиков метеостанции DYKIE. Попытка обратиться к производителю метеостанций для выяснения неизвестных полей формата не привела к успеху. Производитель, по словам продавца (aliexpress), отказался предоставить нужную информацию. Но, когда нас это останавливало! Даже наоборот, появился интерес расшифровать. Включил логгирование посылок датчиков в базу данных и накопилась достаточная информация для дальнейшего анализа. Вот что удалось дополнительно выяснить в формате данных датчика:
Значение полей:
- FB — первый байт, случайное число которое генерируется при включении датчика;
- U1 — первые неизвестные два бита. Варианты обнаружены такие:
00 — 57%
01 — 17%
10 — 26%
11 — встретить не удалось. - CH — канал датчика. По умолчанию к метеостанции может быть подключено 3 датчика. Это значение определяет номер датчика минус единица;
- T — температура. Значение пришлось вычислять сравнивая с показаниями метеостанции (порядок полубайт байт обратный. Формула вычисления температуры:
Температура в цельсиях = T = ((T2 << 8) | (T1 << 4) | T0) — 1220)/18;
1200 — среднее значение,
меньше 400 (-45.6) метеостанция показывает LL,
больше 2400 (65,6) метеостанция показывает HH; - H — влажность. Порядок полубайт обратный H = (B1 << 4) | B0
- BT — признак разрядки батареи 01 — батарея разряжена, 00 — батарея в порядке;
- U1 — вторые неизвестные два бита. Варианты:
00 — 63%
01 — 22%
10 — 15%
11 — встретить не удалось; - CRC — контрольная сумма. Алгоритм вычисления модифицированный метод побитового сдвига с полиномом 10011.
Много времени пришлось потратить на определение алгоритма вычисления контрольной суммы. С наскока определить его не удалось, не смотря на то, что было опробовано и проверено много разных вариантов, включая онлайн-сервисы по расчету контрольной суммы, и скрипты на js для подбора вариантов расчета. Ничего из этого не сработало. Так что пришлось отложить до лучших времен.
Со временем, большое количество накопленных данных позволило их сгруппировать, отсортировать и найти базовые закономерности. Однако и это не гарантировало результата, так как процесс расчёта контрольной суммы, как и расчет хэша необратим. Изучение теории расчета контрольной суммы, проба различных вариантов расчета, вдумчивый анализ и, самое главное, помощь вселенной привели к нужному результату.
Определение алгоритма вычисления контрольной суммы позволило отправлять на метеостанцию данные с совершенно других датчиков. Стандартно, датчики отправляют посылки каждые 50 секунд. Однако, метеостанция, далеко не сразу отображает полученные результаты, как бы присматривается к ним. В документации метеостанции указано, что задержка может быть до 10 минут. Так и есть, иногда метеостанция сразу показывает переданные результаты, иногда тупит достаточно долго, как будто присматривается к переданным данным. Зато, когда присмотрится, обновляет данные достаточно оперативно.
Получение показаний датчиков метеостанции DYKIE