clay/clp-php-sdk

PHP SDK 用于消费 Clay CLP API v1.2

此软件包的规范存储库似乎已丢失,因此软件包已被冻结。

1.0.17 2020-05-02 14:17 UTC

README

要求

  • PHP 7.2 或更高版本
  • JSON
  • CURL
  • OpenSSL

安装

  • 使用 composer require clay/clp-php-sdk:1.0.1 需要库。

Laravel 服务提供者

  • 如果您使用 Laravel 5.5 或更高版本,服务将自动为您注册。
  • 如果不这样做,请将 Clay\CLP\Providers\CLPServiceProfider::class 添加到您的 app.php 中的提供者列表。

基本用法

  • 此软件包将为您提供三个客户端
    • CLPClient:这是您可以使用来与 硬件 API 交互的客户端。
    • IdentityServerClient:这是您可以使用来 生成访问令牌 的客户端。
    • VaultClient:这是您可以使用来为 移动密钥 生成签署证书的客户端。
  • 客户端需要您注入一个 配置存储库 依赖项。
    • 如果您使用 Laravel,这将在服务提供者上自动完成,因此您只需请求这些客户端中的任何一个实例即可,它们将已经为您配置好了。
    • 如果您不使用 Laravel,您必须提供一个实现了 Illuminate\Contracts\Config\Repository 接口的实例。如果您使用环境变量或 DotEnv 文件,提供了一个实现此接口的 DotEnvConfigLoader 类,因此您可以直接从您的 .env 或环境变量中加载变量。
      • 您可以在 tests/ 文件夹中找到一个示例 .env 文件。文件必须具有相同的变量,并且名称相同,才能正确加载。

示例

使用提供的客户端和 .env

<?php
require("vendor/autoload.php");

// Create the Config repository via .env file.
$config = new DotEnvConfigLoader(Dotenv::create(__DIR__));

// Creates the identity server client.
$identityServer = new IdentityServerClient($config);

// Creates the CLP client.
$client = new CLPClient($config);

// Configures the CLP client to use the Identity Server as auth provider.
$client->setAuthorizationHeaderProvider(function () use ($identityServer) {
    return $identityServer->provideAccessToken()->generateAuthorizationHeader();
});

// Example: gets a list of accessors from the API.
// This will return a Collection object with the list of Accessor structs.
$accessors = $client->accessors()->getAccessors()->items();

// Example: create a new accessor.
// This will return an Accessor object upon succesfully registering the new accessor.
$newAccessor = new NewAccessor();
$accessor = $client->accessors()->createAccessor($newAccessor);

提供的 API

  • AccessGroupAPI:允许您管理访问组;实现了 /access_group 命名空间内的端点。
  • AccessorAPI:允许您管理访问者(最终用户),以及他们的设备和密钥;实现了 /accessor 命名空间内的端点。
  • CollectionAPI:允许您管理硬件集合;实现了 /collections 命名空间内的端点。
  • IQAPI:允许您管理 IQ;实现了 /iqs 命名空间内的端点。
  • LockAPI:允许您管理锁;实现了 /lock 命名空间内的端点。
  • TagAPI:允许您管理标签;实现了 /tag 端点内的端点。
  • EntriesAPI:允许您获取日志条目(门开/关、锁等);实现了 /entries 端点内的端点。
  • IncidentsAPI:允许您获取锁中的事件(门未关、iq 断开连接等);实现了 /incidents 端点内的端点。

尚未实现的命名空间

  • AccessorSettings (/collections/{collection_id}/accessor_settings)
  • CollectionSettings (/accessors/{accessor_id}/collection_settings)
  • Updates (/updates)

使用说明(待办事项)

术语表

  • IQ: 控制锁的访问的互联网连接设备。
  • 锁: 任何由Clay供电的电子锁。它们连接到单个IQ。
  • 中继器: 重复IQ信号的设备。锁可以连接到中继器而不是IQ。
  • 访问者: 可以访问零个或多个锁的最终用户。访问者将拥有钥匙,这些钥匙可能是标签(常规标签)或设备(移动密钥)。
  • 访问者组: 一组访问者,用于确定锁中的访问规则。
  • 集合: 硬件设备组(IQ、锁和中继器)。
  • 钥匙: 访问者的识别方法。钥匙可以是标签或设备(移动密钥)。
  • 标签: 使访问者能够访问锁的物理标签。它们可以是未注册的,或者注册到单个访问者。
  • 时间表: 一个允许在哪些星期几和什么时间访问的日程表。
  • IQ硬件: 连接到IQ的所有硬件。
  • IQ硬件树: 连接到IQ的硬件设备树。它看起来像一棵树,因为锁可以连接到IQ或中继器,而中继器可以连接到IQ。
  • 访问者设备: 注册到访问者以用作移动密钥的移动设备。
  • IQ注册: 通过其激活码将全新的IQ注册到API的过程。在此过程之后,IQ将获得一个ID,并且可以将其硬件连接到它。
  • 标签注册模式: 锁具有的一种模式,用于将全新的标签分配到系统中。当标签未预先注册时,它们不会被API识别,也不能分配给访问者。将锁设置为标签注册模式,您可以触摸锁上的新标签,这些标签将注册到系统中。
  • 离线模式/离线访问: 当锁与其IQ/中继器之间存在通信问题(断电、射频干扰等)时,锁进入离线模式。在离线模式下,它们将求助于允许访问的预设标签/移动密钥的内部列表。在离线模式下,只有注册了特定锁的离线访问的钥匙(标签和移动密钥)可以访问它。离线模式不支持时间表,并且不能直接分配给访问者,只能分配给钥匙(标签和移动密钥)。
  • 条目: 与锁中的访问控制相关的事件,例如访问批准、访问拒绝等。
  • 事件: 与意外问题相关的事件,例如IQ连接/断开连接、门未关闭等。