License | MIT |
ReleasedLast Release | Aug 2016 |
Maintained by Cruise_Shen.
Depends on: | |
CocoaLumberjack | ~> 2.2.0 |
AFNetworking | ~> 3.0 |
SocketRocket | ~> 0.4.2 |
CocoaAsyncSocket | ~> 7.4.3 |
SmartKit是华三智慧家SDK,开发者可基于此SDK开发用于控制网关设备的APP。SmartKit依赖于其他第三方库和系统基础库。
SmartKit 现在只支持CocoaPods,将来我们会进一步支持其他集成方式。
想要使用CocoaPods在项目中集成,你要在Podfile
中这样声明:
platform :ios, '8.0'
target 'TargetName' do
pod 'SmartKit'
end
然后,运行下面的命令:
$ pod install
SmartKit 版本 | iOS最低支持版本 | watchOS最低支持版本 | tvOS最低支持版本 | Notes |
---|---|---|---|---|
0.0.x | iOS 8 | 将来支持 | 将来支持 | 需要Xcode 7以上版本. |
未来将支持Swift语言。
SKGatewayBrowser
网关浏览器用于搜索当前wifi网段内网关.
SKGatewayBrowser *gatewayBrowser = [[SKGatewayBrowser alloc] init];
[gatewayBrowser startBrowseGateway];
//从委托中获取搜索到的网关
-(void)browser:(SKGatewayBrowser *) browser didFoundGateway:(SKGateway *) gateway;
SKGatewayManager
网关管理器,用于增加或删除设备到网关,用于在网关上部署触发器,用于更新网关上设备和场景信息
SKGatewayManager *gatewayManager = [SKGatewayManager managerForGateway:gateway];
[gatewayManager updateDevices];
//获取到网关下的设备
NSArray *deviceArr = gatewayManager.gateway.devices;
SKUserManager
用户管理器,单例类,用于用户登录,注册,重置密码等。也用于管理用户和网关的绑定关系和打开某些服务
SKUserManager *userManager = [SKUserManager userManager];
//绑定网关
[userManager startBindingGateway:gateway];
//从委托中获取绑定网关的结果
-(void)manager:(SKUserManager * __nonnull) manager didBindingGateway:(SKGateway * __nonnull) gateway;
-(void)manager:(SKUserManager * __nonnull) manager bindingGateway:(SKGateway * __nonnull) gateway failed:(NSError * __nullable) error;
SKUserManager *userManager = [SKUserManager userManager];
[userManager loginWith:@"username" passwd:@"passwd"];
//刷新网关信息
[userManager updateGateways];
//获取到用户绑定的网关
NSArray *gatewayArr = userManager.user.gateways;
SKProperty
属性类,用于描述产品属性,通过本类可以读取或修改属性的具体值
SKGateway *gateway = ...获取网关对象;
SKDevice *device = [gateway deviceForPortNum:portNum];
//获取设备名称
[device.name updateValue:nil completionHandler:^(NSError *error){
if (!error) {
//修改名称成功
}else{
//修改名称失败
}
}];
SKGateway *gateway = ...获取网关对象;
SKDevice *device = [gateway deviceForPortNum:portNum];
//修改设备名称
[device.name updateValue:@"空调_4" completionHandler:^(NSError *error){
if (!error) {
//修改名称成功
}else{
//修改名称失败
}
}];
SKTriggerManager
触发器管理器,用于下发动作集,更新动作集等操作
SKGateway *gateway = ...获取网关对象;
SKTrigger *trigger = [gateway triggerForTriggerId:triggerId];
SKTriggerManager *triggerManager = [SKTriggerManager managerForTrigger:trigger];
//获取动作集
[triggerManager updateActionSet:nil];
//从委托中获取请求的结果
-(void)manager:(SKTriggerManager * __nonnull) manager didUpdateActionSet:(NSSet<SKAction *> * __nonnull) actionSet;
-(void)manager:(SKTriggerManager * __nonnull) manager updateActionSet:(NSSet<SKAction *> * __nonnull) actionSet failed:(NSError * __nullable) error;
SKGateway *gateway = ...获取网关对象;
SKTrigger *trigger = [gateway triggerForTriggerId:triggerId];
SKTriggerManager *triggerManager = [SKTriggerManager managerForTrigger:trigger];
SKAirConditioner *airConditioner = [gateway deviceForPortNum:airConditionerPortNum];
//设置空调温度动作
SKPropertyModifyAction *setTempModifyAction = [[SKPropertyModifyAction alloc] init];
setTempModifyAction.property = airConditioner.setTemp;
setTempModifyAction.targetValue = @(30);
//下发动作集
[triggerManager updateActionSet:[NSSet setWithObjects:setTempModifyAction,nil]];
//从委托中获取请求的结果
-(void)manager:(SKTriggerManager * __nonnull) manager didUpdateActionSet:(NSSet<SKAction *> * __nonnull) actionSet;
-(void)manager:(SKTriggerManager * __nonnull) manager updateActionSet:(NSSet<SKAction *> * __nonnull) actionSet failed:(NSError * __nullable) error;
SKGateway *gateway = ...获取网关对象;
SKTrigger *trigger = [gateway triggerForTriggerId:triggerId];
SKTriggerManager *triggerManager = [SKTriggerManager managerForTrigger:trigger];
//删除动作集
[triggerManager updateActionSet:[NSSet set]];
//从委托中获取请求的结果
-(void)manager:(SKTriggerManager * __nonnull) manager didUpdateActionSet:(NSSet<SKAction *> * __nonnull) actionSet;
-(void)manager:(SKTriggerManager * __nonnull) manager updateActionSet:(NSSet<SKAction *> * __nonnull) actionSet failed:(NSError * __nullable) error;
SmartKit is available under the MIT license. See the LICENSE file for more info.