设备信息

更新时间:2024-04-23 07:37:30下载pdf

概述

通过查询设备信息,您可以获取到类似以下设备信息:

  • 设备 ID
  • 设备 IP 地址
  • 设备本地 IP 地址
  • 设备时区
  • MAC 地址
  • 设备信号强度
  • 设备集成电路卡识别码 (ICCID)
  • 设备连接方式
  • 设备信道(仅支持 Zigbee 设备)
  • 设备厂商名称(仅支持第三方 Matter 设备)
  • 设备的参考信号接收功率(RSRP)值(仅支持 LTE Cat.1 类设备)

使用指南

设备信息模型

ThingDeviceDetailInfo

属性 类型 说明
devId NSString 设备 ID。
iccid NSString 设备的 ICCID,物联网卡(SIM 卡)的唯一 ID ,仅 CAT.1 类设备有此数据。
netStrength NSString 设备信号强度。
lanIp NSString 设备本地 IP 地址。
ip NSString 设备 IP 地址。
mac NSString 设备 MAC 地址。
timezone NSString 设备时区。
channel NSString 信道号,仅 Zigbee 网关有此数据。
rsrp NSNumber 设备的 RSRP 值,仅 Cat.1 类设备有此数据,用于表示该设备网络的信号强度。
wifiSignal NSNumber 设备的 Wi-Fi 信号强度。
homekitCode NSString HOMEKIT 验证码。
connectAbility ThingDeviceInfoConnectAbility 设备连接方式。
  • ThingDeviceInfoConnectAbilityUnknown:未知
  • ThingDeviceInfoConnectAbilityPhone:只手机
  • ThingDeviceInfoConnectAbilityGateway:只网关
  • ThingDeviceInfoConnectAbilityPhoneAndGateway:手机和网关
vendorName NSString 设备厂商名称,仅三方 Matter 设备展示。

获取设备信息

接口说明

获取设备信息,立即返回现有的设备信息。一般用于展示首屏信息,避免因为网络请求速度较慢而展示空白。

- (nullable ThingDeviceDetailInfo *)deviceInfo;

返回数据说明

关于返回的数据格式,请参考 设备信息模型

异步获取设备信息

接口说明

异步获取设备信息,通过网络请求去拉取设备信息数据。

- (void)fetchDataSuccess:(void(^)(ThingDeviceDetailInfo *info, NSDictionary *hardwareInfo))success failure:(void(^)(NSError *error))failure;

返回数据说明

数据 类型 说明
success - 成功回调。
  • info:设备信息,请参考 设备信息模型
  • hardwareInfo:固件信息,预留。
failure - 失败回调。

监听方法及协议

接口说明

监听 Wi-Fi 信号的变化。

@protocol ThingDeviceInfoManagerListener <NSObject>
@optional
- (void)deviceInfoManager:(ThingDeviceInfoManager *)manager wifiSignalDidUpdate:(int)wifiSignal;
@end

在添加监听之前,需要通过 addListener: 添加监听。

- (void)addListener:(id<ThingDeviceInfoManagerListener>)listener;

如果想移除监听,则通过 removeListener: 移除监听。

- (void)removeListener:(id<ThingDeviceInfoManagerListener>)listener;

调用示例

import ThingDeviceDetailKit

class DeviceDetailKitInfoVC: UITableViewController {

    var deviceId: String
    var manager: ThingDeviceInfoManager
    var items: [CustomMenuModel] = []
    
    init(deviceId: String) {
        self.deviceId = deviceId
        self.manager = ThingDeviceInfoManager(deviceId: deviceId)
        super.init(nibName: nil, bundle: nil)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "DeviceDetailListViewControllerReuseIdentifier")
        self.manager.add(self)
        self.loadData()
        
    }
    
    func loadData() {
        SVProgressHUD.show()
        self.manager.fetchDataSuccess { [weak self] info, hardware in
            var list = [CustomMenuModel]()
            list.append(CustomMenuModel(title: "devId", detail: info.devId))
            list.append(CustomMenuModel(title: "iccid", detail: info.iccid ?? ""))
            list.append(CustomMenuModel(title: "netStrength", detail: info.netStrength ?? ""))
            list.append(CustomMenuModel(title: "lanIp", detail: info.lanIp ?? ""))
            list.append(CustomMenuModel(title: "ip", detail: info.ip ?? ""))
            list.append(CustomMenuModel(title: "mac", detail: info.mac ?? ""))
            list.append(CustomMenuModel(title: "timezone", detail: info.timezone ?? ""))
            list.append(CustomMenuModel(title: "channel", detail: info.channel ?? ""))
            list.append(CustomMenuModel(title: "rsrp", detail: info.rsrp != nil ? "\(info.rsrp!)" : ""))
            list.append(CustomMenuModel(title: "wifiSignal", detail: info.wifiSignal != nil ? "\(info.wifiSignal!)" : ""))
            list.append(CustomMenuModel(title: "homekitCode", detail: info.homekitCode ?? ""))
            list.append(CustomMenuModel(title: "connectAbility", detail: "\(info.connectAbility)"))
            list.append(CustomMenuModel(title: "vendorName", detail: info.vendorName ?? ""))
            self?.items = list
            self?.tableView.reloadData()
            SVProgressHUD.dismiss()
        } failure: { e in
            SVProgressHUD.dismiss()
        }

    }
    
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .value1, reuseIdentifier: "DeviceDetailListViewControllerReuseIdentifier")
        cell.textLabel?.text = self.items[indexPath.row].title
        cell.detailTextLabel?.text = self.items[indexPath.row].detail
        return cell
    }

}

extension DeviceDetailKitInfoVC: ThingDeviceInfoManagerListener {
    func deviceInfoManager(_ manager: ThingDeviceInfoManager, wifiSignalDidUpdate wifiSignal: Int32) {
        let item = self.items.first { item in
            return item.title == "wifiSignal"
        }
        item?.detail = "\(wifiSignal)"
        self.tableView.reloadData()
    }
}