Skip to content

This example is to demonstrate HDL's iOS SDK, which can realize search device, control device, acquire device status, receive device status change push, etc.

License

Notifications You must be signed in to change notification settings

TommyDaiJ/iOS-HDL-SDK-Demo

Repository files navigation

HDL iOS SDK通讯协议对接文档

这个例子是为了演示HDL的iOS SDK,可以实现搜索设备、控制设备、获取设备状态、接收设备状态改变推送等。目前支持继电器、调光灯、窗帘模块、开合帘、卷帘、空调面板、场景类型。

版本更新

v0.1.8

1:将设备当前状态放在搜索信息中,可从中提取。具体可查看Demo,ApplianceVC、CtrlVC使用。

v0.1.5

1:此版本为初步测试后的Beta版本,后续将发布稳定版1.0.0版本。方法名、参数等不会有大改动,可根据Demo对接相关接口。

How do I use it?

Step 1

下载SDK

1.目前仅支持Demo上的下载SDK,依赖到项目中使用。后续增加更多依赖方式。

2.SDK为Swift语言编写,相关公开接口方法已开放OC调用。

Step 2:SDK初始化

1:HDLManager.shareInstance.initSDK()

2: SDK初始化的端口为6000,若有其他程序占用6000端口,则SDK无法初始化。将导致程序一直无法正常工作。请务必保证只运行一个6000端口的程序

Step 3 调用相关API

3:搜索设备

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)

4:获取设备信息

在搜索中获取到信息为设备信息,在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 获取相关设备状态

5.1:获取设备状态方法:HDLCommand.shareInstance.getDeviceState(delegate: self, appliancesInfo: self.info!) 第一个参数为委托参数,第二个参数为固定参数。

5.2:必须实现的委托:DeviceStateDelegate 分别为灯光、窗帘、空调、获取设备状态、场景,委托。

5.3:返回的方法为:getDevicesState(devicesStateBackInfo: DevicesStateBackInfo)具体使用请查看Demo。

6 控制设备

所有SDK目前支持的控制设备类型,都具有超时操作反馈,若在5秒内设备无返回控制成功消息,则SDK会返回控制超时的信息。

6.1灯光控制

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 窗帘控制

窗帘种类有:窗帘模块,卷帘电机,开合帘电机。

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空调控制

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 场景模块控制

6.4.1:场景控制调用getSceneCtrlInfo(sceneCtrlBackInfo: SceneCtrlBackInfo)

6.4.2:场景必须实现的协议:SceneCtrlDelegate

6.4.3:场景控制返回的方法:getSceneCtrlInfo(sceneCtrlBackInfo: SceneCtrlBackInfo)场景控制没有状态

About

This example is to demonstrate HDL's iOS SDK, which can realize search device, control device, acquire device status, receive device status change push, etc.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages