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.