Перейти к содержанию

Ярлык с токеном на несколько сценариев (Android): различия между версиями

Материал из Wiki yaboard
м Ark rusinov-9121383 переименовал страницу "Получение токена и запуск сценария в одно нажатие (Android)" в "[[Несколько сценар…
м Ark rusinov-9121383 переименовал страницу "Ярлык на несколько сценариев (Android)" в "[[Ярлык с токеном на несколько сценарие…
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{metadesc| Получение CSRF-токена по сookie из браузера и дальнейший запуск одного или нескольких сценариев с этим токеном по ярлыку с рабочего стола }}
{{metadesc| Получение CSRF-токена по сookie из браузера и дальнейший запуск одного или нескольких сценариев с этим токеном по ярлыку с рабочего стола }}
__NOEDITSECTION__
__TOC__


{{Hands}}
{{Unofficial}}
{{Unofficial}}


== Введение ==
 
Возникла у меня необходимость запускать несколько сценариев "по одной кнопке", например, чтобы при возвращении домой можно в одно нажатие включить свет в квартире и музыку/телевизор/кофеварку/etc.
== Проблема ==
Это было бы можно объединить всё в один сценарий, но не хотелось каждый раз проделывать путь "найти приложение Яндекс->зайти в устройства->Управление->Сценарии->запуск сценария 1->запуск сценария 2->запуск сценария 3".
 
Решения было найдено следующее, на телефон устанавливается приложение HTTP Shortcuts ([https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts Google Play], [https://http-shortcuts.rmy.ch/ офф.сайт]), настраивается отдельными сценариями получение токена и запуск сценариев, на рабочий стол выносится ярлык для запуска.
 
Иногда возникает необходимость запуска нескольких сценариев "по одной кнопке", чтобы не множить их сходные копии и не создавать сложные схемы их взаимодействия.  
 
С другой стороны, не хочется каждый раз кликать "Приложение Яндекс->Устройства->Сценарии->Запуск сценария 1->Запуск сценария 2->Запуск сценария 3..." - или запускать все эти сценарии подряд голосом.
 
 
== Решение ==
 
 
* На смартфон устанавливается приложение "HTTP Shortcuts" ([https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts Google Play], [https://http-shortcuts.rmy.ch/ официальный сайт]);
* Настраивается получение токена;
* Настраивается запуск сценариев;
* На рабочий стол выносится ярлык для запуска всей цепочки.
 
Текущая реализация использует cookie из браузера, срок действия которых неизвестен.
По мере получения новой информации статья будет обновляться.




== Реализация ==
== Получаем токен ==
Данная реализация, на текущий момент, основана на использовании файлов cookie из браузера, срок действия которых до конца не проверен, по мере получения новой информации статья будет обновляться.




=== Получение токена ===
На компьютере:
* Открываем в браузере DevTools (CTRL+Shift+I), раздел Network.
* Открываем в браузере DevTools (CTRL+Shift+I или F12).
* Переходим на https://yandex.ru/quasar?storage=1 (Вы должны быть авторизованы под своей УЗ Яндекс)
* Переключаемся на вкладку "Network".
* Видим запрос с названием "quasar?storage=1", кликаем на него ПКМ, выбираем "Copy -> Copy as curl"
* Открываем https://yandex.ru/quasar?storage=1 (конечно, с авторизацией под аккаунтом Яндекса, к которому привязан умный дом).
* В "Network" видим запрос с названием "quasar?storage=1", кликаем правой кнопкой мыши, выбираем "Copy -> Copy as curl".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy curl quasar.png|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy curl quasar.png|500px]] }}
* Скопированное содержимое передаем любым удобным способом на телефон (например отправив в Избранное через Телеграм, не забыв экранировать содержимое символами ``` перед и после сообщения)
* Скопированное содержимое передаем любым удобным способом на смартфон: например, через email, или "Избранное" в Телеграм (в этом случае обязательно поставьте символы ``` до и после скопированного текста, чтобы он отправился без искажений).
* Копируем содержимое на телефоне в буфер обмена.
 
