[Модуль] Xiaomi miIO (xiaomimiio)
Модератор: immortal
-
- Сообщения: 2
- Зарегистрирован: Пт июл 26, 2019 5:02 pm
- Благодарил (а): 0
- Поблагодарили: 0
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Всем привет!
Объясните, пожалуйста, как добавить метрики устройства Humidifier 2 во вкладку данные устройства?
Весь вечер уже перечитываю эту ветку форума и не могу найти ответа на свой вопрос.
Объясните, пожалуйста, как добавить метрики устройства Humidifier 2 во вкладку данные устройства?
Весь вечер уже перечитываю эту ветку форума и не могу найти ответа на свой вопрос.
-
- Сообщения: 13
- Зарегистрирован: Вс янв 29, 2017 12:21 pm
- Благодарил (а): 0
- Поблагодарили: 1 раз
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Потратил два вечера на изучение возможности получения изображения из 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.
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.
-
- Сообщения: 72
- Зарегистрирован: Вт фев 02, 2021 12:54 pm
- Благодарил (а): 18 раз
- Поблагодарили: 6 раз
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Всем привет.
Просьба подсказать, как вызвать 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'));
Но не работает
Просьба подсказать, как вызвать 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'));
Но не работает
-
- Сообщения: 23
- Зарегистрирован: Вс окт 23, 2016 9:28 am
- Благодарил (а): 6 раз
- Поблагодарили: 3 раза
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Приобрел аппарат Mi Smart Antibacterial Humidifier. Xiaomi miIO видит аппарат включен или выключен. Где найти данные температуры и влажности. Как управлять им? Подскажите пожалуйста
- Вложения
-
- Снимок экрана 2022-01-01 221237.jpg (38.85 КБ) 1622 просмотра
-
- Сообщения: 58
- Зарегистрирован: Пт сен 24, 2021 3:02 pm
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Добрый. Подскажите пожалуйста как вывести данные с пылесоса (заряд батареи, износ щеток, уровень воды) из модуля 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}]');
Спасибо!
и 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}]');
Спасибо!
-
- Сообщения: 118
- Зарегистрирован: Пт май 31, 2019 8:24 am
- Благодарил (а): 28 раз
- Поблагодарили: 3 раза
Re: [Модуль] Xiaomi miIO (xiaomimiio)
А этого что нет?
СпойлерПоказать
Код: Выделить всё
div class="Chipik">
<font size="6" color="Green" face="Arial"><center>Информация</center></font>
<font size="4" color="White" face="Arial">
Статус: %Chipik.State_text_rus%
<br/>
Уровень заряда: %Chipik.Battery%%
<br/>
Время уборки: %Chipik.СleanTime% минут
<br/>
Основная щетка: %Chipik.MainBrushWorkLife% часов
<br/>
Боковая щетка: %Chipik.SideBrushWorkLife% часов
<br/>
Фильтр: %Chipik.FilterWorkLife% часов
<br/>
Датчики: %Chipik.SensorDirtyLife% часов
</font>
</div>
-
- Сообщения: 58
- Зарегистрирован: Пт сен 24, 2021 3:02 pm
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Присутствует только три строки:
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
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
-
- Сообщения: 118
- Зарегистрирован: Пт май 31, 2019 8:24 am
- Благодарил (а): 28 раз
- Поблагодарили: 3 раза
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Может токен не правильный, у него всегда токен меняется при новом подключении к вайфай.
-
- Сообщения: 58
- Зарегистрирован: Пт сен 24, 2021 3:02 pm
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Токен правильный. Пылесос - Xiaomi Mi Robot Vacuum-Mop Essential. В miIO указал - Mi Robot Vacuum Mop 1С.
-
- Сообщения: 58
- Зарегистрирован: Пт сен 24, 2021 3:02 pm
- Благодарил (а): 4 раза
- Поблагодарили: 7 раз
Re: [Модуль] Xiaomi miIO (xiaomimiio)
Может кто подскажет какую команду отправляет модуль для опроса пылесоса (Период опроса, секунд:)?
Запутался в xiaomimiio.class.php
Запутался в xiaomimiio.class.php