[Модуль] Xiaomi miIO (xiaomimiio)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Alexander Znamensky
Сообщения: 160
Зарегистрирован: Ср дек 18, 2019 11:13 am
Откуда: Москва
Благодарил (а): 87 раз
Поблагодарили: 25 раз

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение Alexander Znamensky » Сб янв 09, 2021 11:46 am

skysilver писал(а):
Пт янв 08, 2021 10:32 pm
Alexander Znamensky писал(а):
Пт янв 08, 2021 9:26 pm
Приобрел розетку Mi Smart Socket Plug 2 Wi-Fi, но она оказалась новой моделью с функцией BLE-шлюза - ZNCZ07CM (chuangmi.plug.212a01).
Насколько сложно добавить поддержку?
Если выбирать другие модели розеток, то есть какая-либо реакция в модуле?
Привет! Вариантов розеток всего три (хотя для очистки совести я еще попробовал две стрип-ленты).
Во всех случаях сообщение одинаковое:

Код: Выделить всё

{"id":1610182233,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
Но, при выборе Mi Smart Socket Plug 2 выдается сообщение:

Код: Выделить всё

{"id":1610183654,"result":{"life":2306,"uid":4152280148,"model":"chuangmi.plug.212a01","token":"abed16108461506f7c2a1b59341640e2","ipflag":1,"fw_ver":"2.1.0_0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":42964,"mac":"54:48:E6:7B:62:A0","wifi_fw_ver":"v3.1.6-1-g82923be-dirty","ap":{"ssid":"MikroTik AZ HOME NETWORK 2GHz","bssid":"C4:AD:34:0F:DD:53","rssi":-58,"primary":1},"netif":{"localIp":"172.16.1.53","mask":"255.255.255.0","gw":"172.16.1.1"}},"exe_time":50}
Потом он быстро отваливается и уходит в офф-лайн:

Код: Выделить всё

{"error":"Device not answered"}
Тоже самое происходит при переходе на Mi Smart Socket Plug with USB.

Код: Выделить всё

{"id":1610185399,"result":{"life":2884,"uid":4152280148,"model":"chuangmi.plug.212a01","token":"abed16108461506f7c2a1b59341640e2","ipflag":1,"fw_ver":"2.1.0_0017","miio_ver":"0.0.8","hw_ver":"esp32","mmfree":42984,"mac":"54:48:E6:7B:62:A0","wifi_fw_ver":"v3.1.6-1-g82923be-dirty","ap":{"ssid":"MikroTik AZ HOME NETWORK 2GHz","bssid":"C4:AD:34:0F:DD:53","rssi":-58,"primary":1},"netif":{"localIp":"172.16.1.53","mask":"255.255.255.0","gw":"172.16.1.1"}},"exe_time":30}
а потом:

Код: Выделить всё

{"id":1610185204,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4010}
либо

Код: Выделить всё

{"error":"Device not answered"}
Raspberry Pi4 B+, образ v4_44 -> Alpha, PHP 7.3, Xiaomi Gateway 2, Tuya, Blynk, ESP8266
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение skysilver » Сб янв 09, 2021 12:52 pm

Lyubik писал(а):
Сб янв 09, 2021 3:42 am
А если не через Модуль, можно как-то добавить в majodomo?
Мне такие способы не известны. Могу только предложить использовать Home Assistant вместо МДМ, там есть поддержка этого шлюза.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение skysilver » Сб янв 09, 2021 12:56 pm

Alexander Znamensky писал(а):
Сб янв 09, 2021 11:46 am
Привет! Вариантов розеток всего три (хотя для очистки совести я еще попробовал две стрип-ленты).
Во всех случаях сообщение одинаковое:
Значит она работает через новую спецификацию miot. Нужно курить логи из кастомного михом и добавлять с нуля поддержку в модуль.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Ander
Сообщения: 56
Зарегистрирован: Вс авг 27, 2017 9:20 pm
Благодарил (а): 7 раз
Поблагодарили: 0

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение Ander » Вс янв 10, 2021 8:36 am

Привет,
у меня установлены светильники Philips Zhirui dowmlight в разных комнатах, можно их объединить в группы? В Mi home такая возможность есть
legchenkov
Сообщения: 2
Зарегистрирован: Пн янв 04, 2021 2:18 pm
Благодарил (а): 0
Поблагодарили: 0

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение legchenkov » Пн янв 11, 2021 2:20 pm

skysilver писал(а):
Пт янв 08, 2021 10:28 pm
vitt76 писал(а):
Пн янв 04, 2021 2:45 pm
А помогут вот этот топик и эта спецификация?
В первую очередь поможет наличие у кого-либо самого устройства на руках. )
У меня есть. МиХом от капибары, По инструкции могу всё! :)
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение nick7zmail » Вс янв 17, 2021 4:48 pm

