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

Алиса управляет компьютером-3 (Python)

Материал из Wiki yaboard

Вступление

В данной статье попробуем создать виртуальный пульт, UI для управления действиями ПК. В данном примере рассмотрим такой функционал, как запуск приложений, открытие веб-страниц в браузере, выключение ПК и использование "горячих" клавиш. К слову - это не весь функционал, который можно применить, прочитав данную статью. Для тех, кто знаком с языком программирования Python не составит труда расширить предложенный скрипт по своему вкусу. Пользователям же с начальными знаниями будет несложно использовать перечисленные функции под свои нужды с минимальными трудозатратами.

От слова к делу или устанавливаем Python

Для начала нам потребуется скачать и установить среду разработки Python, т.к. это основной инструмент, который будет управлять компьютером.
Не так страшно иметь Python на своем компьютере. Страшно в 2020 его не иметь)

  1. Скачать установщик Python по ссылке
  2. Запустить установщик (предполагается установка Python в PATH, дабы не морочиться с запуском скрипта. Если все же вы решили отказаться от установки в PATH, то команда запуска скрипта будет такой: <Диск>:\<Путь_к_директории_Python>\python.exe <имя скрипта>.py).
  3. Устанавливаем галочку на "Add Python <версия> to PATH".
  4. Нажимаем "Install Python" и продолжаем установку соглашаясь со всем, что предложит нам установщик.
Устанавливаем Python в PATH

По окончании установки можем проверить работоспособность установив нужные нам в будущем библиотеки. Для этого:

  1. Открываем командную строку (Нажимаем Win+R, вводим cmd, нажимаем Enter)
  2. Водим поочередно следующие команды:

pip install blynklib - библиотека Blynk для Python
pip install pyautogui - библиотека для работы с горячими клавишами

Регистрируемся и собираем пульт в Blynk

Не буду заострять внимание на регистрации в Blynk, т.к. данный процесс уже описан в статье, конкретно здесь. Единственное, что стоит заметить, что в данном случае вовсе неважно, какое устройство вы выберете при создании проекта, тажке как и неважно какой это будет способ подключения. Нам важен только токен и возможность работы с проектом.
После регистрации добавим в наш проект нужное количество кнопок Button. Можно оформить и подписать их по вкусу.

Настраиваем скрипт Python под себя

Загружаем скрипт
Открываем его любым текстовым редактором (мне по вкусу Sublime Text, но вы можете использовать хоть блокнот)))) и видим следующее:

import blynklib #библиотека Blynk (перед этим в CMD сделать pip install blynklib)
import subprocess #библиотека для запуска параллельных процессов
import webbrowser #библиотека для работы с веб
import pyautogui #библиотека для эмуляции нажатий клавиш клавиатуры (перед этим в CMD сделать pip install pyautogui)


BLYNK_AUTH = 'ВАШ_ТОКЕН_Blynk' #вставить токен

blynk = blynklib.Blynk(BLYNK_AUTH)

#функция для запуска отдельным процессом приложений и команд
def startcmd(cmd):
    PIPE = subprocess.PIPE
    p = subprocess.Popen(cmd, shell = True)
    p.poll();

#---------------------Начало блока функций для виртуальных пинов blynk-----------------

#Пример открытия сайта в браузере
@blynk.handle_event('write V0')
def write_virtual_pin_handler(pin, value):
    if str(value) == "['1']":
        url = "https://dialogs.yandex.ru/store/" #ссылка на сайт
        webbrowser.open(url)
        print ('открываю сайт '+url)

#Пример запуска блокнота
@blynk.handle_event('write V1')
def write_virtual_pin_handler(pin, value):
    if str(value) == "['1']":
        app = "notepad.exe" #путь к приложению. Например "С:\Program Files\AIMP\AIMP.exe"
        startcmd(app)
        print ('открываю '+app)

#Пример виртуального нажатия горячих клавиш
@blynk.handle_event('write V2')
def write_virtual_pin_handler(pin, value):
    if str(value) == "['1']":
        pyautogui.hotkey('ctrl','v') #комбинация горячих клавиш
        print ('вставляю текст из буфера')

