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.