Ander писал(а):Привет,
у меня установлены светильники Philips Zhirui dowmlight в разных комнатах, можно их объединить в группы? В Mi home такая возможность есть
Можете привязать к 1 устройству все 3...должно как группа работать

Отправлено с моего Xperia XZ1 Compact через Tapatalk

Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ander
Сообщения: 56
Зарегистрирован: Вс авг 27, 2017 9:20 pm
Благодарил (а): 7 раз
Поблагодарили: 0

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение Ander » Ср янв 20, 2021 6:41 pm

вопрос в том, чтобы послать что-то типа широковещательного пакета, например команду prop_update послать сразу нескольким объектам, а не последовательно
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение skysilver » Чт янв 21, 2021 12:34 pm

Ander писал(а):
Ср янв 20, 2021 6:41 pm
вопрос в том, чтобы послать что-то типа широковещательного пакета, например команду prop_update послать сразу нескольким объектам, а не последовательно
Самим протоколом такое не предусмотрено. Только отдельные пакеты на IP каждого устройства друг за другом.
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Аватара пользователя
chelovert
Сообщения: 64
Зарегистрирован: Ср май 08, 2019 2:01 pm
Благодарил (а): 11 раз
Поблагодарили: 28 раз

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение chelovert » Пт янв 22, 2021 4:59 pm

Всем привет. Скажу сразу, что данную ветку не перечитывал. Если инфа дублирующаяся, то прошу модераторов удалить данный пост...

Если кому интересно, то у меня получилось отправить Mi robot vacuum cleaner 1с на зональную уборку! (в текущей версии модуля код для зональной уборки закомментарен) Если это интересно, то могу рассказать как доставал координаты. Это оч просто оказалось. без танцев с FloleVac итп.

Координаты доставал так: (нюанс. тестовый телефон у меня с android 5.1!!!Miezu M3s. На нем точно все работает. На андройдах выше 9го (по-моему) Ввели запрет на пользовательские сертификаты, если приложение их не поддерживает! и скорее всего HttpCanary не будет дешифровывать https запросы )
1. Запустил Mi home на телефоне
2. Запустил HttpCanary на телефоне
3. выбрал в HttpCanary чтобы отслеживал запросы только с MiHome
4. Mihome выбрал зону. Нажал кнопку - начать уборку.
5. Пошел в HttpCanary. Тут будет запрос к api у меня это https://ru.api.io.mi.com/app/home/rpc/<id робота>
6. Там будет куча таких запросов... но надо среди них найти запрос с координатами... Все. (Пример запроса с координатами ниже)

П.с. через HttpCanary также можно получить token-ы устройств.

+ я так понимаю, что в целом Mi robot vacuum cleaner 1c все равно сколько зон. Ему достаточно только координаты отправить. Вобщем можно его перемещать по заданной траектории.

команда.

Код: Выделить всё

{"did":"<id робота>","siid":18,"aiid":1,"in":[{"piid":1,"value":19},{"piid":21,"value":"x1,y1,x2,y2"}]}}
x1,y1,x2,y2 - соответственно координаты точек прямоугольника (зоны уборки).
<id робота> - думаю можно и без него. хотя пока не проверял.

через miio.class.php команда работает. отправлял на method = action

Код: Выделить всё

$opt = '{"did":"<id робота>","siid":18,"aiid":1,"in":[{"piid":1,"value":19},{"piid":21,"value":"x1,y1,x2,y2"}]}}';
$dev->msgSendRcv('action', $opt, time());
+ приятный бонус. Сохраненные из HttpCanary бинарные данные, которые Mihome шлет прям в пылесос отлично декодируются через miPacket. Надо только их из bin в hex перевести. Делал это командой

Код: Выделить всё

hexdump -v -e '1/1 "%02x"' /path/to/binfile
а потом в скрипте

Код: Выделить всё

$data = <тут строка от предыдущей команды>;
$decrypted = $miPacket->decryptData($data);
astotskiy
Сообщения: 45
Зарегистрирован: Вт июл 15, 2014 4:28 pm
Благодарил (а): 79 раз
Поблагодарили: 4 раза

Re: [Модуль] Xiaomi miIO (xiaomimiio)

Сообщение astotskiy » Вс янв 24, 2021 10:59 am

День добрый.
Приобрел увлажнитель, в MiHome определился как deerma.humidifier.jsq, в модуле выбрал Mi Air Humidifier MJJSQ - во вкладке данные, метрики не обнавляются, пробывал перебирать увлажнители не один не заработал. или этот увлажнитель не поддерживается модулем.
PS: Токен прописал, взял из MiHome от vevsa

miIO Info

