1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/yeelight-miot-api

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 5.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 21:53 a8f009a

Маленький API для управления IoT-устройствами Xiaomi и спецификация маленького IoT-оборудования

Установка

composer require yeelight/miot-api

Использование

$appId = 'Ваш App-Id';
// токен доступа, полученный через OAuth
$accessToken = 'пользовательский токен доступа';
$api = new Api($appId, $accessToken);

// По умолчанию используется хост для материкового Китая. Если необходимо получить устройства из других регионов, можно установить host с помощью setHost()
$api->setHost('api.home.mi.com');

// Однократно получаем список устройств, содержащий serialNumber (оригинальный did)
$devices = $api->devicesList();

// Получаем значение атрибута по piid
$properties = $api->properties([
    'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA55ZWVsaW5rLWNvbG9AyMRUUGAg0NTk4OTg3NRVoAA.2.1',
    'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA55ZWVsaW5rLWNvbG9AyMRUUGAg0NTk4OTg3NRVoAA.2.2',
]);
        
$properties = [
    'properties' => [
        [
            "pid" => "M1GAxtaW9A0LXNwZWMtdjIVgoAFGA15ZWVsaW5rLW1vbm8xFRQYCDEzMTgwNzc2FWYA.2.2",
            "value" => 75
        ]
    ]
];

// Устанавливаем атрибут
$api->setProperties($properties);


// Читаем список сцен, настроенных пользователем в приложении «Умный дом» от Xiaomi
$secenes = $api->scenes();

// Активно запускаем сцену
$scene_id = '1031976223';

$api->triggerScene($scene_id);

// Читаем список домов
$homes = $api->homes();

// Подписываемся на изменения атрибутов
$properties = [
    'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA15ZWVsaW5rLW1vbm8xFRQYCDEzMTgwNzc2FWYA.2.2',
    'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA55ZWVsaW5rLWNvbG9AyMRUUGAg0NTk4OTg3NRVoAA.2.1',
];
$customData = [
    'test' => 'test'
];
$receiverUrl = 'https://www.xxx.com/receiver';
$api->subscript($properties, $customData, $receiverUrl);

// Отказываемся от подписки на изменения атрибутов
$api->unSubscript($properties);

// Изящно устанавливаем атрибут для отдельного устройства
$did = 'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA55ZWVsaW5rLWNvbG9AyMRUUGAg0NTk2NTYwNRVoAA';
$type = "urn:miot-spec-v2:device:light:0000A001:yeelink-color1:1";
$data = [
    'on' => true,
    'brightness' => 99,
    'color-temperature' => 2100,
    'color' => 5777215
];
$requestInfo = $api->setPropertyGraceful($did, $type, $data);

// Изящно устанавливаем атрибуты для нескольких устройств
$data = [
    'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA55ZWVsaW5rLWNvbG9AyMRUUGAg0NTk2NTYwNRVoAA' => [
        'type' => 'urn:miot-spec-v2:device:light:0000A001:yeelink-color1:1',
        'data' => [
            'on' => true,
            'brightness' => 99,
            'color-temperature' => 2100,
            'color' => 2777215
        ]
    ],
    'M1GAxtaW9A0LXNwZWMtdjIVgoAFGAt5ZWVsaW5rLWN0MhUUGAg4NzEzMDQyMhWcCAA' => [
        'type' => 'urn:miot-spec-v2:device:light:0000A001:yeelink-ct2:1',
        'data' => [
            'on' => true,
            'brightness' => 50,
            'color-temperature' => 3500
        ]
    ]
];
$requestInfo = $api->setPropertiesGraceful($data);

// Изящно получаем атрибут для отдельного устройства
$did = 'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA55ZWVsaW5rLWNvbG9AyMRUUGAg0NTk2NTYwNRVoAA';
$type = "urn:miot-spec-v2:device:light:0000A001:yeelink-color1:1";
// data — пустой массив, получаем все доступные для чтения атрибуты
$data = [
    'on',
    'brightness',
    'color-temperature',
    'color'
];
$attibutes = $api->getPropertyGraceful($did, $type, $data); ```
'M1GAxtaW9A0LXNwZWMtdjIVgoAFGA55ZWVsaW5rLWNvbG9AyMRUUGAg0NTk2NTYwNRVoAA' => [
    'type' => 'urn:miot-spec-v2:device:light:0000A001:yeelink-color1:1',
    'data' => ['on', 'brightness', 'color-temperature', 'color']
],
'M1GAxtaW9A0LXNwZWMtdjIVgoAFGAt5ZWVsaW5rLWN0MhUUGAg4NzEzMDQyMhWcCAA' => [
    'type' => 'urn:miot-spec-v2:device:light:0000A001:yeelink-ct2:1',
    'data' => [] // 为空时,获取所有可读属性
];
$attributes = $api->getPropertiesGraceful($data);

// 订阅设备的所有可订阅属性
$devices = $api->devicesList();
$customData = ['test' => 'test'];
$receiverUrl = 'https://www.xxx.com/receiver';
$requestInfo = $api->subscriptByDevices($devices, $customData, $receiverUrl);

// 退订设备的所有订阅属性
$devices = $this->api->devicesList();
$requestInfo = $this->api->unSubscriptByDevices($devices);

Справочные ресурсы

Уязвимости безопасности

Если вы обнаружите уязвимость в этой библиотеке, пожалуйста, отправьте электронное письмо Шелдону Ли через lixiaodong@yeelight.com. Все уязвимости будут оперативно устранены.

Лицензия

Эта библиотека является программным обеспечением с открытым исходным кодом, лицензированным по лицензии MIT (https://opensource.org/licenses/MIT).

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/yeelight-miot-api.git
git@api.gitlife.ru:oschina-mirror/yeelight-miot-api.git
oschina-mirror
yeelight-miot-api
yeelight-miot-api
master