О роботе

Исследования роботов, мысли и идеи на эту тему

Дальнейшее исследование формата передачи показаний датчиков метеостанции 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 минут. Так и есть, иногда метеостанция сразу показывает переданные результаты, иногда тупит достаточно долго, как будто присматривается к переданным данным. Зато, когда присмотрится, обновляет данные достаточно оперативно.

Добавить комментарий