* Открываем на телефоне [https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts HTTP Shortcuts]
На смартфоне:
* Нажимаем 3 точки в правом верхнем углу, выбираем "Переменные"
* Полученный текст копируем в буфер обмена.
* Нажимаем + в правом нижнем углу, выбираем "Константа"
* Открываем программу "[https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts HTTP Shortcuts]".
* Нажимаем 3 точки в правом верхнем углу, выбираем "Переменные".
* Нажимаем (+) в правом нижнем углу, выбираем "Константа".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable.jpg|500px]] }}
* В поле Name пишем "token" и нажимаем галочку в правом верхнем углу
* В поле "Name" пишем "token", и нажимаем галочку в правом верхнем углу.
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable 2.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add variable 2.jpg|500px]] }}
* Возвращаемся на главный экран нажатием стрелочки в левом верхнем углу
* Возвращаемся на главный экран нажатием стрелочки в левом верхнем углу.
* Нажимаем + в правом нижнем углу, выбираем "Из команды cURL"
* Нажимаем (+) в правом нижнем углу, выбираем "Из команды cURL".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script create request from curl.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script create request from curl.jpg|500px]] }}
* Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу
* Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу.
* В открывшемся меню в поле "Название ярлыка" пишем как мы хотим его назвать.
* В открывшемся меню в поле "Название ярлыка" пишем любое удобное нам название.
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request set name.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request set name.jpg|500px]] }}
* Далее открываем раздел "Response Handling"  
* Далее открываем раздел "Response Handling".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling.jpg|500px]] }}
* И меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)"
* Меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling 2.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script change responce handling 2.jpg|500px]] }}
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
* Переходим в раздел "писать сценарии"
* Переходим в раздел "Писать сценарии".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario.jpg|500px]] }}
* Добавляем следующий код в поле посередине "Запустить при успешном выполнении":
* Добавляем следующий код в поле "Запустить при успешном выполнении":
  a=JSON.parse(response.body)
  a=JSON.parse(response.body)
  token=a.storage.csrfToken2
  token=a.storage.csrfToken2
Строка 47: Строка 66:
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario 2.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add scenario 2.jpg|500px]] }}
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу.
 
Готово!
 
 
== Пример сценария с использованием токена ==




