设备服务

更新时间:2024-05-20 01:30:09下载pdf

IMQTTService

MQTT 服务协议定义了 MQTT 服务的基本操作。

方法列表

  • connect():连接 MQTT 服务
  • disconnect():断开 MQTT 服务连接
  • subscribe(_ topic: String, success: (()->Void)?, failure: ((Error)->Void)?):订阅指定主题
  • unsubscribe(_ topic: String, success: (()->Void)?, failure: ((Error)->Void)?):取消订阅指定主题

方法说明

connect()

连接 MQTT 服务,该方法无参数。

disconnect()

断开 MQTT 服务连接,该方法无参数。

订阅主题

参数说明

参数名 类型 是否必填 说明
topic String 要订阅的主题
success (() -> Void)? 订阅成功回调函数
failure ((Error) -> Void)? 订阅失败回调函数

代码示例

MQTTService.shared.subscribe("topic", success: {
    print("订阅成功")
}, failure: { error in
    print("订阅失败:\(error.localizedDescription)")
})

取消订阅主题

参数说明

参数名 类型 是否必填 说明
topic String 要取消订阅的主题
success (() -> Void)? 取消订阅成功回调函数
failure ((Error) -> Void)? 取消订阅失败回调函数

代码示例

MQTTService.shared.unsubscribe("topic", success: {
    print("取消订阅成功")
}, failure: { error in
    print("取消订阅失败:\(error.localizedDescription)")
})

设备初始化

参数说明

参数名 类型 是否必填 说明
deviceId NSString 要初始化设备的 ID

返回 Device 对象说明

参数名 类型 说明
deviceId String 设备 ID
uuid String 设备 UUID
name String 设备名称
icon String 设备图标
productId String 产品 ID
category String 设备品类
timezoneId String 设备时区 ID
isCloudOnline Bool 设备是否在云端在线
isLocalOnline Bool 设备是否在本地在线
isOnline Bool 设备是否在线
latitude String 设备所在纬度
longitude String 设备所在经度
dps [String : Any] 设备数据点
schemas [String : IndustryDeviceKit.DpSchema] 设备数据点模式
deviceType IndustryDeviceKit.DeviceType 设备类型
localKey String 设备本地密钥
pv Double 设备协议版本
wifiBackup IndustryDeviceKit.IDeviceBackupNet 设备备用网络
ota IndustryDeviceKit.IDeviceOTA 设备 OTA 升级
delegate IndustryDeviceKit.IDeviceDelegate 设备代理

代码示例

let device = DeviceService.shared.device(withDeviceId: "123456")

获取设备详情

根据设备 ID,加载设备对象。

参数说明

参数名 类型 是否必填 说明
deviceId String 要加载设备的 ID
success ((IndustryDeviceKit.IDevice) -> Void)? 成功加载设备后的回调函数
failure ((Error) -> Void)? 加载设备失败后的回调函数

代码示例

DeviceService.shared.load("123456", success: { device in
    // 成功加载设备后的回调函数
}, failure: { error in
    // 加载设备失败后的回调函数
})

修改设备名称

参数说明

参数名 类型 是否必填 说明
deviceId String 要重命名的设备 ID
newName String 设备的新名称
success (() -> Void)? 成功重命名设备后的回调函数
failure ((Error) -> Void)? 重命名设备失败后的回调函数

代码示例

DeviceService.shared.rename("123456", newName: "New Device Name", success: {
    // 成功重命名设备后的回调函数
}, failure: { error in
    // 重命名设备失败后的回调函数
})

删除设备

参数说明

参数名 类型 是否必填 说明
deviceId String 要删除的设备 ID
success (() -> Void)? 成功删除设备后的回调函数
failure ((Error) -> Void)? 删除设备失败后的回调函数

代码示例

DeviceService.shared.remove("123456", success: {
    // 成功删除设备后的回调函数
}, failure: { error in
    // 删除设备失败后的回调函数
})

恢复出厂设置

参数说明

参数名 类型 是否必填 说明
deviceId String 设备 ID
success (() -> Void)? 操作成功回调
failure ((Error) -> Void)? 操作失败回调

代码示例

// 调用 resetFactory 方法
DeviceService.shared.resetFactory("your_device_id", success: {
    print("设备已恢复出厂设置。")
}) { (error) in
    print("设备恢复出厂设置失败: \(error.localizedDescription)")
}

IDeviceDelegate

用于监听设备状态的协议。

可选方法

deviceInfoUpdated

设备信息更新回调。

@objc optional func deviceInfoUpdated(device: IndustryDeviceKit.IDevice)
参数名 类型 说明
device IndustryDeviceKit.IDevice 设备对象

deviceDpsUpdated

设备数据更新回调。

