需求背景
在前端开发中,我们经常需要和后端进行数据交互。在一些 IOT 项目中,需要通过设备来获取数据,这就需要在前端中调用一些设备服务。为了方便我们的开发,npm 提供了很多库或框架,其中 zetta-http-device 是一个帮助我们进行设备控制的 npm 包,具有很高的实用价值。
zetta-http-device 简介
zetta-http-device 是一个基于 Zetta 的连接设备的库。在我们需要控制和读取一些设备的时候,不需要在设备空间中安装客户端,这个库通过请求 HTTP API 而不是 MQTT 或 CoAP 的协议,使得我们的项目不受设备的物理位置的限制,实现了在任何地方控制设备。
安装 zetta-http-device
使用 npm 安装 zetta-http-device 包,可以执行以下命令:
npm install zetta-http-device
使用 zetta-http-device
创建一个设备描述文件(device descriptor)
设备描述文件包含了该设备的必要属性、功能、被动请求和终态等。下面展示了一个设备描述文件的基本结构:
-- -------------------- ---- ------- -------------- - ---------- - --- ------ - - ----- ------------- - --- --------- -------- --------------- ------------- ------------ - ------ ----------- -- ----------- - ------ ------------ -- --------------- ------------ ---------------- -------------- -- ------- ------------ - ---------- - ----- ----- -- -------- ------------ - ---------- - ------ ----- - -- ------ ------- --
该设备描述文件中定义了 My Device
这个设备,有两种状态 on
和 off
。当设备的状态为 off
时,可执行的命令为 turn-on
,当设备处于 on
状态时,可执行的命令为 turn-off
。对应的,执行 turn-on
命令时,设备的状态会变为 on
,执行 turn-off
命令时,设备的状态会变为 off
。
配置 zetta-http-device
在 Express 中,我们通过如下的方式来配置 zetta-http-device:
-- -------------------- ---- ------- --- --------- - ----------------------------- --- --- - --------------------- --------------------------- ------------------------------- --------- ---- ---- --------------- ------------- ---- ----- - ------- - ----------- - -------- ------- --- --------------- -------------------- - ------- - --- -------- --------- - --- -------- --------- - --------- ----
在以上的代码中,我们首先引入了 zetta-http-device 模块,在调用时,传入了一个对象,该对象中包含了设备所需要的基本信息。其中,id
代表了设备的 ID,name
代表了设备的名称,type
代表了设备的类型。在将接口挂载到 Express App 上的时候,需要将请求的 url 加上 req.baseUrl
。
请求设备API
在 zetta-http-device 中,我们可以通过 GET 请求,简单的执行一个命令:
GET /api/{device_id}/execute/{action}
在请求中,需要包含设备ID和待执行的动作。我们以前文中创建的设备为例,使用 "http://localhost:3000/api/My_Device/execute/turn-on"
这个 GET 请求可以使得设备为开启状态。
设备状态读取
在 zetta-http-device 中,我们可以通过 GET 请求,获取特定设备的状态,如下:
GET /api/{device_id}
在请求中,需要包含设备ID。我们可以通过向 "http://localhost:3000/api/My_Device"
发送 GET 请求,获取设备的状态。
示例代码
下面我们提供了一份详细的示例代码,可以帮助您更好地理解如何使用 zetta-http-device。示例代码需要先从一个设备状态开始,通过不同的请求,最终达到设备状态的目标。
-- -------------------- ---- ------- --- ------- - ------------------- -- ------ --- ----------- - ----- -- ------ -------------------------------------------------- ------------- ---- ----- - --- ------------ - ----------------------- -------------------- -------- -------------- -- -------------------- -- ------------- --- ------------ - -- ---- ------------------------------------------------------------------ ------------- ---- ----- - ------------------- -- --- ------ ------ --- - ---- - ------------------- -- ------- ------ - ---
在如上代码中,我们首先获取设备的状态,并打印出来,随后检查设备状态是否为 on
。如果设备状态不等于目标状态,则调用 execute
接口中的 turn-on
方法,将设备状态变为目标状态。如果设备状态等于目标状态,则不进行任何操作。
总结
zetta-http-device 包可以帮助我们在前端开发中进行设备控制和读取,通过 HTTP 协议请求 API 而不需要使用特定客户端,使得我们在任何地方均可对设备进行操作。在实际开发中,我们需要通过定义设备描述和配置 zetta-http-device 的方式使用该npm 包。通过以上的讲解和示例代码,相信大家可以更好地理解 zetta-http-device 的使用方法,实现更加高效的项目开发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedb538b5cbfe1ea06113ef