#Пример ввода команд (например выключение ПК)
@blynk.handle_event('write V3')
def write_virtual_pin_handler(pin, value):
    if str(value) == "['1']":
        comd = "shutdown –s -t 60" #команда для CMD (командная строка Windows)
        startcmd(comd)
        print ('Выключаю ПК')

#---------------------Конец блока функций для виртуальных пинов blynk-----------------

while True:
    blynk.run()

Несмотря на страшный вид, все просто:
Тут (вместо ВАШ_ТОКЕН_Blynk) вставляем свой токен, полученный в процессе создания проекта Blynk.

BLYNK_AUTH = 'ВАШ_ТОКЕН_Blynk' #вставить токен

Чуть ниже комментариями выделен блок, где находятся функции, соответствующие каждому виртуальному пину Blynk.

Например, чтобы добавить функцию открытия командной строки по нажатию на кнопку, привязанную к пину V4, нужно добавить блок функции

@blynk.handle_event('write V4')
def write_virtual_pin_handler(pin, value):
    if str(value) == "['1']":
        app = "cmd" #путь к приложению
        startcmd(app)
        print ('открываю '+app)

перед комментарием (или между уже имеющихся блоков функций)      

#---------------------Конец блока функций для виртуальных пинов blynk-----------------

Теперь подробно:
@blynk.handle_event('write V4') - тут объявляем что функция будет выполнена только после чтения виртуального пина V4 (т.е., чтобы использовать пин V5 - меняем write V4 на write V5).
app = "cmd" - тут вписываем путь к запускаемому файлу (например "С:\Program Files\AIMP\AIMP.exe") или команду для командной строки (например "cd C:\windows\")
Сохраняем получившийся скрипт.
Теперь можем запустить его и проверить работоспособность, нажимая созданные нами кнопки в мобильном приложении Blynk. Самый простой способ запуска (в дальнейшем можно оперировать файлом, поэтому так) с помощью bat-файла. Для этого:

  1. Открываем блокнот (Win+R, вводим notepad, нажимаем Enter)
  2. В блокноте вписываем следующее: python <путь к файлу скрипта>\blynk.py
  3. Сохраняем файл с расширением .bat (в окне сохранения файла, в выпадающем меню "тип" выбираем "все файлы". В поле ввода имени файла пишем <имя_файла_запуска>.bat)
  4. Запускаем <имя_файла_запуска>.bat двойным щелчком мыши и пробуем нажимать кнопки в приложении Blynk.
Вывод лога скрипта

И снова Алиса, и снова Кузя...

Теперь настроим управление нашими виртуальными пинами с помощью Алисы. Как это делается, я уже описывал здесь.

Для перфекционистов

Или для тех, кому мешает окно командной строки. Конечно для постоянного доступа к управлению стоит добавить наш файл запуска <имя_файла_запуска>.bat в автозагрузку windows. Есть несколько способов скрытия окна, но мне ближе вариант с использованием приложения NirCmd, тем более, что объем у нее неимоверно маленький, а функционал довольно большой.
Теперь подробнее. Для того, чтобы скрыть окно командной строки, требуется:

  1. Загрузить файл приложения на официальном сайте (внизу страницы).
  2. Файл nircmd.exe из архива распаковать в удобное для вас место.
  3. Исправить файл запуска <имя_файла_запуска>.bat заменив python <путь к файлу скрипта>\blynk.py на <Путь к файлу>\nircmd.exe exec hide python <путь к файлу скрипта>\blynk.py

Теперь окно работы скрипта нас не потревожит, а наблюдать и завершить его работу можно будет только из "Диспетчера задач" по имени Python.

Кроме того NirCmd можно использовать и для управления некоторыми функциями ПК прописывая команды в соответствующем блоке функций с командами. 

Подробнее о том, что умеет эта программулька в списке на официальном сайте.

Послесловие

На данном этапе стью можно было бы закончить, но хотелось бы заметить, что данный скрипт является простейшим примером для использования УДЯ в управлении вашим компьютером. На его основе можно экспериментировать далее. Я постарался учесть наиболее необходимые методы, как например использование горячих клавиш (которые можно использовать для AIMP или другого ПО), или NirCmd, которая может управлять звуком или, даже открывать cd-rom и напугать домашних, если таковой еще имеется=)
Удачи в экспериментах!