omlet / smartcoop-sdk
与SmartCoop API交互的SDK
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- phpunit/phpunit: ^10.0
Requires (Dev)
- vlucas/phpdotenv: ^5.6
README
此SDK旨在简化与Omlet的无缝认证并提供设备交互。使用我们的SDK,开发者可以轻松检索设备信息,并执行针对其设备和组定制的操作。
简介
入门
概述
要使用此SDK,用户需要在omlet上注册,您将使用相同的电子邮件和密码凭据进行认证。我们将介绍如何将此SDK包含到您的应用程序中以及如何与您的设备交互。
安装
要安装SmartCoop SDK,请确保您系统上已安装Composer。然后,创建或导航到您的项目目录,并执行以下命令
composer require omlet/smartcoop-sdk
在您的项目根目录下,现在运行
composer install
安装完成后,您将使用电子邮件和密码生成一个API密钥,该密钥将用于随后的所有交互。
认证
创建API密钥
要生成API密钥,您需要使用为App使用的电子邮件和密码登录开发控制台。登录后,导航到“API密钥”并点击“生成密钥”。请注意此密钥。
在您的项目根目录中创建一个.env文件,然后将env.example的内容复制到其中。使用上面生成的token替换API_KEY
Omlet
概述
Omlet对象提供了检索所有设备、获取单个设备、创建组处理器和创建用户处理器的能力。
创建实例
require_once 'vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); $token = $_ENV['API_TOKEN']; if (!$token) { throw new Exception('token environment variable is not set.'); } $omlet = \Omlet\SmartCoop\Omlet::create($token);
检索设备
$devices = $omlet->getDevices(); foreach ($devices as $device) { // a list of your devices } // a single device $device = $omlet->getDeviceById('123456');
这些函数将返回一个设备处理器,允许您与单个设备交互。
创建组
$group = $omlet->createGroup("New Group name");
检索组
$groups = $omlet->getGroups(); foreach ($groups as $$group) { // a list of your groups } // a single group $group = $omlet->getGroupById('groupID')
检索用户
$user = $omlet->getUser();
设备处理器
设备处理器提供了一种与特定设备交互的方式,并可以看到设备数据。
设备数据
设备处理器将包含一个数据对象,其中包含设备的最新状态和配置。您可以通过getter方法访问每个属性。
设备操作
设备操作用于与设备交互。设备数据中有一个可用的操作列表。我们可以通过从列表中检索一个来对设备执行操作
$deviceHandler = $omlet->getDeviceById('123456'); $deviceHandler->getActions();
操作对象包含操作描述。要执行操作,筛选出您要执行的操作,例如打开门,并将其传递给action
函数
$deviceHandler->action($action)
更新设备配置
要更新设备的配置,我们需要与配置对象交互。
$configuration = $deviceHandler->getData()->getConfiguration()->copy();
此对象将为您提供设备的当前配置信息。然后您可以使用设置方法来更改值。
例如,如果我们想更改设备门的开启时间
$configuration = $deviceHandler->getData()->getConfiguration()->copy(); $doorConfiguration = $configuration->getDoor(); $doorConfiguration->setOpenTime("07:30"); $configuration->setDoor($doorConfiguration); $device->updateConfiguration($configuration);
组处理器
组处理器提供了一种与特定组交互并查看组数据的方法。
组数据
组处理器将保存包含组信息、用户、管理员和属于该组的设备的数据对象。
更新组名
我们可以更新单个组的名称。
$groupHandler->updateGroupName("New Name");
删除组
我们可以删除与处理器关联的组。
$groupHandler->deleteGroup();
邀请用户
我们可以通过电子邮件邀请用户加入当前组,并指定他们的访问权限。
// invite a user with User access $groupHandler->inviteUser("user@example.com", Acccess::USER); // invite a user with Admin access $groupHandler->inviteUser("user@example.com", Acccess::ADMIN);
移除用户
我们可以通过他们的电子邮件地址从组中移除用户。
$groupHandler->removeUser("user@example.com");
更新用户访问权限
我们可以通过他们的电子邮件地址更新用户的访问级别。
$groupHandler->updateUserAccess("user@example.com", Acccess::ADMIN);
用户处理器
用户处理器提供了一种与认证用户的功能交互的方法。
用户数据
用户处理器将保存包含用户信息和邀请的数据对象。
接受邀请
我们可以通过检索数据对象的邀请数组来接受邀请。
$invites = $userHandler->getData()->getInvites(); // invites is an array containing GroupSubset objects. Pass one of these // to acceptInvite $userHandler->acceptInvite($groupSubset);
拒绝邀请
我们可以通过检索数据对象的邀请数组来拒绝邀请。
$invites = $userHandler->getData()->getInvites(); // invites is an array containing GroupSubset objects. Pass one of these // to rejectInvite $userHandler->rejectInvite($groupSubset);
类型
我们使用以下数据类型从Omlet API响应和请求
操作
操作
对象提供以下详细信息
方法
getName()
:返回操作的名称。getDescription()
:返回操作的描述。getValue()
:返回与操作关联的值。getPending()
:返回操作的挂起状态。如果不适用,则可能返回null。getUrl()
:返回可以对API执行操作的URL。
配置
在检索后,配置
对象将为您提供设备当前配置的概述。
方法
getGeneral()
:返回通用设置。getConnectivity()
:返回连接设置。getDoor()
:返回门设置。getLight()
:返回灯光设置。copy()
:返回具有相同详细信息的NEW 配置类型。在更新配置时非常重要。
配置连接
配置连接
对象提供以下详细信息
方法
getBluetoothState()
:返回蓝牙连接状态。getWifiState()
:返回Wi-Fi连接状态。
配置门
配置门
对象提供以下详细信息
方法
getDoorType()
:返回门类型。getOpenMode()
:返回门开启模式。getOpenDelay()
:返回门开启前的延迟时间。getOpenLightLevel()
:返回门开启时的光照级别。getOpenTime()
:返回门开启的时间。getCloseMode()
:返回门关闭模式。getCloseDelay()
:返回门关闭前的延迟时间。getCloseLightLevel()
:返回门关闭时的光照级别。getCloseTime()
:返回门关闭的时间。getColour()
:返回门的颜色。
配置概况
《配置概况》对象提供以下详细信息
方法
getDatetime()
:返回当前日期和时间。getTimezone()
:返回时区。getUseDst()
:返回是否使用夏令时。getUpdateFrequency()
:返回更新频率。getLanguage()
:返回语言设置。getOvernightSleepEnable()
:返回是否启用夜间睡眠模式。getOvernightSleepStart()
:返回夜间睡眠模式的开始时间。getOvernightSleepEnd()
:返回夜间睡眠模式的结束时间。getPollFreq()
:返回轮询频率。getStayAliveTime()
:返回存活时间。getStatusUpdatePeriod()
:返回状态更新周期。
配置灯光
《配置灯光》对象提供以下详细信息
方法
getMode()
:返回灯光的模式。getMinutesBeforeClose()
:返回灯光自动关闭前的时间(分钟数)。getMaxOnTime()
:返回灯光可以保持开启的最大时间。getEquipped()
:返回灯光是否已配备。
设备
《设备》对象代表一个SmartCoop智能设备。
方法
getDeviceId()
:返回设备的唯一标识符。getName()
:返回设备的名称。getDeviceType()
:返回设备的类型。getState()
:返回设备的当前状态。getConfiguration()
:返回设备的配置设置。getActions()
:返回可以在设备上执行的操作数组。
分组
《分组》对象代表用户所属的分组。
方法
getGroupId()
:返回分组的唯一标识符。getGroupName()
:返回分配给分组的友好名称。setGroupName(string $groupName)
:void:设置分组的友好名称。getAccess()
:返回用户对分组的访问级别。可以是管理员或用户。getDevices()
:返回与该分组关联的设备数组。getAdmins()
:返回该分组的管理员用户数组。getUsers()
:返回该分组的成员用户数组。
分组子集
方法
getGroupId()
:返回分组子集的唯一标识符。getGroupName()
:返回分配给分组子集的友好名称。getAccess()
:返回用户对分组子集的访问级别。
分组用户
方法
getEmailAddress()
:返回用户的电子邮件地址。getFirstName()
:返回用户的首名。getLastName()
:返回用户的姓氏。getAccess()
:返回用户对分组的访问级别。
状态
《状态》对象在检索后将提供设备当前状态的总览
方法
getGeneral()
:返回表示一般状态信息的状态概况对象。getConnectivity()
:返回表示连接状态信息的状态连接对象。getDoor()
:返回表示门状态信息的状态门对象。getLight()
:返回表示灯光状态信息的状态灯光对象。
状态连接
《状态连接》对象提供以下详细信息
方法
getSsid()
:返回设备Wi-Fi网络的SSID(服务集标识符)。getWifiStrength()
:返回设备Wi-Fi信号强度。getWifiPowerLevel()
:返回设备Wi-Fi的功率级别。getBluetoothStrength()
:返回设备蓝牙信号强度。
门状态
门状态
对象提供以下详细信息
方法
getState()
:返回门的当前状态:“打开”或“关闭”。getLastOpenTime()
:返回门上次打开的时间戳。getLastCloseTime()
:返回门上次关闭的时间戳。getFault()
:返回与门相关的任何故障信息。getLightLevel()
:返回门的光照水平。
通用状态
通用状态
对象提供以下详细信息
方法
getFirmwareVersionCurrent()
:返回设备的当前固件版本。getFirmwareVersionPrevious()
:返回设备的上一个固件版本。getFirmwareLastCheck()
:返回上次检查固件的日期和时间。getBatteryLevel()
:返回设备的电池电量。getPowerSource()
:返回设备的电源。getUptime()
:返回设备的运行时间。getDisplayLine1()
:返回第一行显示内容。getDisplayLine2()
:返回第二行显示内容。
灯光状态
灯光状态
对象提供以下详细信息
方法
getState()
:返回当前灯光状态:“开启”或“关闭”。
用户
用户
对象代表已认证的用户。
方法
getUserId()
:返回用户的唯一标识符。getFirstName()
:返回用户的首名。getLastName()
:返回用户的姓氏。getEmailAddress()
:返回用户的电子邮件地址。getSiteLink()
:返回与用户关联的网站链接。getInvites()
:返回一组用户子站邀请。