diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2021-12-07 12:57:29 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2021-12-07 12:57:29 +0300 |
commit | 3d80960f94dcaae92d1aa768d702f0df2d28bee9 (patch) | |
tree | 9a1d792110b73f0edf19ffbf46290ca462e3c2d0 | |
parent | b01c027998979c01cc19e4685d0c7fa5c0c619e6 (diff) |
Readme and examples
-rw-r--r-- | README.md | 7 | ||||
-rw-r--r-- | devices/pc.py | 4 |
2 files changed, 6 insertions, 5 deletions
@@ -60,7 +60,7 @@ } } ``` -* Создайте файл _имя-устройства_.py в директории __devices__ и напишите Python скрипт с двумя методами: *имя-устройства*_query(capability_type, instance) и *имя-устройства*_command(capability_type, instance, value, relative) +* Создайте файл _имя-устройства_.py в директории __devices__ и напишите Python скрипт с двумя методами: *query(capability_type, instance) и *command(capability_type, instance, value, relative) Пример скрипта для включения/выключения компьютера: ```python @@ -70,7 +70,8 @@ def pc_query(capability_type, instance): if capability_type == "devices.capabilities.on_off": p = subprocess.run(["ping", "-c", "1", "192.168.0.2"], stdout=subprocess.PIPE) state = p.returncode == 0 - return state + # Возвращаем состояние и опционально instance + return state, "on" def pc_action(capability_type, instance, value, relative): if capability_type == "devices.capabilities.on_off": @@ -80,7 +81,7 @@ def pc_action(capability_type, instance, value, relative): subprocess.run(["sh", "-c", "echo shutdown -h | ssh clust@192.168.0.2"]) return "DONE" ``` -Первая функция должна возвращать текущее состояние устройства, а вторая используется для управления им. В параметрах __capability_type__ и __instance__ передаётся, чем мы управляем, а в параметрах __value__ и __relative__ само значение. Подробности опять же смотрите в документации Яндекса. +Первая функция должна возвращать текущее состояние устройства и опционально __instance__ (если он не указан ни в запросе, ни в описании устройства), а вторая используется для управления им. В параметрах __capability_type__ и __instance__ передаётся, чем мы управляем, а в параметрах __value__ и __relative__ само значение. Подробности опять же смотрите в документации Яндекса. * Откройте вкладку "Тестирование" в панели управления Яндекс диалогами и попробуйте связать аккаунты, используя ваши имя пользователя и пароль * Проверяйте, должно работать как в панели для тестирования, так и на всех устройствах привязанных к вашему аккаунту diff --git a/devices/pc.py b/devices/pc.py index 05640b8..7d711a2 100644 --- a/devices/pc.py +++ b/devices/pc.py @@ -3,13 +3,13 @@ import subprocess logger = logging.getLogger() -def pc_query(capability_type, instance): +def query(capability_type, instance): if capability_type == "devices.capabilities.on_off": p = subprocess.run(["ping", "-c", "1", "192.168.0.2"], stdout=subprocess.PIPE) state = p.returncode == 0 return state, "on" # State and instance -def pc_action(capability_type, instance, value, relative): +def action(capability_type, instance, value, relative): if capability_type == "devices.capabilities.on_off": if value: logger.debug("sending WoL to PC") |