broadlink-jssdk

1.7.2 • Public • Published

通用H5 JS SDK接口

编写目的

预期读者:

产品UI的开发者。(不包括平台Adapter)

背景说明

  • 软件系统名称:基于 HTML5 的 UI 系统 的 JS SDK 部分。

  • 描述 <接口> 接收来自平台 Adapter 的输出,转发给上层 UI,并将用户的操作转化为指令控制设备的行为。

组件分布图

架构图

运行环境

因为该JSSDK中包含了多个平台的SDK与其对应adapter(国美&京东),所以需要运行在webpack的环境中使用resolve.alias指定adapter的路径

安装

npm install --save broadlink-jssdk

JS SDK类说明

ready() ^^^^^^^^^^^^^^^^^^^^^^^

ready();

功能说明: 启动函数,当 JSDK 就绪之后,调用启动函数。

输人项: 无。

返回项: Promise,如jsdk初始化成功则resolved,否则rejected。Resolved会传入设备状态. e.g:

	.. code-block:: javascript

		var ready=JSDK.ready();
		ready.then(function(data){
		//data的数据格式如下:
		{
		'status':{
			'mark':1,
			'temp':25
			}
		//以下两个字段('online','name')不一定会存在,开发者需要根据平台的不同进行判断
		'online': '0/1/2/3',//设备状态:未知/本地/远程/离线(京东平台对应:在线/离线)
		'name':'refrigerator'
		}}).catch(function(error){// error为一个Error对象,数据格式如下:
		{
			message:‘网络超时’,//错误描述
			code:11,   //错误码
			msg:平台返回的错误信息
		}
		
		})

setDeviceStatus() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: javascript

	setDeviceStatus(cmd);

功能说明: 给设备发送命令

输人项:

  • cmd:命令对象。

    .. code-block:: javascript

      {
       'mark': 1,
       'temp': 25
      }
    

返回项:

一个 Promise 对象,调用者可以这样使用:

.. code-block:: javascript

	var prms = JSDK.setDeviceStatus(…);
	// 显示等待沙漏
	prms.then(function(data) {
	//受到平台的限制,不一定会传入data参数,如国美
	 //data是设备最新状态,数据结构为:
	 {
	
	 'status': {
		  'mark': 1,
		  'temp': 25
		 }
		 //以下两个字段('online','name')不一定会存在,开发者需要根据平台的不同进行判断
		 'online': '0/1/2/3',//设备状态:未知/本地/远程/离线(京东平台对应:在线/离线)
		 'name':'refrigerator'
	 }
	}).catch(function(error) {// error为一个Error对象,数据格式如下:
		{
			message:‘网络超时’,//错误描述
			code:11,   //错误码
			msg:平台返回的错误信息
		}
	});

getDeviceStatus() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: javascript
	
	/*三种形式*/
	getDeviceStatus() 	//查询所有状态
	
	getDeviceStatus(params);//通过参数与值查询状态,多用于虚拟设备,如{ page:1}
	
	getDeviceStatus(array) //查询指定状态,如[‘pwr’,’temp’]

功能说明: 尝试更新设备状态

输人项:

  • params:接口名称数组,可选。若不选,则获取所有接口状态。

  • array参数数组. 若不选,则获取所有接口状态。

返回项:

一个 Promise 对象,调用者可以这样使用:

.. code-block:: javascript

	var prms = JSDK.getDeviceStatus(…);
	// 显示等待沙漏
	prms.then(function(data) {
	//data是设备最新状态,数据结构为:
	{
	'status': {
		 'mark': 1,
		 'temp': 25
		},
	"online":"0/1/2/3",//设备状态:未知/本地/远程/离线(京东平台对应:在线/离线)
	'name':'refrigerator'
	}
	}).catch(function(error) {// error为一个Error对象,数据格式如下:
	{
		message:'网络超时',//错误描述
		code:11,//错误码
		msg:平台返回的错误信息
	}
	);

onStatusChanged() ^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: javascript

		onStatusChanged(callback) 	//返回变化的所有状态	

功能说明: 尝试更新设备状态 该方法在没有提供原生监听方法的平台上被调用后,会开启一个间隔为3秒的interval查询。如果callback为空,会停止该查询任务。

输入项:

callback: 状态变化后的回调函数,其参数为data,e.g:

.. code-block:: javascript

		//平台有监听方法
		
		JSDK.onStatusChanged(function(data){
		//状态变化时回调自定义updateUI函数并传递data数据作为参数,
		//其中data数据格式如下:
		{
		'status':{
			'mark':1,
			'temp':25
			},
		'online': '0/1/2/3',
		'name':'refrigerator'			
		}
		
		//下面为处理更新UI的逻辑,
		//......
		//......
		}
		});
		
		
		//平台无监听方法
		
		JSDK.onStatusChanged(function(data){
		//该方法在调用时开启interval查询,此处data返回的依然是变化的数据,
		//状态变化时回调自定义updateUI函数并传递data数据作为参数,
		//其中data数据格式如下:
		{
		'status':{
			'mark':1,
			'temp':25
			},
		'online': '0/1/2/3',	
		'name':'refrigerator'			
		}
		
		//下面为处理更新UI的逻辑,
		//......
		//......
		}
		});
		//开启后,若需关闭interval查询,直接调用JSDK.onStatusChanged();

返回项:无

getProfile() ^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: javascript

		getProfile();

功能说明: 获取设备profile

输人项:

返回项:profile相关信息的JSON对象

数据格式为:

.. code-block:: javascript

		{
		"ver": "1",
		"desc": {
			"pid": "00000000000000000000000028270000",//设备pid
			"vendor": "1023",
			"cat": "41",
			"model": "SP MINI2"//设备类型
			},
		"srvs": ["4.1.50"],
		"limits": {
			"tmrtsk": [8,1],
			"pertsk": [16,1]
			},
		"suids": [{
			"suid": "",
			"intfs": {//参数值类型描述
				"tmrtsk":[{
					"idx": 1,
					"in": [3],
					"act": 3
					}],
				"pwr":[{
					"idx": 1,
					"in": [1,0,1],
					"act": 3,
					"ifttt": 3
					}],
				"pertsk":[{
					"idx": 1,
					"in": [3],
					"act": 3
					}],
				"chargingprotect": [{
					"idx": 1,
					"in": [3],
					"act": 3
					}],
				"devtime": [{
					"idx": 1,
					"in": [3],
					"act": 1
					}],
				"pwrhistory": [{//历史数据
					"idx": 1,
					"in": [3],
					"act": 1
					}]
				}
			  }]
		}

currentPlatform() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: javascript

		currentPlatform();

功能说明: 获取当前运行在哪个平台

输人项: 无

返回项: 枚举值(jd、ali、dna、gome)

platformSDK() ^^^^^^^^^^^^^^^^^^^

.. code-block:: javascript

		platformSDK();

功能说明: 获取当前平台提供的sdk对象

输人项: 无

返回项:平台SDK对象,如果是空则方法已暴露在window全局对象中

**京东为: JDSMART对象**

**国美为:new GS.Device()实例化之后的对象**

**dna:cordova//《APP平台化框架_v1.7》中提供的接口**

Readme

Keywords

none

Package Sidebar

Install

npm i broadlink-jssdk

Weekly Downloads

2

Version

1.7.2

License

ISC

Unpacked Size

178 kB

Total Files

37

Last publish

Collaborators

  • broadlink-h5