=== Пример запуска сценария с полученным ранее токеном ===
На компьютере:
* Возвращаемся к браузеру на ПК
* Открываем в браузере https://yandex.ru/quasar/iot
* Открываем в браузере https://yandex.ru/quasar/iot (Вы должны быть авторизованы под своей УЗ Яндекс)
* Переключаем вкладку сверху на "Сценарии"
* Переключаем вкладку сверху на "Сценарии"
* Открываем в браузере DevTools (CTRL+Shift+I), раздел Network.
* Открываем в браузере DevTools (CTRL+Shift+I), раздел Network.
* В блоке "Сценарии" находим который мы хотим запустить и зажимаем "Start" (треугольник справа от сценария).
* В блоке "Сценарии" находим тот, который хотим запустить, и зажимаем "Start" (треугольник справа от сценария).
* Видим 2 запроса с названием "actions", кликаем на второй ПКМ, выбираем "Copy -> Copy as curl"
* Видим 2 запроса с названием "actions", кликаем правой кнопкой мыши на второй (!), выбираем "Copy -> Copy as curl".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy scenario curl.png|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script copy scenario curl.png|500px]] }}
* Скопированное содержимое передаем любым удобным способом на телефон (например отправив в Избранное через Телеграм, не забыв экранировать содержимое символами ``` перед и после сообщения)
* Скопированное содержимое снова передаем на смартфон.
* Копируем содержимое на телефоне в буфер обмена.
 
* Открываем на телефоне [https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts HTTP Shortcuts]
На смартфоне:
* Нажимаем + в правом нижнем углу, выбираем "Из команды cURL"
* Копируем текст в буфер обмена.
* Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу
* Снова открываем "[https://play.google.com/store/apps/details?id=ch.rmy.android.http_shortcuts HTTP Shortcuts]".
* В открывшемся меню в поле "Название ярлыка" пишем как мы хотим его назвать.
* Нажимаем (+) в правом нижнем углу, выбираем "Из команды cURL".
* Переходим в раздел "Заголовки запроса"
* Вставляем содержимое из буфера, и нажимаем галочку в правом верхнем углу.
* В открывшемся меню в поле "Название ярлыка" пишем удобное нам название.
* Переходим в раздел "Заголовки запроса".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change headers.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change headers.jpg|500px]] }}
* Открываем заголовок "x-csrf-token"
* Открываем заголовок "x-csrf-token".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token 2.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token 2.jpg|500px]] }}
* Удаляем значение и нажимаем на фигурные скобки справа
* Удаляем значение и нажимаем на фигурные скобки справа.
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set value.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set value.jpg|500px]] }}
* В открывшемся меню выбираем созданную ранее переменную "token"
* В открывшемся меню выбираем созданную ранее переменную "token".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable.jpg|500px]] }}
* Нажимаем  "OK"
* Нажимаем  "Ok".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable 2.jpg|500px]] }}
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request change token set variable 2.jpg|500px]] }}
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
* Далее открываем раздел "Response Handling" и меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)"
* Далее открываем раздел "Response Handling", и меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)".
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
* Переходим в раздел "писать сценарии" и добавляем следующий код в поле в верхнее поле "Запустить до выполнения":
* Переходим в раздел "Писать сценарии", и добавляем в верхнее поле "Запустить до выполнения" команду задержки на 2 секунды:
  wait(2000)
  wait(2000)
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу.
 
 
== Создаём ярлык-мультискрипт ==




=== Создание ярлыка для мультискрипта ===
На смартфоне:
* Нажимаем + в правом нижнем углу, выбираем "Multi-Shortcut"
* Нажимаем (+) в правом нижнем углу, выбираем "Multi-Shortcut".
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add request add multi shortcut.jpg|500px]] }}
* В открывшемся меню в поле "Название ярлыка" пишем удобное название.
* В открывшемся меню в поле "Название ярлыка" пишем как мы хотим его назвать.
* Далее открываем раздел "Trigger Shortcuts", и добавляем созданные ранее скрипты.
* Далее открываем раздел "Trigger Shortcuts" и добавляем созданные ранее скрипты
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add multi-shortcuts .jpg|500px]] }}
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу.
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
* Нажимаем и удерживаем созданный триггер, пока не всплывет меню, а затем выбираем "Разместить на главном экране".
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу
* Нажимаем и удерживаем на наш скрипт пока не всплывет меню, в меню выбираем "Разместить на главном экране"
{{#spoiler:show=Показать скриншот | hide=Скрыть скриншот | [[Файл:Get token and run script add shortcus to desktop.jpg|500px]] }}
* Запускаем ярлык с рабочего стола и наслаждаемся
* Запускаем ярлык с рабочего стола и наслаждаемся
<gallery>
Файл:Get token and run script add request add multi shortcut.jpg | Выбираем "Multi-Shortcut"
Файл:Get token and run script add multi-shortcuts .jpg | Добавляем скрипты в разделе "Trigger Shortcuts"
Файл:Get token and run script add shortcus to desktop.jpg | Долгим тапом на созданном триггере вызываем меню и выбираем пункт "Разместить на главном экране".
</gallery>


[[Category:Умный дом]]
[[Category:Умный дом]]
[[Category:Неофициальная информация]]
[[Category:Неофициальная информация]]

Текущая версия от 18:20, 26 февраля 2021

Неофициальная информация Методы и программы могут перестать функционировать в любой момент
...а также повредить оборудование и/или нарушить работу систем.
Любые действия и программы вы применяете на свой собственный страх и риск.

Проблема

Иногда возникает необходимость запуска нескольких сценариев "по одной кнопке", чтобы не множить их сходные копии и не создавать сложные схемы их взаимодействия.

С другой стороны, не хочется каждый раз кликать "Приложение Яндекс->Устройства->Сценарии->Запуск сценария 1->Запуск сценария 2->Запуск сценария 3..." - или запускать все эти сценарии подряд голосом.

Решение

  • На смартфон устанавливается приложение "HTTP Shortcuts" (Google Play, официальный сайт);
  • Настраивается получение токена;
  • Настраивается запуск сценариев;
  • На рабочий стол выносится ярлык для запуска всей цепочки.
Текущая реализация использует cookie из браузера, срок действия которых неизвестен.
По мере получения новой информации статья будет обновляться.

Получаем токен

На компьютере:

  • Открываем в браузере DevTools (CTRL+Shift+I или F12).
  • Переключаемся на вкладку "Network".
  • Открываем https://yandex.ru/quasar?storage=1 (конечно, с авторизацией под аккаунтом Яндекса, к которому привязан умный дом).
  • В "Network" видим запрос с названием "quasar?storage=1", кликаем правой кнопкой мыши, выбираем "Copy -> Copy as curl".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Скопированное содержимое передаем любым удобным способом на смартфон: например, через email, или "Избранное" в Телеграм (в этом случае обязательно поставьте символы ``` до и после скопированного текста, чтобы он отправился без искажений).

