ioBroker Forum


Nutzungsbedingungen |Datenschutzrichtlinie
Cloud |Dokumentation
Aktuelle Zeit: 20.02.2018, 10:13

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Xiaomi Remote 360
BeitragVerfasst: 18.01.2018, 21:57 
Offline

Registriert: 13.01.2018, 23:37
Beiträge: 4
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal
Продолжая традицию "узнал сам - поделись с другими" опишу свои наработки с устройством Xiaomi Remote 360 (или IR 360). Здесь обзор на устройство https://www.ixbt.com/live/kvazis/obzor- ... narii.html

Dateianhang:
IR360.jpeg
IR360.jpeg [ 11.7 KiB | 316 mal betrachtet ]


Данное устройство работает как самостоятельное устройство или как часть экосистемы Xiaomi через WiFi. Открытый API отсутствует. Но как говориться "мир не без добрых людей". Один написал модуль miIO, второй портировал на другие системы УД, третьи просто помогли дельными советами. За последние два действия отдельная благодарность skysilver. Это прелюдия, перейдем к действиям.

Задача: получить доступ к мозгам устройства и возможность его управления из iOBroker. Начнем:

Этап 1: Получаем токен устройства. Тема большая, развернутая и о ней много написано здесь https://majordomo.smartliving.ru/forum/viewtopic.php?f=8&p=61208#p61208 и здесь https://majordomo.smartliving.ru/forum/viewtopic.php?f=5&p=65809#p65809, первоисточник здесь https://github.com/aholstenson/miio. Но мы с вами немного ленивые, читаем по диагонали, а сделать хотим быстро. Поэтому мануал:

1. Если вы активный пользователь iOBroker, можете пропускать. NodeJS у вас в любом случае установлен. Проверить можно командой
Code:
node -v

в ответ получаем версию. Если не установлен, то что вы тут делаете? )) или установить командой в консоли
Code:
sudo apt install nodejs

2. Устанавливаем модуль miIO
Code:
npm install -g miio

3. Скандируем сеть на предмет наличия совместных устройств
Code:
miio --discover

в ответ получаем (хуже если нет) список обнаруженных устройств. Сохраняем Device ID, Address, Тoken. Наша цель IR 360, поэтому ищем в списке именно его. Советую присваивать устройству статический IP по MAC адресу. В перспективе нам к нему будет проще обращаться по постоянному IP.
4. Опрос выявленного IR360
Code:
miio --inspect IP_устройства --token токен_устройства

5. Получает JSON IR 360
Code:
miio --control IP_устройства --token  токен_устройства --method miIO.info

На выходе должна быть информация вида (перс.данные устройства скрываю за ХХХХХХХХХ - ФЗ 152 :D ):
Code:
INFO  Attempting to control 10.0.1.39

 INFO  Got result:
{
  "life": 1930612,
  "cfg_time": 0,
  "token": "ХХХХХХХХХХХХХХХХХХХХХХХХХХХХХ",
  "mac": "ХХ:ХХ:ХХ:ХХ:ХХ:ХХ",
  "fw_ver": "1.2.4_38",
  "hw_ver": "MC200",
  "model": "chuangmi.ir.v2",
  "wifi_fw_ver": "SD878x-14.76.36.p79-702.1.0-WM",
  "ap": {
    "rssi": -44,
    "ssid": "MySSID",
    "bssid": "14:D6:XX:XX:XX:XX"
  },
  "netif": {
    "localIp": "10.0.1.39",
    "mask": "255.255.255.0",
    "gw": "10.0.1.1"
  },
  "mmfree": 45216,
  "ot": "ott",
  "otu_stat": [
    272,
    251,
    176,
    0,
    173,
    800
  ],
  "ott_stat": [
    46,
    6,
    260,
    3867
  ]
}

Поздравляю, вы прошли половину пути и надеюсь все у вас получилось!

