dev_list

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

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

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

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

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

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