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

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

Модератор: immortal

korobko099
Сообщения: 2
Зарегистрирован: Пт июл 26, 2019 5:02 pm
Благодарил (а): 0
Поблагодарили: 0

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

Сообщение korobko099 » Ср окт 27, 2021 11:29 pm

Всем привет!
Объясните, пожалуйста, как добавить метрики устройства Humidifier 2 во вкладку данные устройства?
Весь вечер уже перечитываю эту ветку форума и не могу найти ответа на свой вопрос.
CagoBHuK
Сообщения: 13
Зарегистрирован: Вс янв 29, 2017 12:21 pm
Благодарил (а): 0
Поблагодарили: 1 раз

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

Сообщение CagoBHuK » Пн ноя 01, 2021 11:04 pm

Потратил два вечера на изучение возможности получения изображения из chuangmi.camera.ipc009. Путем гуглинга и разбора различных исходников, наткнулся на https://python-miio.readthedocs.io/en/l ... amera.html, в котором перечислены команды, которые может понимать камера. Как видим, у устройства отсутствует возможность получения p2p_id видеопотока методом get_ipcprop, который в теории можно было бы скормить videoP2Proxy (https://github.com/miguelangel-nubla/videoP2Proxy)для формирования rtsp-потока в виде прокси. Возможности miio ограничиваются миганием лампочками, получением состояния и вращением головы камеры вокруг своей оси. Дампание трафика, проходящего через вайфай-интерфейс роутера, не дало результатов по UPD 54321, камера даже в момент своей первоначальной настройки использует только HTTPS-трафик для общения с серверами Шаоми. Теоретически можно даунгрейднуть прошивку, должна появиться возможность вызова get_ipcprop, но это - нехороший вариант. Как я понимаю, копнул я довольно глубоко, но видео все-таки хочется получить. Может быть у кого-то есть еще мысли, откуда вообще начинать копать? Есть ли смысл брать Gateway, чтобы пробовать дампать трафик внутри сетки?

UPD: нашел вот что: https://github.com/rytilahti/python-miio/issues/901, к нему вот список метрик: https://miot-spec.org/miot-spec-v2/inst ... i-ipc009:1. Однако, почему-то они не пашут ни через get_properties, ни через get_prop. Первое не исполняется в принципе, второе возвращает "unknow".

UPD2: Попробую через Bluestacks с помощью fiddler поизучать протокол HTTPS, мб что-нибудь нарою.

UPD3: Прослушивание HTTPS-трафика привело в итоге в Xiaomi MiOT. Имеется реализация получения видеопотока под мою камеру тут: https://github.com/al-one/hass-xiaomi-m ... 7d198f93e9.
grifindorec
Сообщения: 72
Зарегистрирован: Вт фев 02, 2021 12:54 pm
Благодарил (а): 18 раз
Поблагодарили: 6 раз

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

Сообщение grifindorec » Ср ноя 03, 2021 2:34 pm

Всем привет.
Просьба подсказать, как вызвать API из сценария.
Пишу что-то вроде этого callAPI('/api/module/xiaomimiio','GET',array('dip'=>'ip','dtoken'=>'token','did'=>'8','dcmd'=>'set_properties','dopt'=>'[{"did":"X","siid":2,"piid":2,"value":false}],"id":123'));
Но не работает
silverzab
Сообщения: 23
Зарегистрирован: Вс окт 23, 2016 9:28 am
Благодарил (а): 6 раз
Поблагодарили: 3 раза

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

Сообщение silverzab » Сб янв 01, 2022 4:14 pm

Приобрел аппарат Mi Smart Antibacterial Humidifier. Xiaomi miIO видит аппарат включен или выключен. Где найти данные температуры и влажности. Как управлять им? Подскажите пожалуйста
Вложения
Снимок экрана 2022-01-01 221237.jpg
Снимок экрана 2022-01-01 221237.jpg (38.85 КБ) 1563 просмотра
Диаф
Сообщения: 58
Зарегистрирован: Пт сен 24, 2021 3:02 pm
Благодарил (а): 4 раза
Поблагодарили: 7 раз

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

Сообщение Диаф » Сб янв 29, 2022 6:16 pm

Добрый. Подскажите пожалуйста как вывести данные с пылесоса (заряд батареи, износ щеток, уровень воды) из модуля miio xiaomimiio.class.php на сцену в элемент типа - html. Дело в том, что эти данные не отображаются в Xiaomi miIO. Там только online, command
и message.