Этап 2: Подключение к IR360 с конкретной целью - вкл/выкл скажем ТВ. Для этого изначально IR360 должен знать о существовании вашего ТВ и пульт должен быть выбран не из базы Xiaomi, а обучен каждой кнопкой на пульте. Как обучить IR360 кнопкам на ваших пультах смотрите в обзоре самого устройства в начале этого поста. Итак:
1. IR360 знает о нашем пульте, обучен всем кнопкам и где-то в недрах своих хранит эти коды. Нам нужно получить их. Есть самый простой способ и несколько других. Я поищу самый простой. С помощью андроид телефона, с правами рута, на котором вы и проводили обучение кнопкам пультов. Если же так получилось, что у вас андроида нет (беда еще та), то делайте как я )). Находим жертву с таким чудо телефоном, устанавливаем ему MiHome из PlayMarket, регистрируем его как пользователя в сети Xiaomi (через приложение) и на своем айфоне делимся устройством (Share) с лучшим другом и его телефоном. Отправили ему приглашение, он его получил. Видит ваше устройство. Дальше внимание! Друг должен своим телефоном включить и выключить, переключить каналы, громкость и т.д. И только после этого вся база с кодами кнопок будет в его телефоне и он ее заберет по адресу /data/data/com.xiaomi.smarthome/files/IR_REMOTE_DID_device.json и отдаст вам. После этого он удалит ваше устройство из своего MiHome, или это сделайте вы, удалив расширенное другу устройство. Во всем этом есть одна плохая новость, если вы будете обучать IR360 новым пультам или новым кнопкам на них, эту процедуру придется делать неоднократно. Друг будет несказанно рад вашему приглашению "выпить пива", прихватив с собой телефон ))
2. Открываем полученный файл любым текстовым редактором. В нем структура такова: вначале перечень пультов устройств, например:
Code:
{"ParentID":"55301223","Timestamp":1507920713,"DeviceID":"1EjyJLNAXsiPQYxbTZQOdYcmDwhr29hr",
"DeviceType":2,"BrandName":"Xiaomi","State":0,"DeviceTitle":"TV Philips","Location":0,"DeviceData":"",
"DataProvider":"MiDataProvider","MatchedMonitorID":"","StudyMonitorID":"yCti97QS6yS8NEHJEc7j7PNVLABYIe
Nq", "StudyMonitorSectionCount":4},{"ParentID":"55301223","Timestamp":1507925284,


выделенное в тексте это ID устройства к которому ниже в файле будут указаны коды кнопок. Ниже, под перечнем устройств, начинается секция с описанием кодов кнопок. Выглядит примерно так:
Code:
{"key":"9","value":"Z6WfAKYBAADRAQAAYAMAAIcDAACnAwAAdAoAAJBGAQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAlIQEBIQMBAQEBAQEBAQEBASQBYyUhAQEhAwEBAQEBAQEBAQEBIwFjJSEBASE
DAQEBAQEBAQEBAQEjAWMlIQEBIQMBAQEBAQEBAQEBASMBAw==","freq":38400},
{"key":"power","value":"Z6V9AIsBAADqAQAAUQMAAKADAAB0CgAAmwoAAJxEAQAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAlIQEBIQMBAQEBAQEBAQEBAQMhAWElIQEBIQMBAQEBAQEBAQEBAQMhA
WEkIQEBIQMBAQEBAQEBAQEBAQMhAQE=","freq":38400}

Обратите внимание, параметр key это "название кнопки", так как вы ее обозвали, когда "обучали" IR360 кнопкам на физическом пульте. Длинная цепочка символов (параметр value - код кнопки на "пульте" и в моем случае для выключения ТВ это будет "Z6V9AIsBAADqAQAAUQMAAKADAAB0CgAAmwoAAJxEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAlIQEBIQMBAQEBAQEBAQEBAQMhAWElIQEBIQMBAQEBAQEBAQEBAQMhAWEkIQEBIQMBAQE
BAQEBAQEBAQMhAQE="


3. Возвращаемся в консоль и с трепетом даем команду
Code:
miio --control IP_устройства --token токен_устройства --method miIO.ir_play --params '{"freq":38400,"code":"код_кнопки"}


И в этот момент ваш ТВ (или на что вы там рассчитывали) делает магический щелчок и получает статус "ВКЛ или ВЫКЛ" или что-либо иное.

Поздравляю! Вы научились управлять IR360 из консоли. А дальше объекты, скрипты и только ваша фантазия может ограничить вас. Удачи!


Zuletzt geändert von Maryan am 18.01.2018, 22:31, insgesamt 1-mal geändert.

Nach oben
   
 Betreff des Beitrags: Re: Xiaomi Remote 360
BeitragVerfasst: 18.01.2018, 22:17 
Offline

Registriert: 13.01.2018, 23:37
Beiträge: 4
Hat sich bedankt: 3 Mal
Danksagung erhalten: 8 Mal
Говорю же "мир не без добрых людей".
Вот мануал как "достать json файл с кодами кнопок пультов для владельцев iOS устройств.
Без джейлбрейка

  • Setup your iOS device with the Mi Home app
  • Create an unencrypted backup of your iOS device on your computer using iTunes. In case you are unable to disable encryption you probably have a profile preventing this that enforces certain security policies (like work related accounts). Delete these profiles or use another iOS device to continu.
  • Navigate to your BACKUPS and find the name of your iOS device in the list. Open this backup by clicking the triangle in front of it and then click on raw data.
  • Sort the view by name and find the folder com.xiaomi.mihome and highlight it (it's somewhere at the end). After highlighting it click on the cockwheel above the results and select "Save selected files" from here and choose a location to save the files.
  • Navigate to the com.xiaomi.mihome folder which you just saved somewhere and inside this folder navigate to the /Documents/ subfolder. In this folder there is a file named _mihome.sqlite where your userid is specific for your account.
  • Execute the query "select ZTOKEN from ZDEVICE where ZLOCALIP is '192.168.0.1'" where you replace the IP address with the IP address of the Mi Home device you want to get the token from. It will show you the 32 character device token for your Mi Home device.

С джейлбрейком
  • Setup your iOS device with the Mi Home app
  • Use something like Forklift sFTP to connect to your iOS device and copy this file to your computer: /var/mobile/Containers/Data/Application/514106F3-C854-45E9-A45C-119CB4FFC235/Documents/USERID_mihome.sqlite ** username: root ** IP address: your phones IP address ** password: alpine (unless you changed it something else)
  • Execute the query "select ZTOKEN from ZDEVICE where ZLOCALIP is '192.168.0.1'" where you replace the IP address with the IP address of the Mi Home device you want to get the token from. It will show you the 32 character device token for your Mi Home device.

Источник: https://github.com/jghaanstra/com.xiaomi-miio/blob/master/docs/obtain_token_mirobot_new.md#ios-users

P.S. Лишний повод выпить пива самому и не звать соседа, хотя ... с соседом(кой) веселее ))


Nach oben
   
 Betreff des Beitrags: Re: Xiaomi Remote 360
BeitragVerfasst: 02.02.2018, 04:45 
Offline
professional

Registriert: 11.05.2017, 05:15
Beiträge: 122
Wohnort: Самара
Hat sich bedankt: 28 Mal
Danksagung erhalten: 2 Mal
У меня так не прокатывает:
Code:
miio --discover

так работает:
Code:
miio discover

у нас разный софт?
Code:
miio --version
0.15.5

_________________
DE: Rabatte auf einkäufe im Internet; RU: Скидки на покупки в интернете; EN: Discounts for purchases on the Internet
Делаем BITCOIN
NODEJS: 6.11.0
IOBROKER: 1.7.6


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu Forum:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de