Ярлык с токеном на несколько сценариев (Android): различия между версиями
м Ark rusinov-9121383 переименовал страницу "Получение токена и запуск сценария в одно нажатие (Android)" в "[[Несколько сценар… |
м Ark rusinov-9121383 переименовал страницу "Ярлык на несколько сценариев (Android)" в "[[Ярлык с токеном на несколько сценарие… |
||
| (не показаны 4 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
{{metadesc| Получение CSRF-токена по сookie из браузера и дальнейший запуск одного или нескольких сценариев с этим токеном по ярлыку с рабочего стола }} | {{metadesc| Получение CSRF-токена по сookie из браузера и дальнейший запуск одного или нескольких сценариев с этим токеном по ярлыку с рабочего стола }} | ||
__NOEDITSECTION__ | |||
__TOC__ | |||
{{Unofficial}} | {{Unofficial}} | ||
== | |||
== Проблема == | |||
Иногда возникает необходимость запуска нескольких сценариев "по одной кнопке", чтобы не множить их сходные копии и не создавать сложные схемы их взаимодействия. | |||
С другой стороны, не хочется каждый раз кликать "Приложение Яндекс->Устройства->Сценарии->Запуск сценария 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 из браузера, срок действия которых неизвестен. | |||
По мере получения новой информации статья будет обновляться. | |||
== | == Получаем токен == | ||
На компьютере: | |||
* Открываем в браузере DevTools (CTRL+Shift+I) | * Открываем в браузере DevTools (CTRL+Shift+I или F12). | ||
* | * Переключаемся на вкладку "Network". | ||
* | * Открываем 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, или "Избранное" в Телеграм (в этом случае обязательно поставьте символы ``` до и после скопированного текста, чтобы он отправился без искажений). | ||
* | |||
* Открываем | На смартфоне: | ||
* Нажимаем 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)". | ||
{{#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" (треугольник справа от сценария). | ||
* Видим 2 запроса с названием "actions", кликаем на второй | * Видим 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]] }} | ||
* Скопированное содержимое передаем | * Скопированное содержимое снова передаем на смартфон. | ||
* Копируем | |||
* | На смартфоне: | ||
* Нажимаем + в правом нижнем углу, выбираем "Из команды 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". | ||
{{#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". | ||
* В открывшемся меню в поле "Название ярлыка" пишем удобное название. | |||
* В открывшемся меню в поле "Название ярлыка" пишем | * Далее открываем раздел "Trigger Shortcuts", и добавляем созданные ранее скрипты. | ||
* Далее открываем раздел "Trigger Shortcuts" и добавляем созданные ранее скрипты | * Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу. | ||
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу. | |||
* Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу | * Нажимаем и удерживаем созданный триггер, пока не всплывет меню, а затем выбираем "Разместить на главном экране". | ||
* Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу | |||
* Нажимаем и удерживаем | |||
* Запускаем ярлык с рабочего стола и наслаждаемся | * Запускаем ярлык с рабочего стола и наслаждаемся | ||
<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", и добавляем созданные ранее скрипты.
- Возвращаемся на предыдущий экран нажатием стрелочки в левом верхнем углу.
- Сохраняем запрос и возвращаемся на предыдущий экран нажатием галочки в правом верхнем углу.
- Нажимаем и удерживаем созданный триггер, пока не всплывет меню, а затем выбираем "Разместить на главном экране".
- Запускаем ярлык с рабочего стола и наслаждаемся
-
Выбираем "Multi-Shortcut"
-
Добавляем скрипты в разделе "Trigger Shortcuts"
-
Долгим тапом на созданном триггере вызываем меню и выбираем пункт "Разместить на главном экране".