简介
Universal Plug and Play(UPnP)是一种用于连接智能家居设备的网络协议,它可以让你的设备连接到家庭网络和互联网上,使智能家居设备的控制和通信更加方便和自由。
本文介绍了如何使用npm包upnp-client-minimal来实现UPnP设备的控制和管理。
前提条件
- Node.js:首先要安装 Node.js 来运行 npm 包。
- UPnP 设备:你需要有一个已经连接到你的网络的 UPnP 设备,如 Wi-Fi 网络摄像头、智能插座、网络音响等。
安装
你可以通过以下命令来安装upnp-client-minimal:
npm install upnp-client-minimal --save
使用
在本节中,我们将演示如何通过upnp-client-minimal访问 UPnP 设备。我们将使用 Node.js 编写一个简单的脚本来搜索 UPnP 设备并获取其所有服务。
注意:以下示例代码需要在 Node.js 环境中执行。
首先,我们需要在脚本中使用upnp-client-minimal作为模块:
const upnp = require('upnp-client-minimal')
接着,我们需要搜索 UPnP 设备。upnp-client-minimal 提供了一个搜索方法 upnpClient.search()
来发现 UPnP 设备。
upnpClient.search().on('found', (result) => { console.log('UPnP device found:', result) })
上面的代码演示了如何使用 upnpClient.search()
方法来查找 UPnP 设备。该方法返回一个可观察订阅结果的流对象。事件 'found' 每次发现设备时都会触发。当搜索完成时,事件 'finished' 会发出信号。
当我们找到设备并打印出它的描述信息之后,我们接着需要获取更多关于设备的信息。
-- -------------------- ---- ------- ----- ------ - ------------------- ------------------------- -------- -- - ------------------ ---- --------- ------------------- --------------------------------- -- - ------------------ ---- ---------- -------------------- -- --展开代码
使用 upnp.createClient() 创建了一个 upnpClient 实例,它可以用于查询设备信息和控制设备。
上面的代码演示了如何使用 device-added
事件来获取添加的 UPnP 设备和服务。
现在我们已经找到了 UPnP 设备和服务,我们接着需要通过服务控制设备。
client.list((devices) => { const device = devices[0] const service = device.services.find(s => s.serviceType === 'urn:upnp-org:service: WANIPConnection:1') service.callAction('GetExternalIPAddress', {}, (err, result) => { console.log('External IP:', result.NewExternalIPAddress) }) })
使用 upnpClient 实例的 list()
方法获取可用设备,并选择我们想要的设备并服务,这里我们使用了服务类型为 'urn:upnp-org:service:WANIPConnection:1'
的服务来获取外部 IP 地址。
最后我们使用 callAction()
方法调用服务操作,这里使用的是 'GetExternalIPAddress'
操作获取外部 IP 地址。
结论
在本文中,我们介绍了如何使用 upnp-client-minimal npm 包来访问和控制 UPnP 设备,并提供了可运行的代码示例。我希望这篇文章对你有所帮助,并且能够让你更容易地开始进行 UPnP 设备的控制和管理。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/upnp-client-minimal