Connection to device by IP 192.168.1.55 Debug status [1] Socked created Command to send - {"id":1611475047,"method":"miIO.info","params":[]} Checking device status by 192.168.1.55 Timeout SO_RCVTIMEO successfully set >>>>> Sending hello-packet to 192.168.1.55 with timeout 2 >>>>> Sent 32 bytes to socket <<<<< Reply received from IP 192.168.1.55 , port 54321 32 bytes received magic: 2131 length: 0020 --> 32 bytes unknown1: 00000000 devicetype: 0e38 serial: 4265 ts: 0004d32e --> 316206 seconds --> 1970-01-04 18:50:06 timediff: -1611158841 checksum: ffffffffffffffffffffffffffffffff ts_server: 600d2867 --> 1611475047 seconds --> 2021-01-24 10:57:27 Device 192.168.1.55 available Timeout SO_RCVTIMEO successfully set Using manually set token - 9750666143642dff497a0d64d77a0c9c >>>>> Sending packet to 192.168.1.55 with timeout 2 magic: 2131 length: 0060 --> 96 bytes unknown1: 00000000 devicetype: 0e38 serial: 4265 ts: 0004d32e --> 316206 seconds --> 1970-01-04 18:50:06 timediff: -1611158841 checksum: b537f2a50a1b1e432bf213c74a848faa ts_server: 600d2867 --> 1611475047 seconds --> 2021-01-24 10:57:27 data: 51b91273a52c5eeab43fccb396ba9ab52ece14711b47318d0271c58f83d1787b2d4f890e0acfe9a1768ef77eeaf46dffc6ba6cc5affe133f8dd2c2bd2c43fade >>>>> Sent 96 bytes to socket <<<<< Reply from IP 192.168.1.55 , port 54321 Read 512 bytes from socket magic: 2131 length: 0200 --> 512 bytes unknown1: 00000000 devicetype: 0e38 serial: 4265 ts: 0004d32e --> 316206 seconds --> 1970-01-04 18:50:06 timediff: -1611158841 checksum: 09bb965857a5c4adb6c487a42797d7b0 data: 51b91273a52c5eeab43fccb396ba9ab59aface293ec25bc21f2a914f88aaf6b26e18a78777a9123ec819e4a168aecb8fa876d5531c55422636d1a41674f8038ace7776bc3127a571e3f95cc2c9dbb7757195c94c73131177cf2d99652edfdec9e4116e0fcae7d9ff35d47b348d1e5b5a3cae8a5f4380b48a4cb3b3f61064785c074a944bc9252f5c1966a301997aa1086bce0022f6533570e0929e4dc88a471e92b80321bfe9039170d2938423ae71e3c30926bb61c93dbf4482ed5c2320987c49535190380d647756065f2aaae99a2b1d7e3a8785ad148b80499cce5ea8709e015461a99f5cc9def246b405bc53583f76527ce0a8f638eaaa54d9c59933c17343b87506d34c4c133d2c585a0465cd759c943f70a46a08e3afb21f67d7ef2f467fb4b2f6b38a53dc96939086424692f3d2f3706d1ce82d99c29513aa85012303b77e1fcd4452d73e52ce872cae2760aafc59983706bb6029f7f379809cabe373a0690d4de9323b8bb0fb9471a9ac702cf4c74e0aea3331ebb8c5e4282a6c757798df75bfa97b879a7fba87f11054199b2855e3a7a35f11f131b9782dbe46d8a443bb292f051c3605c75ad9066aa1e25569e22301f2b40bb254d19e3ca7c3e0e12e249c72c71e8e9e77a504a5ef8ae5f7a828cdee47d13a0a6b379ba674447963 Data decrypted: {"id":1611475047,"result":{"life":316206,"uid":1577752887,"model":"deerma.humidifier.jsq","token":"9750666143642dff497a0d64d77a0c9c","ipflag":1,"fw_ver":"2.0.7","mcu_fw_ver":"0113","miio_ver":"0.0.8","hw_ver":"esp8266","mmfree":24448,"mac":"44:23:7C:BE:8D:65","wifi_fw_ver":"2709610","ap":{"ssid":"Alex-Net","bssid":"52:FF:20:57:71:5A","rssi":-40,"primary":3},"netif":{"localIp":"192.168.1.55","mask":"255.255.255.0","gw":"192.168.1.1"},"config_type":"app"},"exe_time":30} JSON data is vaild. {"id":1611475047,"result":{"life":316206,"uid":1577752887,"model":"deerma.humidifier.jsq","token":"9750666143642dff497a0d64d77a0c9c","ipflag":1,"fw_ver":"2.0.7","mcu_fw_ver":"0113","miio_ver":"0.0.8","hw_ver":"esp8266","mmfree":24448,"mac":"44:23:7C:BE:8D:65","wifi_fw_ver":"2709610","ap":{"ssid":"Alex-Net","bssid":"52:FF:20:57:71:5A","rssi":-40,"primary":3},"netif":{"localIp":"192.168.1.55","mask":"255.255.255.0","gw":"192.168.1.1"},"config_type":"app"},"exe_time":30}
Ответить