Блог

POER Smart и MQTT

Сразу предупреждаю: готовых решений здесь не ждите (хотя, кто знает, - может, они тут когда-то появятся).

Итак, имеется некое подобие экосистемы от широко известного в узких кругах производителя POER. "Подобие" - потому что эта экосистема довольно ограничена по списку поддерживаемых устройств (и как все понимают, все представители этого списка являются устройствами производства самой компании POER).

Общий принцип работы этой экосистемы таков: все устройства (термостаты, блоки управления) общаются между собой на радиочастоте 433 или 868 МГц (например, термостат посылает блоку управления команду замкнуть реле (чтобы, например, включить котел отопления) и получает в ответ информацию о состоянии реле). Плюс к этому все устройства общаются на той же радиочастоте со шлюзом (единственная на сегодня модель шлюза называется PTG10), а шлюз, в свою очередь, по WiFi через вашу точку доступа имеет выход в ИНтернет и общается со своей "фирменной" облачной службой. Приложение на вашем смартфоне тоже общается с этим облаком - поэтому у вас есть возможность настройки и мониторинга термостатов для управления вашей системой отопления. Более подробно об этом можно почитать здесь.

В принципе, сама по себе эта экосистема POER довольно-таки неплохая - начиная от дизайна устройств и заканчивая удобством управления через родное приложение. Но самый существенный недостаток - это замкнутость экосистемы на саму себя. Другими словами, управлять и контролировать устройства POER можно только через родное фирменное приложение. Сведений об удачном включении устройств POER в какие-либо системы "умного дома" обнаружить не удалось. Единственное небольшое исключение из этого правила - это крайне примитивная интеграция с Google Home, которая позволяет всего лишь переключить режим термостата в один из трех вариантов, заранее настроенных в "родном" приложении или на самом термостате.

Автор упомянутой статьи тоже задавался вопросом интеграции POER в умный дом. При этом он в качестве "печки" (той, от которой пляшут) выбрал приложение для смартфона - пытался выяснить, по каким сетевым адресам уходит из приложения информация, что приходит в ответ, и какие именно данные передаются. Процесс, судя по всему, так и не был доведен до конца.

Ну а я решил пойти другим путем - начал "плясать" от WiFi-шлюза PTG10. Для начала просто открыл "админку" своего роутера, чтобы посмотреть, с кем общается шлюз. И вот, что выдал мне роутер:

Ха! (сказал я себе). А ведь 1883-й порт - это же стандартный порт MQTT-брокера. Надо бы проверить. Запустил на компе MQTT-клиента, вбил адрес и... совершенно без проблем подключился - не было запрошено ни логина, ни пароля.

Этот самый брокер (судя по адресу, он находится в Сингапуре) выдал мне вот такую картинку:

Разумно предположить, что топики (на правой картинке) названы по MAC-адресам шлюзов. Так и оказалось, но за одним нюансом - первый сегмент MAC-адреса шлюза - FC. А в имени топика первые два символа - FE. То есть, узнаете MAC-адрес шлюза, меняете первый сегмент с FC на FE, и... получаете доступ к данным, которые ваш шлюз отсылает брокеру.

Казалось бы, дело осталось за малым - читаем пэйлоуды и получаем данные. Но нет - оказывается там не текст, а набор двоичных данных.

Как видим, данные совершенно нечитабельные, их даже нельзя куда-нибудь скопипастить, поскольку при копировании у части символов обрезаются биты и т.д., и т.п.

Но есть выход. Под Линуксом запускаем...
mosquitto_sub -h 8.208.22.240 -p 1883 -t poersmart/gateway/fee892������/# (замените на MAC-адрес своего шлюза)
...и получаем что-то вроде этого:

Поскольку результат снова содержит нечитаемые символы, то логично будет перенаправить вывод в какой-нибудь файл:
mosquitto_sub -h 8.208.22.240 -p 1883 -t poersmart/gateway/fee892������/# >> mypoer.txt
...а затем открыть этот файл в бинарном просмотрщике.

Теперь хоть стали видны HEX-коды символов. Как и прежде, "открытым текстом" присутствует только IP-адрес шлюза во внутренней сети, всё остальное остаётся непонятным.Если кого-то заинтересовала эта информация, давайте дальше двигаться вместе - уж больно хочется этот злосчастный POER интегрировать в Home Assistant.




Игорь, я сам долго искал способ привязаться к PoerSmart (у меня Openhab), в сети практически нет информации, но однажды натолкнулся на упоминания о их REST JSON API к облаку http://open.poersmart.com:8012/apidocs.json">http://open.poersmart.com:8012...http://open.poersmart.com:8012/apidocs.json"> , и по приведенной вами ссылке в комментариях я позже писал об этом, правда после этого PoerSmart прикрыли описательную часть интерфейса, хотя кое что еще доступно. Вот еще на гитхабе человек делал проект по сбору статистики https://github.com/balazj/PoerSmartLog">https://github.com/balazj/Poer... , минимальный сбор данных я уже сделал (см. скрин), с управлением еще не разбирался. Думаю это более правильный вариант, т.к. с их MQTT пока вопросов больше чем ответов.

https://sprut.ai/static/media/cache/00/69/17/5/6043523/70716/1000x_image.jpg?1605721433" alt="1000x_image.jpg?1605721433" />

Статистика статистикой, но хотелось бы еще иметь кое-какое управление термостатами. А это, как я понимаю, можно сделать только через MQTT.

P.S. Пытался сделать сбор данных, как расписано по указанной вами ссылке, но так и не получилось "поймать" правильный URL. Запускал для этого WireShark, гонял приложение PoerSmart на эмуляторе... Единственное, что удалось выяснить - это то, что IP-адрес MQTT-брокера 8.208.22.240 и имя хоста open.poersmart.com соответствуют одному и тому же серверу.

Очень интересный прорыв. Аплодирую. По поводу ссылки на json на сайте poer, я тоже парсил через снифер с телефона, но недавно хотел повторить фокус и не получилось, трафик стал шифроваться. Возможно стоит попробовать найти старую версию apk. Есть гипотеза, что шлюз умеет сам отдавать данные в формате json. Я декомпилировал apk приложения и нашел там возможность таких запросов Ip-шлюза/config?command=status Ip-шлюза/config?command=wifi. Так же в java файлах полученных после декомпиляции apk, есть некие алгоритмы шифрования и можно попробовать расшифровать mqtt.

I am writing in English because Russian is not my mother tongue. You write interesting things here.

Some time ago I was analyzing the data from the MQTT. I can get the gateway IP address in the local network, the number of devices and their MAC addresses. In the data for the month, you can also catch some counters. However, I cannot locate the temperature.

К сожалению, моя "эпопея" с Poer Smart закончилась. Я продал комплект человеку, который не озабочен "умными домами". Он использует устройства в штатном режиме и, по его словам, вполне доволен.


Вернуться назад
Вернуться назад