Interface: IDeviceWifi

miot/Device.IDeviceWifi

设备网络访问控制类

Members

deviceID :string

获取设备ID,same as Device.deviceID

Example
import {Device} from 'miot'
...
let did = Device.getDeviceWifi().deviceID

Methods

callMethod(method, args, extraPayload) → {Promise.<json>}

调用设备方法 若与设备通信处于同一个 wifi 下会使用局域网传输数据,如果不在同一个 wifi 下由米家服务器转发请求

Parameters:
Name Type Description
method string

方法名

args json

参数

extraPayload json

额外参数,根据设备需求设定。在payload数据中设置额外参数

Returns:

{code:0,result:{},id:""}

Type
Promise.<json>
Example
Device.getDeviceWifi().callMethod('getProps', [prop1,prop2])
 .then(res => console.log('success:', res))
 .catch(err => console.error('failed:', err))
//对应payload参考:
//{'method': 'getProps', 'params':[prop1,prop2]}

Device.getDeviceWifi().callMethod('getProps', [prop1,prop2], {sid:Device.deviceID, 'key1':'xxxx'})
 .then(res => console.log('success:', res))
 .catch(err => console.error('failed:', err))
//对应payload参考:
//{'method': 'getProps', 'params':[prop1,prop2], 'sid':'xxxxx', 'key1': 'xxxx'}

callMethodFromCloud(method, args, extraPayload) → {Promise.<json>}

云端调用设备方法 同 callMethod 函数 不在同一个 wifi 下的情况

Parameters:
Name Type Description
method string

方法名

args json

参数

extraPayload json

(API Level 10027新增)额外参数,根据设备需求设定。在payload数据中设置额外参数

Returns:

请求成功返回 {code:0,result:{} }

Type
Promise.<json>

callMethodFromLocal(method, args, extraPayload) → {Promise.<json>}

本地调用设备方法 同 callMethod 函数在同一个 wifi 下的情况

Parameters:
Name Type Description
method string

方法名

args json

参数

extraPayload json

(API Level 10027新增)额外参数,根据设备需求设定。在payload数据中设置额外参数

Returns:

请求成功返回 {code:0,result:{} }

Type
Promise.<json>

getVersion() → {Promise.<any>}

获取设备固件版本信息

Returns:
Type
Promise.<any>

loadProperties(…propNames) → {Promise.<Map>}

加载属性数据 内部调用get_prop 方法,会依据当前环境选择从本地局域网或者云端获取, 并将返回数据写成{key:value}格式

Parameters:
Name Type Attributes Description
propNames * <repeatable>
Returns:

Map<name, value>

Type
Promise.<Map>
Example
Device.getDeviceWifi().loadProperties("a", "b").then(map=>{
 const a = map.get("a")
 const b = map.get("b")
})

loadPropertiesFromCloud(…propNames) → {Promise.<Map>}

从云端加载属性数据 内部调用get_prop 方法, 并将返回数据写成{key:value}格式

Parameters:
Name Type Attributes Description
propNames * <repeatable>
Returns:

Map<name, value>

Type
Promise.<Map>

localPing() → {Promise.<boolean>}

ping 操作 检查设备本地局域网通信是否可用

Returns:
Type
Promise.<boolean>
Example
Device.getDeviceWifi().localPing()
 .then(res => console.log('success:', res))
 .catch(err => console.log('failed:', err))

setFirmwareNotCheckUpdate(notCheck) → {Promise}

设置设备控制页不检查固件升级 Android暂未适配

Parameters:
Name Type Description
notCheck boolean

是否 不检查更新 true-不自动检查 false-自动检查

Returns:
Type
Promise
Example
Device.getDeviceWifi().setFirmwareNotCheckUpdate(true|false)
 .then(res => console.log('success:', res))
 .catch(err => console.log('failed:', err))

setFirmwareUpdateErrDic(message)

为设备固件升级失败添加自定义的errorCode与错误提示信息的索引 注意 分享过来的设备是无法进行固件升级的,所以此时此方法无效。 Android暂未适配

Parameters:
Name Type Description
message json

以errorCode为key,以错误提示信息为value的字典。key和value的数据类型都须是string。

Returns:

boolean 设置是否成功

Example
let ret = Device.getDeviceWifi().setFirmwareUpdateErrDic({"3":'无法连接'})

startUpgradingFirmware() → {Promise.<DeviceVersion>}

升级设备固件.可以和Service.smarthome.getAvailableFirmwareForDids搭配使用,先检查是否有可用版本,如果有,展示信息给用户,让用户确认,或者直接升级。 /home/devupgrade

Returns:
Type
Promise.<DeviceVersion>
Example
Device.getDeviceWifi().startUpgradingFirmware()
 .then(res => console.log('success:', res))
 .catch(err => console.log('failed:', err))

subscribeMessages(…propertyOrEventNames) → {Promise.<EventSubscription>}

订阅设备消息

Parameters:
Name Type Attributes Description
propertyOrEventNames string <repeatable>

在开发平台上声明的 prop 与 event 名,注意消息格式为:prop.xxxxx 或者 event.xxxxx ,表示订阅的是设备的属性变化,还是设备的事件响应.如果是miot-spec设备。则为prop.siid.piid,event.siid.eiid

Returns:
Type
Promise.<EventSubscription>
Example
import {Device, DeviceEvent} from 'miot'
...
//监听 属性变化和事件响应
const listener = DeviceEvent.deviceReceivedMessages.addListener(
(device, messages)=>{
 if(messages.has('prop.color')){
   console.log('获取到属性变化:',messages.get('prop.color'));
    ...
 } else if (messages.has('event.powerOn')){
   console.log('获取到事件响应:',messages.get('event.powerOn'));
   ...
 }
 ...
})
...
  //添加订阅:属性变更和事件响应
let msgSubscription = null;
Device.getDeviceWifi().subscribeMessages('prop.color','event.powerOn')
.then(subcription => {
   //call this when you need to unsubscribe the message
  msgSubscription = subcription;
})
.catch(() => console.log('subscribe failed'))
...

...
//unsubscribe the props
msgSubscription&&msgSubscription.remove();
listener&&listener.remove();