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数据中设置额外参数 |
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数据中设置额外参数 |
callMethodFromLocal(method, args, extraPayload) → {Promise.<json>}
本地调用设备方法 同 callMethod 函数在同一个 wifi 下的情况
Parameters:
Name | Type | Description |
---|---|---|
method |
string | 方法名 |
args |
json | 参数 |
extraPayload |
json | (API Level 10027新增)额外参数,根据设备需求设定。在payload数据中设置额外参数 |
getVersion() → {Promise.<any>}
获取设备固件版本信息
loadProperties(…propNames) → {Promise.<Map>}
加载属性数据 内部调用get_prop 方法,会依据当前环境选择从本地局域网或者云端获取, 并将返回数据写成{key:value}格式
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
propNames |
* |
<repeatable> |
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> |
localPing() → {Promise.<boolean>}
ping 操作 检查设备本地局域网通信是否可用
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-自动检查 |
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。 |
Example
let ret = Device.getDeviceWifi().setFirmwareUpdateErrDic({"3":'无法连接'})
startUpgradingFirmware() → {Promise.<DeviceVersion>}
升级设备固件.可以和Service.smarthome.getAvailableFirmwareForDids搭配使用,先检查是否有可用版本,如果有,展示信息给用户,让用户确认,或者直接升级。 /home/devupgrade
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 |
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();