这个例子是为了演示HDL的iOS SDK,可以实现搜索设备、控制设备、获取设备状态、接收设备状态改变推送等。目前支持继电器、调光灯、窗帘模块、开合帘、卷帘、空调面板、场景类型。
1:将设备当前状态放在搜索信息中,可从中提取。具体可查看Demo,ApplianceVC、CtrlVC使用。
1:此版本为初步测试后的Beta版本,后续将发布稳定版1.0.0版本。方法名、参数等不会有大改动,可根据Demo对接相关接口。
1.目前仅支持Demo上的下载SDK,依赖到项目中使用。后续增加更多依赖方式。
2.SDK为Swift语言编写,相关公开接口方法已开放OC调用。
1:HDLManager.shareInstance.initSDK()
2: SDK初始化的端口为6000,若有其他程序占用6000端口,则SDK无法初始化。将导致程序一直无法正常工作。请务必保证只运行一个6000端口的程序
3.1 HDL SDK提供搜索设备的api,稍等数秒返回设备信息。
3.2 调用HDLCommand.shareInstance.devicesSearch(delegate: self)
获取HDL设备数据。必须实现接口DevicesInfoDelegate
,接收方法为:getDevicesData(searchDevicesBackInfo: SearchDevicesBackInfo)
3.3 调用HDLCommand.shareInstance.scenesSearch(delegate: self)
获取HDL场景数据。必须实现接口ScenesInfoDelegate
,接收方法为:etScenesData(searchDevicesBackInfo: SearchDevicesBackInfo)
在搜索中获取到信息为设备信息,在demo中的ApplianceVC显示设备信息。设备信息列表显示的是此设备所有回路设备。 如果需要确定哪个设备哪个回路,则可通过子网id和设备id,大类,小类,回路号。具体可查看CtrlVC。
4.1:必须先注册委托:HDLCommand.shareInstance.registerDelegate(delegate: self,type: HDLApConfig.TYPE_LIGHT)
根据设备类型不同注册不同委托,设备状态改变时会接收到相关推送。详情请查看Demo。
4.2:通过info!.deviceType!
可获取设备类型参数。info为固定值,具体查看Demo CtrlVC获取。设备类型列表以及具体数值:
// 101:调光回路(灯) 102:开关回路(继电器)(灯) 103:混合调光类 (灯) 104:混合开关类(继电器)(灯)
// 201:开合帘电机(窗帘)202:卷帘电机(窗帘) 203:窗帘模块 (窗帘)
// 301:HVAC 模块(空调) 302:通用空调面板(空调)
// 401:背景音乐模块(音乐) 402:第三方背景音乐模块(音乐)
// 501:逻辑模块(场景) 502:全局逻辑模块(场景)
//101,102,103,104 为灯 TYPE_LIGHT_DIMMER、TYPE_LIGHT_RELAY、TYPE_LIGHT_MIX_DIMMER、TYPE_LIGHT_MIX_RELAY
//201,202,203 为窗帘 TYPE_CURTAIN_GLYSTRO、TYPE_CURTAIN_ROLLER、TYPE_CURTAIN_MODULE
//301,302,303 为空调 TYPE_AC_HVAC、TYPE_AC_PANEL
//401,402 为音乐 TYPE_MUSIC_MODULE、TYPE_MUSIC_THIRD_PARTY_MODULE
//501,502 为场景 TYPE_LOGIC_MODULE、TYPE_GLOBAL_LOGIC_MODULE
5.1:获取设备状态方法:HDLCommand.shareInstance.getDeviceState(delegate: self, appliancesInfo: self.info!)
第一个参数为委托参数,第二个参数为固定参数。
5.2:必须实现的委托:DeviceStateDelegate
分别为灯光、窗帘、空调、获取设备状态、场景,委托。
5.3:返回的方法为:getDevicesState(devicesStateBackInfo: DevicesStateBackInfo)
具体使用请查看Demo。
所有SDK目前支持的控制设备类型,都具有超时操作反馈,若在5秒内设备无返回控制成功消息,则SDK会返回控制超时的信息。
6.1.1 灯光控制调用HDLCommand.shareInstance.lightCtrl(delegate: self, appliancesInfo: self.info!, state: lightState)
第三个参数为灯光亮度。继电器类型0代表关,100代表开。调光类型:范围在0-100.超过100不做处理。
6.1.2:必须实现的协议:LightCtrlDelegate
。
6.1.3:灯光控制返回方法:getLightCtrlInfo(lightCtrlBackInfo: LightCtrlBackInfo)
。具体接收使用请查看Demo
窗帘种类有:窗帘模块,卷帘电机,开合帘电机。
6.2.1:窗帘控制调用HDLCommand.shareInstance.curtainCtrl(delegate: self, appliancesInfo: self.info!, state: CurtainCtrlParser.shareInstance.curtainPause)
为控制窗帘暂停。第二个参数为窗帘状态参数分别有:CurtainCtrlParser.shareInstance.curtainClose,CurtainCtrlParser.shareInstance.curtainOpen,CurtainCtrlParser.shareInstance.curtainPause
,均可以使用这3个参数控制窗帘关、开、停。
6.2.2:若为卷帘电机、开合帘电机则还可以调用百分比方法打开具体开合度。HDLCommand.shareInstance.curtainCtrl(delegate: self, appliancesInfo: self.info!, state: 50)
第二个参数为百分比开合度。注意:窗帘模块不具有此方法。
6.2.3:必须实现的协议:CurtainCtrlDelegate
6.2.4:窗帘控制返回方法:getCurtainCtrlInfo(curtainCtrlBackInfo: CurtainCtrlBackInfo)
6.3.1 空调控制方法如下所示:
//以下为具体控制空调的api。注意:当空调模式为抽湿时,不能调节风速。当空调模式为通风时,不能调节温度。
HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airSwich, state: AirCtrlParser.shareInstance.airOn) //空调开
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airSwich, state: AirCtrlParser.shareInstance.airOff)//空调关
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airSpeed, state: AirCtrlParser.shareInstance.airSpeedAuto)//风速自动
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airSpeed, state: AirCtrlParser.shareInstance.airSpeedHigh)//风速高风
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airSpeed, state: AirCtrlParser.shareInstance.airSpeedMid)//风速中风
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airSpeed, state: AirCtrlParser.shareInstance.airSpeedLow)//风速低风
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airMode, state: AirCtrlParser.shareInstance.airModeRefTem)//空调模式制冷
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airMode, state: AirCtrlParser.shareInstance.airModeHeatTem)//空调模式制热
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airMode, state: AirCtrlParser.shareInstance.airModeVen)//空调模式通风
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airMode, state: AirCtrlParser.shareInstance.airModeAuto)//空调模式自动
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.airMode, state: AirCtrlParser.shareInstance.airModeDehum)//空调模式抽湿
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.heatTem, state: 28)//制热温度 范围0-30
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.autoTem, state: 20)//自动温度 范围0-30
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.refTem, state: 16)//制冷温度 范围0-30
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.dehumTem, state: 20)//抽湿温度 范围0-30
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.upTem, state: 1)//上升温度 范围0-5
// HDLCommand.shareInstance.airCtrl(delegate: self, appliancesInfo: self.info!, ctrlType: AirCtrlParser.shareInstance.downTem, state: 1)//下降温度 范围0-5
6.3.2:空调必须实现的协议:ACCtrlDelegate
6.3.3:空调控制返回的方法:getAirCtrlInfo(airCtrlBackInfo: AirCtrlBackInfo)
6.4.1:场景控制调用getSceneCtrlInfo(sceneCtrlBackInfo: SceneCtrlBackInfo)
6.4.2:场景必须实现的协议:SceneCtrlDelegate
6.4.3:场景控制返回的方法:getSceneCtrlInfo(sceneCtrlBackInfo: SceneCtrlBackInfo)
场景控制没有状态