В свободное от работы время занимаюсь хобби — экспериментирую с умным домом на базе Home Assistant (HA) и окружающей его программно-аппаратной инфраструктурой в виде различных медиасервисов, сервисов мониторинга и прочего.
Мой умный дом сейчас насчитывает несколько десятков различных устройств в основном из экосистемы Tuya. Из них есть как различные датчики температуры, влажности, движения, присутствия, открытия, обнаружения влаги, электромониторинга, так и различные реле, переключатели, пульты, кнопки и прочее. Например реализована система обнаружения и предотвращения протечек через шаровые краны с электроприводом и двухканальное реле. При срабатывании любого датчика протечки вода перекрывается на ввод в квартиру, а мне приходит уведомление в Telegram.
Почти все устройства у меня работают по протоколу Zigbee. Привожу его краткое описание:
Zigbee — это беспроводной протокол для IoT, работающий на частоте 2.4 ГГц (как Wi-Fi, но с меньшим энергопотреблением). Его ключевые особенности:
-
Сеть с ячеистой топологией (mesh) — устройства ретранслируют сигнал, увеличивая покрытие.
-
Низкое энергопотребление — идеально для датчиков (например, Xiaomi Aqara).
-
Локальная работа — в отличие от облачных решений, Zigbee может функционировать без интернета.
На прикладном уровне в Home Assistant для работы с Zigbee обычно используются интеграции типа Zigbee Home Automation (ZHA) или Zigbee2MQTT (Z2M), которые у меня работают одновременно через usb-донглы Sonoff. Сам Zigbee2MQTT — это мост между Zigbee-гаджетами и Home Assistant, который обеспечивает двунаправленную коммуникацию посредством MQTT-сообщений.
Преимущества Zigbee2MQTT:
-
Универсальность — поддерживает огромное количество устройств, даже те, что несовместимы с официальными хабами (например, Tuya).
-
Гибкость — все команды и события видны в MQTT, их можно анализировать и писать автоматизации на их основе.
-
Локальный контроль — опять же, никакого облака, все данные внутри локальной сети.
Однажды столкнулся с необходимостью управлять некоторыми устройствами через ИК-канал и я решил попробовать это реализовать с помощью устройства от MOES UFO-R11, которое представляет собой универсальный пульт для умного дома, который может имитировать сигнал от любых ик-пультов (в данном случае пульт от телевизора TCL).
Под спойлером фото обоих пультов.
Скрытый текст


В спальне, где это сейчас требуется, у меня располагается телевизор TCL на базе Android и не инверторная сплит-система Rapid.
Предполагалось использовать пока два главных сценария на оба устройства: включение и выключение, так как телевизор у меня так и не захотел включаться по Wake-on-Lan, а для кондиционера этот ик-протокол вообще единственный, ибо в нём даже wi-fi модуль не предусмотрен. Позже, вероятно, появятся другие сценарии, т.к. тут их можно реализовать любые, которые поддерживает пульт или завязанные на любые другие сценарии и автоматизации, которые связаны с другими устройствами. Например выключить телевизор, при моём засыпании или автоматизировать работу кондиционера.
Находка
Чтобы я мог эмулировать команды пульта, мне нужно обучить мой “умный” пульт. Само обучение выглядит так: мне нужно включить режим обучения пульта в интерфейсе Z2M в HA и нажать на “пульте-учителе” кнопку, нажатие которой нужно имитировать на “умном” пульте. В данном случае это кнопка включения.

В результате получается текстовая команда, с помощью которой далее следует создать автоматизацию включения/выключения телевизора которая на данный момент у меня успешно работает.
На этом статью можно было бы завершить, если бы не моё праздное любопытство. На скриншоте видно строку, похожую на base64 и я решил попробовать расшифровать и посмотреть, что она из себя представляет: закинул полученную команду в base64decode.org для декодирования. На первый взгляд тут также не было совершенно ничего осмысленного, и вменяемого ни с UTF-8, ни с ASCII или другими широко используемыми кодировками не выходило, но тут я случайно выбрал UTF-16LE, и, внезапно, получил китайские символы.

Это заинтриговало меня ещё больше, и я решил попробовать перевести их через Google Translate. В результате чего получился следующий текст:

Далее я начал проверять, что зашифровано в других кнопках, это кнопка “настройки”:




Ещё я выяснил, что при нажатии на одну и ту же кнопку, если до этого были нажаты другие, появляются другие команды. То есть с самого начала на кнопке включения я видел одну команду, а теперь тут появилась другая:


Ещё несколько кнопок:



Интересно, не правда ли?
Я попробовал погуглить по итогу что бы могли значить эти даты, что это был за чемпионат и ничего интересного не получил. Вообще про этот год есть только одно упоминание о футбольном клубе “Ляонин” связанное с чемпионатом. Ну и ещё что-то про события на площади Тяньаньмэнь, но это в следующем году.
Далее я решил прогнать несколько полученных фраз через дипсик и результат меня сильно удивил, если не сказать, что шокировал, честно говоря


А ещё после этого запроса в китайских сервисах что-то сломалось и дипсик теперь разговаривает со мной почему-то только по-китайски.

Заключение
У меня до сих пор остаётся много вопросов к моему сегодняшнему открытию и я надеюсь собрать всё, что я нашёл в единую картину, чтобы понять что происходит. Сейчас проверяю остальные кнопки на пульте и судя по информации, в них есть какая-то последовательность, но я ещё не понял что за чем идёт. Надеюсь сегодня успеть дешифровать остальное, после чего опубликую продолжение.
Также постараюсь найти носителя языка и задать им несколько вопросов.
Если у кого-то есть соответствующие знания — подключайтесь. Также прошу всех, кто пользуется HA и Z2M проверить что зашифровано в их пультах.
ссылка на оригинал статьи https://habr.com/ru/articles/897572/
Добавить комментарий