$this->addToQueue($device_id, 'get_properties', '[{"did":"state_code","siid":2,"piid":1},{"did":"error_code","siid":2,"piid":2},{"did":"battery","siid":3,"piid":1},{"did":"mode","siid":2,"piid":4},{"did":"work_mode","siid":18,"piid":1},{"did":"water_grade","siid":2,"piid":5},{"did":"clean_times","siid":18,"piid":14},{"did":"clean_area","siid":18,"piid":15},{"did":"clean_time","siid":18,"piid":13},{"did":"filter_life_level","siid":27,"piid":1},{"did":"filter_left_time","siid":27,"piid":2},{"did":"brush1_life_level","siid":26,"piid":2},{"did":"brush1_left_time","siid":26,"piid":1},{"did":"brush2_life_level","siid":28,"piid":2},{"did":"brush2_left_time","siid":28,"piid":1}]');

Спасибо!
utax
Сообщения: 118
Зарегистрирован: Пт май 31, 2019 8:24 am
Благодарил (а): 28 раз
Поблагодарили: 3 раза

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

Сообщение utax » Вт фев 01, 2022 12:00 pm

Диаф писал(а):
Сб янв 29, 2022 6:16 pm
Добрый. Подскажите пожалуйста как вывести данные с пылесоса (заряд батареи, износ щеток, уровень воды) из модуля miio xiaomimiio.class.php на сцену в элемент типа - html. Дело в том, что эти данные не отображаются в Xiaomi miIO. Там только online, command
А этого что нет?
СпойлерПоказать
Скриншот 01-02-2022 105634.jpg
Скриншот 01-02-2022 105634.jpg (158.42 КБ) 1413 просмотров
а так вставляется в сцену

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

div class="Chipik">
<font size="6" color="Green" face="Arial"><center>Информация</center></font>
<font size="4" color="White" face="Arial">
 
Статус:&nbsp%Chipik.State_text_rus%
<br/> 
Уровень заряда:&nbsp%Chipik.Battery%%
<br/>
Время уборки:&nbsp%Chipik.СleanTime% минут
<br/>
Основная щетка:&nbsp%Chipik.MainBrushWorkLife% часов
<br/>
Боковая щетка:&nbsp%Chipik.SideBrushWorkLife% часов
<br/>
Фильтр:&nbsp%Chipik.FilterWorkLife% часов
<br/>
Датчики:&nbsp%Chipik.SensorDirtyLife% часов
</font>
</div>
Диаф
Сообщения: 58
Зарегистрирован: Пт сен 24, 2021 3:02 pm
Благодарил (а): 4 раза
Поблагодарили: 7 раз

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

Сообщение Диаф » Вт фев 01, 2022 12:40 pm

Присутствует только три строки:

online
command
message

message всегда показывает ошибку - {"id":1643381586,"error":{"code":-9999,"message":"user ack timeout"},"exe_time":4030}

Раньше когда делал команду - app_start, app_stop, app_charge пылесос ругался, что команды непонятные.
Доработал xiaomimiio.class.php, поменял следующие параметры:

app_start
было - $params = '{"did":"app_start","siid":18,"aiid":1,"in":[{"piid":1,"value":2}]}';
стало - $params = '{"did":"app_start","siid":2,"aiid":1,"in":[]}';

app_stop
было - $params = '{"did":"app_stop","siid":18,"aiid":2,"in":[]}';
стало - $params = '{"did":"app_stop","siid":2,"aiid":2,"in":[]}';

app_charge
было - $params = '{"did":"app_charge","siid":2,"aiid":1,"in":[]}';
стало - $params = '{"did":"app_charge","siid":2,"aiid":3,"in":[]}';

Теперь уборка запускается, останавливается и отправляется на базу.

То-есть изначально в модуле xiaomimiio.class.php для моего типа пылесоса неверные настройки.

Сейчас вручную добавил в базу данных таблица - miio_commands строки battery, state_code, state_text, error_code, mode, clean_time, water_grade. Теперь можно установить связанный объект и связанное свойство. Но вот как вытащить данные из xiaomimiio.class.php я не знаю. Не силен в РНР.

API команды все работают, все показывает.