На смартфоне:

  • Полученный текст копируем в буфер обмена.
  • Открываем программу "HTTP Shortcuts".
  • Нажимаем 3 точки в правом верхнем углу, выбираем "Переменные".
  • Нажимаем (+) в правом нижнем углу, выбираем "Константа".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • В поле "Name" пишем "token", и нажимаем галочку в правом верхнем углу.
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на главный экран нажатием стрелочки в левом верхнем углу.
  • Нажимаем (+) в правом нижнем углу, выбираем "Из команды cURL".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Вставляем содержимое из буфера и нажимаем галочку в правом верхнем углу.
  • В открывшемся меню в поле "Название ярлыка" пишем любое удобное нам название.
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Далее открываем раздел "Response Handling".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
  • Переходим в раздел "Писать сценарии".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Добавляем следующий код в поле "Запустить при успешном выполнении":
a=JSON.parse(response.body)
token=a.storage.csrfToken2
setVariable('token',token)
showToast(token)
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу
  • Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу.

Готово!

Пример сценария с использованием токена

На компьютере:

  • Открываем в браузере https://yandex.ru/quasar/iot
  • Переключаем вкладку сверху на "Сценарии"
  • Открываем в браузере DevTools (CTRL+Shift+I), раздел Network.
  • В блоке "Сценарии" находим тот, который хотим запустить, и зажимаем "Start" (треугольник справа от сценария).
  • Видим 2 запроса с названием "actions", кликаем правой кнопкой мыши на второй (!), выбираем "Copy -> Copy as curl".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Скопированное содержимое снова передаем на смартфон.

На смартфоне:

  • Копируем текст в буфер обмена.
  • Снова открываем "HTTP Shortcuts".
  • Нажимаем (+) в правом нижнем углу, выбираем "Из команды cURL".
  • Вставляем содержимое из буфера, и нажимаем галочку в правом верхнем углу.
  • В открывшемся меню в поле "Название ярлыка" пишем удобное нам название.
  • Переходим в раздел "Заголовки запроса".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Открываем заголовок "x-csrf-token".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Удаляем значение и нажимаем на фигурные скобки справа.
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • В открывшемся меню выбираем созданную ранее переменную "token".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Нажимаем "Ok".
<button type="button" class="spoilers-button" aria-expanded="false">Показать скриншот</button>
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
  • Далее открываем раздел "Response Handling", и меняем значение поля "On Success" с "Show the response" на "Show nothing (run silently)".
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
  • Переходим в раздел "Писать сценарии", и добавляем в верхнее поле "Запустить до выполнения" команду задержки на 2 секунды:
wait(2000)
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
  • Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу.

Создаём ярлык-мультискрипт

На смартфоне:

  • Нажимаем (+) в правом нижнем углу, выбираем "Multi-Shortcut".
  • В открывшемся меню в поле "Название ярлыка" пишем удобное название.
  • Далее открываем раздел "Trigger Shortcuts", и добавляем созданные ранее скрипты.
  • Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
  • Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу.
  • Нажимаем и удерживаем созданный триггер, пока не всплывет меню, а затем выбираем "Разместить на главном экране".
  • Запускаем ярлык с рабочего стола и наслаждаемся