@objc optional func deviceDpsUpdated(device: IndustryDeviceKit.IDevice)
参数名 类型 说明
device IndustryDeviceKit.IDevice 设备对象

deviceRemoved

设备移除回调。

@objc optional func deviceRemoved(device: IndustryDeviceKit.IDevice)
参数名 类型 说明
device IndustryDeviceKit.IDevice 设备对象

device(_:signalStrength:)

设备信号强度回调。

@objc optional func device(_ device: IndustryDeviceKit.IDevice, signalStrength: String)
参数名 类型 说明
device IndustryDeviceKit.IDevice 设备对象
signalStrength String 设备信号强度

device(_:otaStatusChanged:)

设备 OTA 状态变更回调。

@objc optional func device(_ device: IndustryDeviceKit.IDevice, otaStatusChanged: String)
参数名 类型 说明
device IndustryDeviceKit.IDevice 设备对象
otaStatusChanged String 设备 OTA 状态变更

OTA 固件升级

方法

获取设备固件升级信息

// 调用 checkFirmwareUpgrade 方法
industryOTAService.checkFirmwareUpgrade(success: { (firmwareUpgradeModels) in
    if firmwareUpgradeModels.count > 0 {
        print("有可用的固件升级:")
        for firmwareUpgradeModel in firmwareUpgradeModels {
            print("- \(firmwareUpgradeModel.version)")
        }
    } else {
        print("没有可用的固件升级。")
    }
}) { (error) in
    print("检查固件升级失败: \(error.localizedDescription)")
}
参数名 类型 说明
success (([IndustryDeviceKit.IFirmwareUpgradeModel]) -> Void)? 成功回调,返回设备固件升级信息
failure ((Error) -> Void)? 失败回调

开始升级

industryOTAService.startFirmwareUpgrade(firmwares)
参数名 类型 说明
firmwares [IndustryDeviceKit.IFirmwareUpgradeModel] 设备固件升级信息

继续升级

industryOTAService.confirmWarningUpgradeTask(true)
参数名 类型 说明
isContinue Bool 是否继续升级

取消升级

// 定义成功和失败的回调函数
let onSuccess = {
    print("固件升级已取消")
}

let onFailure = { (error: Error) in
    print("固件升级取消失败:\(error.localizedDescription)")
}

// 调用 cancelFirmwareUpgrade 方法
industryOTAService.cancelFirmwareUpgrade(success: onSuccess, failure: onFailure)
参数名 类型 说明
success (() -> Void)? 成功回调
failure ((Error) -> Void)? 失败回调

获取设备固件升级状态

// 定义成功和失败的回调函数
let onSuccess = { (statusModel: IndustryDeviceKit.IFirmwareUpgradeStatusModel) in
    print("固件升级状态:\(statusModel.status)")
}

let onFailure = { (error: Error) in
    print("获取固件升级状态失败:\(error.localizedDescription)")
}

// 调用 getFirmwareUpgradingStatus 方法
industryOTAService.getFirmwareUpgradingStatus(success: onSuccess, failure: onFailure)
参数名 类型 说明
success ((IndustryDeviceKit.IFirmwareUpgradeStatusModel) -> Void)? 成功回调,返回设备固件升级状态
failure ((Error) -> Void)? 失败回调

获取设备本地固件版本信息

// 定义成功和失败的回调函数
let onSuccess = { (firmwareModels: [IndustryDeviceKit.IFirmwareUpgradeModel]) in
    for firmwareModel in firmwareModels {
        print("固件版本:\(firmwareModel.version),固件路径:\(firmwareModel.path)")
    }
}

let onFailure = { (error: Error) in
    print("获取设备本地固件信息失败:\(error.localizedDescription)")
}

// 调用 getDeviceLocalFirmwareInfo 方法
industryOTAService.getDeviceLocalFirmwareInfo(success: onSuccess, failure: onFailure)
参数名 类型 说明
success (([IndustryDeviceKit.IFirmwareUpgradeModel]) -> Void)? 成功回调,返回设备本地固件版本信息
failure ((Error) -> Void)? 失败回调

设备控制

参数说明

参数名 类型 是否必填 说明
dps IndustryDeviceKit.DpCommand 数据点命令
success (() -> Void)? 成功回调函数
failure ((Error) -> Void)? 失败回调函数

代码示例

// 定义数据点命令
let dps = IndustryDeviceKit.DpCommand()

// 定义成功和失败的回调函数
let onSuccess = {
    print("数据点命令发送成功")
}

let onFailure = { (error: Error) in
    print("数据点命令发送失败:\(error.localizedDescription)")
}

// 调用 publish 方法
device.publish(dps: dps, success: onSuccess, failure: onFailure)