get_commands = {
1:'{"method":"get_properties","params":[{"siid":2,"piid":1}]}', #command_get_status
2:'{"method":"get_properties","params":[{"siid":2,"piid":2}]}', #command_get_error
3:'{"method":"get_properties","params":[{"siid":2,"piid":4}]}', #command_get_mode
4:'{"method":"get_properties","params":[{"siid":2,"piid":5}]}', #command_get_water_mode
5:'{"method":"get_properties","params":[{"siid":2,"piid":6}]}', #command_get_fan_mode
6:'{"method":"get_properties","params":[{"siid":3,"piid":2}]}', #command_get_charge_state
7:'{"method":"get_properties","params":[{"siid":16,"piid":1}]}', #command_get_mop_status
8:'{"method":"get_properties","params":[{"siid":3,"piid":1}]}', #command_get_battery_level
9:'{"method":"get_properties","params":[{"siid":14,"piid":1}]}', #command_get_main_brush_life_level_percent
10:'{"method":"get_properties","params":[{"siid":14,"piid":2}]}', #command_get_main_brush_life_level_minutes
11:'{"method":"get_properties","params":[{"siid":15,"piid":1}]}', #command_get_side_brush_life_level_percent
12:'{"method":"get_properties","params":[{"siid":15,"piid":2}]}', #command_get_side_brush_life_level_minutes
13:'{"method":"get_properties","params":[{"siid":11,"piid":1}]}', #command_get_filter_life_level_percent
14:'{"method":"get_properties","params":[{"siid":11,"piid":2}]}', #command_get_filter_brush_life_level_minutes
15:'{"method":"get_properties","params":[{"siid":9,"piid":1}]}', #command_get_clean-area # responce value always 0
16:'{"method":"get_properties","params":[{"siid":9,"piid":2}]}', #command_get_clean-time # responce value always 0
17:'{"method":"get_properties","params":[{"siid":9,"piid":3}]}', #command_get_total_clean-area # responce value always 0
18:'{"method":"get_properties","params":[{"siid":9,"piid":4}]}', #command_get_total_clean-time # responce value always 0
19:'{"method":"get_properties","params":[{"siid":9,"piid":5}]}', #command_get_total_clean-count # responce value always 0
20:'{"method":"get_properties","params":[{"siid":12,"piid":1}]}', #command_get_speech_language
21:'{"method":"get_properties","params":[{"siid":12,"piid":1}]}'} #command_get_DND_status

action_commands = {
1:'{"method":"action","params":{"siid":2,"aiid":1}}', #command_start_sweep
2:'{"method":"action","params":{"siid":2,"aiid":2}}', #command_stop_sweep
3:'{"method":"action","params":{"siid":2,"aiid":3}}', #command_go_charge
4:'{"method":"action","params":{"siid":6,"aiid":1}}', #command_find_vacuum
5:'{"method":"action","params":{"siid":13,"aiid":1}}', #command_start_charge
6:'{"method":"action","params":{"siid":13,"aiid":2}}'} #command_stop_charge

set_commands = {
1:'{"method":"set_properties","params":[{"siid":2,"piid":4,"value":', #command_set_work_mode
2:'{"method":"set_properties","params":[{"siid":2,"piid":5,"value":', #command_set_water_mode
3:'{"method":"set_properties","params":[{"siid":2,"piid":6,"value":', #command_set_fan_mode
4:'{"method":"set_properties","params":[{"siid":12,"piid":1,"value":', #command_set_speech_language
5:'{"method":"set_properties","params":[{"siid":12,"piid":2,"value":'} #command_set_DND_status
utax
Сообщения: 118
Зарегистрирован: Пт май 31, 2019 8:24 am
Благодарил (а): 28 раз
Поблагодарили: 3 раза

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

Сообщение utax » Вт фев 01, 2022 1:17 pm

Диаф писал(а):
Вт фев 01, 2022 12:40 pm
Присутствует только три строки:

online
command
message
Может токен не правильный, у него всегда токен меняется при новом подключении к вайфай.
Диаф
Сообщения: 58
Зарегистрирован: Пт сен 24, 2021 3:02 pm
Благодарил (а): 4 раза
Поблагодарили: 7 раз

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

Сообщение Диаф » Вт фев 01, 2022 1:38 pm

Токен правильный. Пылесос - Xiaomi Mi Robot Vacuum-Mop Essential. В miIO указал - Mi Robot Vacuum Mop 1С.
Диаф
Сообщения: 58
Зарегистрирован: Пт сен 24, 2021 3:02 pm
Благодарил (а): 4 раза
Поблагодарили: 7 раз

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

Сообщение Диаф » Чт фев 03, 2022 3:54 pm

Может кто подскажет какую команду отправляет модуль для опроса пылесоса (Период опроса, секунд:)?
Запутался в xiaomimiio.class.php
Ответить