dev_list

Скрипт для получения списка устройств Яндекс Умного дома.

Выводит список устройств с их ID, типом и моделью. Сохраняет полный ответ API в файл devices_list.json.

 1"""
 2Скрипт для получения списка устройств Яндекс Умного дома.
 3
 4Выводит список устройств с их ID, типом и моделью.
 5Сохраняет полный ответ API в файл devices_list.json.
 6"""
 7
 8import requests
 9import json
10import sys
11import os
12
13sys.path.append(os.path.dirname(os.path.abspath(__file__)))
14
15YANDEX_TOKEN = os.getenv("YANDEX_TOKEN", "your_yandex_token_here")
16
17
18def get_yandex_devices():
19    """Получает и выводит список всех устройств Яндекс Умного дома.
20
21    Отправляет GET-запрос к Yandex IoT API /user/info.
22    Выводит название, ID, тип и модель каждого устройства.
23    Сохраняет полный ответ в devices_list.json.
24
25    Требует переменную окружения YANDEX_TOKEN.
26    """
27
28    if YANDEX_TOKEN == "your_yandex_token_here":
29        print("Настройте YANDEX_TOKEN в переменных окружения перед запуском скрипта.")
30        return
31
32    url = "https://api.iot.yandex.net/v1.0/user/info"
33
34    headers = {"Authorization": f"Bearer {YANDEX_TOKEN}", "Content-Type": "application/json"}
35
36    try:
37        response = requests.get(url, headers=headers, timeout=10)
38        response.raise_for_status()
39
40        data = response.json()
41
42        print("=" * 50)
43        print("СПИСОК УСТРОЙСТВ ЯНДЕКС УМНОГО ДОМА")
44        print("=" * 50)
45
46        for device in data.get("devices", []):
47            print(f"Название: {device.get('name', 'Неизвестно')}")
48            print(f"ID: {device.get('id', 'Нет ID')}")
49            print(f"Тип: {device.get('type', 'Неизвестно')}")
50            print(f"Модель: {device.get('model', 'Неизвестно')}")
51
52            # Проверяем возможности устройства
53            capabilities = device.get("capabilities", [])
54            for cap in capabilities:
55                if cap.get("type") == "devices.capabilities.on_off":
56                    print("✓ Поддерживает включение/выключение")
57
58            print("-" * 30)
59
60        # Сохраняем в файл для удобства
61        with open("devices_list.json", "w", encoding="utf-8") as f:
62            json.dump(data, f, ensure_ascii=False, indent=2)
63        print("\nПолный список устройств сохранен в devices_list.json")
64
65    except requests.exceptions.RequestException as e:
66        print(f"Ошибка при запросе: {e}")
67        if hasattr(e, "response") and e.response is not None:
68            print(f"Статус: {e.response.status_code}")
69            print(f"Ответ: {e.response.text}")
70
71
72if __name__ == "__main__":
73    get_yandex_devices()
YANDEX_TOKEN = 'your_yandex_token_here'
def get_yandex_devices():
19def get_yandex_devices():
20    """Получает и выводит список всех устройств Яндекс Умного дома.
21
22    Отправляет GET-запрос к Yandex IoT API /user/info.
23    Выводит название, ID, тип и модель каждого устройства.
24    Сохраняет полный ответ в devices_list.json.
25
26    Требует переменную окружения YANDEX_TOKEN.
27    """
28
29    if YANDEX_TOKEN == "your_yandex_token_here":
30        print("Настройте YANDEX_TOKEN в переменных окружения перед запуском скрипта.")
31        return
32
33    url = "https://api.iot.yandex.net/v1.0/user/info"
34
35    headers = {"Authorization": f"Bearer {YANDEX_TOKEN}", "Content-Type": "application/json"}
36
37    try:
38        response = requests.get(url, headers=headers, timeout=10)
39        response.raise_for_status()
40
41        data = response.json()
42
43        print("=" * 50)
44        print("СПИСОК УСТРОЙСТВ ЯНДЕКС УМНОГО ДОМА")
45        print("=" * 50)
46
47        for device in data.get("devices", []):
48            print(f"Название: {device.get('name', 'Неизвестно')}")
49            print(f"ID: {device.get('id', 'Нет ID')}")
50            print(f"Тип: {device.get('type', 'Неизвестно')}")
51            print(f"Модель: {device.get('model', 'Неизвестно')}")
52
53            # Проверяем возможности устройства
54            capabilities = device.get("capabilities", [])
55            for cap in capabilities:
56                if cap.get("type") == "devices.capabilities.on_off":
57                    print("✓ Поддерживает включение/выключение")
58
59            print("-" * 30)
60
61        # Сохраняем в файл для удобства
62        with open("devices_list.json", "w", encoding="utf-8") as f:
63            json.dump(data, f, ensure_ascii=False, indent=2)
64        print("\nПолный список устройств сохранен в devices_list.json")
65
66    except requests.exceptions.RequestException as e:
67        print(f"Ошибка при запросе: {e}")
68        if hasattr(e, "response") and e.response is not None:
69            print(f"Статус: {e.response.status_code}")
70            print(f"Ответ: {e.response.text}")

Получает и выводит список всех устройств Яндекс Умного дома.

Отправляет GET-запрос к Yandex IoT API /user/info. Выводит название, ID, тип и модель каждого устройства. Сохраняет полный ответ в devices_list.json.

Требует переменную окружения YANDEX_TOKEN.